
算法
码农凯凯
看我学渣奋起直追之路
展开
-
LeetCode error
1.runtime error 一定是内存溢出,也就是数组,vector之类的越界了,80%以上都是这个问题。 2.time limited 超时。原创 2018-01-25 13:20:03 · 889 阅读 · 0 评论 -
Leetcode中股票问题合集
Best Time to Buy and Sell Stock II 思路:这道题用到了贪心算法。从第二天开始,只要比前一天大,那说明就挣钱,那么就前一天买今天卖,挣差价。int maxProfit(vector<int>& prices) { int res = 0; int n = prices.si原创 2018-09-06 16:20:42 · 2715 阅读 · 0 评论 -
LeetCode中动态规划题解合集(根据难易程度))
121.Best Time to Buy and Sell Stock 思路:遍历数组,找到当前位置之前最小的数,然后选择当前买入差值和之前最大值之间的最大值。 int maxProfit(vector<int&原创 2018-08-09 23:22:05 · 17769 阅读 · 2 评论 -
leetcode哈希表hash table集合
1.two sumvector<int> twoSum(vector<int>&原创 2018-07-14 13:36:48 · 509 阅读 · 0 评论 -
LeetCode40-49题解
46.Permutations 思路:很明显,要用DFS。vector<vector<int>> permute(vector<int>& nums) { vector<int&原创 2018-07-06 01:16:47 · 248 阅读 · 0 评论 -
LeetCode41-49
43.Multiply Strings 思路:就是按照我们手算乘法的步骤来解决的,可以看下图,要注意一点下标的标记。 string multiply(string num1, string num2) { int n1 = num1.size(); int n2 = num2.size(); vector<int> temp(n1...原创 2018-07-05 23:10:24 · 265 阅读 · 0 评论 -
leetcode中回溯题集合
77.Combinations 思路:终止和收敛条件是判断out中的个数达到k。图解请详见博客题解。 vector&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;vector&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;a原创 2018-07-09 13:35:24 · 699 阅读 · 0 评论 -
leetcode 30-39
32.Longest Valid Parentheses 思路1:最长有效字符串。用stack存储栈顶的Index,start记录有效字符串开始位置。如果是’(‘,入栈,如果是’)’,判断stack是否为空,如果为空,说明’)’是第一个字符,有效字符串一定不是从这个字符开始的,则start+1;不为空的话,则stack.pop(),如果stack为空,则取res和i - start + 1 的最...原创 2018-06-12 10:44:26 · 497 阅读 · 0 评论 -
leetcode21-30
21 Merge Two Sorted Lists 思路:新建一个链表,比较l1和l2中的值,哪个小就把它加到新的链表中去,最后总会有一个链表先到尾部,那么直接把剩下的链表接到新链表尾部就可以啦,注意链表为空问题判断,必须先初始化。 ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode temp(0)...原创 2018-04-24 11:35:09 · 148 阅读 · 0 评论 -
LeetCode 1-10代码参考
1.Two Sum 思路:见solution vector<int> twoSum(vector<int>& nums, int target) { for (int i = 0;i < nums.size(); i++) { for (int j = i + 1; j < nums.size(); j+...原创 2018-03-05 10:30:09 · 425 阅读 · 0 评论 -
leetcode11-20
11.Container With Most Water 思路1:暴力搜索,每两个line计算一次area,选择最大的那个。但是超时。 int maxArea(vector<int>& height) { int size = height.size(); if (size < 2) return 0; int w...原创 2018-03-29 21:02:45 · 280 阅读 · 0 评论 -
DP之钢管切割,最长回文字符串,最长公共子串
在做LeetCode第3题的时候,用到了DP,但是自己对DP还是不了解,所以翻开算法导论,开始看动态规划喽,学好动态规划,走遍天下都不怕。钢管切割 对于一根长n米的钢管,每个长度的价格不一样,对于长i米的钢管,价格为p[i],价格表如下所示: 现在问题是,给你一根长为n的钢管,你怎么切割,使得最后总价格最高。 比如:长度为4米的钢管,我们有8种方案,也就是对应着中间3段切不切的排列...原创 2018-03-08 13:16:24 · 377 阅读 · 0 评论 -
快排+堆排序
3.6 快排 其实就是记住算法导论中的步骤,最坏情况就是排好序的,不管是正序还是倒序,情况都是最坏O(n^2).int partition(int a[],int p,int r) { int x = a[r]; int i = p - 1; for (int j = p; j < r ; j++) { if (a[j] < x) { ...原创 2018-03-07 00:05:40 · 278 阅读 · 0 评论 -
1D1A:冒泡排序(3)
《算法导论》中的习题中,讲到了冒泡排序:是一种流行但是低效的排序方式,他的作用是反复交换相邻的未按次序排列的元素。 伪代码(Python):def bubbleSort(lists): length = len(lists) for i in range(length-1): for j in range(length-1-i):原创 2018-01-27 13:55:13 · 331 阅读 · 0 评论 -
LeetCode Easy排序前50道题
771 Jewels and Stones int numJewelsInStones(string J, string S) { int count = 0; for (char c : J) { for (char s : S) { if (c == s) count++; ...原创 2018-01-08 19:59:12 · 899 阅读 · 0 评论 -
1D1A:1 插入排序
算法导论第一个算法就是插入排序,思想简单,如果是从小到大排序,就是从第二个数开始,和前边的数比较,直到大于等于前边那一个数,然后放在那个位置。 而且,先用Python写,就相当于伪代码,特别好,既有思路,还把Python练习一下,然后再用C++。 Python代码:def insertSort(A): for i in range(1,len(A)): key = A[i原创 2018-01-26 16:00:09 · 266 阅读 · 0 评论 -
LeetCode贪心题目合集
860.Lemonade Change思路:每次判断收到的钱是5,10,还是20;用five和ten记录拥有的5元和10元个数,如果是5,那么直接five++,如果是10,那么ten++,five–(判断有没有5),如果20,判断有没有10,两种情况。 bool lemonadeChange(vector&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;int&amp;amp;amp;amp;amp;amp;amp;amp;amp;a原创 2018-10-24 19:57:46 · 2342 阅读 · 0 评论