算法与数据结构
文章平均质量分 78
算法与数据结构相关资料
crediks
这个作者很懒,什么都没留下…
展开
-
数组
一.双重索引283 remove zeros思考细节: `如何定义删除?从数组中去除?还是放在数组末尾?`剩余元素的排列是否要保证原有的相对顺序?`是否有空间复杂度的要求?O(1)思路:定义新的索引k,保存删除指定元素后的新的元素的位置。class Solution {public: void moveZeroes(vector& nums) {原创 2017-11-13 16:02:44 · 470 阅读 · 0 评论 -
链表
一、测试链表程序介绍如何创建,打印,删除链表程序。#include<iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};ListNode* createLinkedList(int a...原创 2018-03-12 15:44:00 · 562 阅读 · 0 评论 -
贪心算法
455. Assign CookiesAssume you are an awesome parent and want to give your children some cookies. But, you should give each child at most one cookie. Each child i has a greed factor gi, which is the mi...原创 2018-06-01 22:49:30 · 180 阅读 · 0 评论 -
动态规划之一:基本思想
一.基本思想一般来说,只要问题可以划分为规模更小的字问题,并且原问题的最优解中包含了子问题的最优解,则可以考虑用动态规划解决。动态规划的实质是分治思想和解决冗余。因此,动态规划是一种将问题实例分解为更小的/相似的子问题,并存储子问题的解,使得每个子问题只求解一次,最终获得原问题的答案,以解决最优化问题的算法策略。与贪心法的关系:1.与贪心法类似,都是将问题实例归纳为更小的、相似的子问题,并通过求解...原创 2018-06-03 23:09:17 · 25059 阅读 · 0 评论 -
动态规划之二:0/1背包问题
一、0/1背包问题定义有一个背包,它的容量为C(Capacity)。现在有n种不同的物品,编号为0...n-1,其中每一件物品的重量为w(i),价值为v(i)。问可以向这个背包中盛放哪些物品,使得在不超过背包容量的基础上,物品的总价值最大。F(n, C):考虑将n个物品放进容量为C的背包,使得价值最大。状态转移方程: F(i, c) = max ( F(i-1, c), v(i) + F(i-1,...原创 2018-06-09 17:39:27 · 507 阅读 · 1 评论 -
动态规划之三:最长上升子序列与最长公共子序列问题
一.最长上升子序列1.定义LIS(i):表示以第i个数字为结尾的最长上升子序列的长度LIS(i):表示在[0...i]的范围内,选择数字nums[i]可以获得的最长上升子序列的长度LIS(i) = max(1 + LIS(j)) (i > j)2.例题300. Longest Increasing SubsequenceGiven an unsorted array of integers,...原创 2018-06-14 08:18:24 · 393 阅读 · 0 评论 -
树
1.重建二叉树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Definition for binary tree * struct TreeNode { * int val;...原创 2018-06-26 22:38:36 · 201 阅读 · 0 评论 -
队列、栈
1、用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution{public: void push(int node) { stack1.push(node); } int pop() { if(stack2.empty()){ while(!stack1.em...原创 2018-07-07 16:43:19 · 186 阅读 · 0 评论 -
数组2
剑指offer数组题1.在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { ...原创 2018-07-09 17:48:58 · 455 阅读 · 1 评论 -
递归
1、求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)class Solution {public: int Sum_Solution(int n) { int ans = n; n && (ans += Sum_Solution(n-1)); ...原创 2018-07-10 22:25:22 · 162 阅读 · 0 评论 -
字符串
1.请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:类似数组的双索引。class Solution {public: void replaceSpace(char *str,int length) { int oldstringLen = 0; ...原创 2018-07-21 16:22:12 · 205 阅读 · 0 评论