leetcode
肥肥很菜
这个作者很懒,什么都没留下…
展开
-
计算数组中的逆序对
有一个由N个实数构成的数组,如果一对元素A[i]和A[j]是倒序的,即i<j但是A[i]>A[j]则称它们是一个倒置,设计一个计算该数组中所有倒置数量的算法。要求算法复杂度为O(nlogn)暴力求解思路:循环从数组中取出一个元素k,然后从k之后的元素中找到比k小的元素个数,最后统计所有的个数即为排列中逆序对的数目。时间复杂度: O(n^2)修改归并排序前提知识:归并排序...原创 2018-12-18 21:15:35 · 1685 阅读 · 0 评论 -
判断链表是否为回文结构
给定一个链表的头节点 head,请判断该链表是否为回文(正反结构相同)结构。如果链表长度为 N,时间复杂度达到 O(N),额外空间复杂度达到 O(1)。参考:《程序员代码面试指南》解法一放入栈,时间复杂度O(n),空间复杂度O(n)bool isPalindrome1(Node *head){ stack<Node> s; Node *cur = head;...原创 2019-01-02 17:05:24 · 167 阅读 · 0 评论 -
leetcode 数组
11. Container With Most Water在数组的头尾均设置一个指针,设置max变量记录当前的最大容量;计算完一次后移动一个指针,木桶原理是容积取决于行长度和最短高度的积,因此每次移动短的指针,因为如果移动长的指针那么容量可能变小。直到两个指针相遇。int maxArea(vector<int>&amp原创 2019-02-19 14:09:00 · 276 阅读 · 0 评论 -
leetcode 贪心算法 集合
44. Wildcard Matching模糊匹配问题思路很简单:从头开始匹配,遇到“*”就在字符串s中继续找能够匹配字符串p的下一个字符的字符,同时需要记住当前星号的位置,以便回溯。bool isMatch(string s, string p) { int sl=s.size(),pl=p.size(); int i=0,j=0; int lasts=-1,las...原创 2019-02-18 18:09:59 · 420 阅读 · 0 评论 -
leetcode 数组2
41. First Missing Positive难点:如何在O(n)的时间和常数额外空间内完成思路:只有常数额外空间,因此就需要在当前数组上操作。1)只需要在数组i处保存值为i+1的数字。(原因是:大小超过数组个数的数字不需要看了,因为一定不满足条件;保存i+1的原因是因为只看大于0的数。)2)然后再遍历一遍数组找不符合条件的数就可以了思路和“求数组中反复的某一个元素。要求时间性能...原创 2019-02-22 11:13:55 · 204 阅读 · 0 评论 -
leetcode Combination Sum I II 递归/非递归
39. Combination Sum方法一 回溯:思路参考bool backtrack(vector<vector<int>> &out,vector<int> tmp,vector<int&原创 2019-02-22 09:56:58 · 236 阅读 · 0 评论 -
leetcode Jump Game I II
Jump Game思路:若数组的第k个点能到达,则第k-1个点也一定能够到达,因此我们可以遍历数组,找到不能到达的点就返回falsebool canJump(vector<int>& nums) { if(nums.size()==0) return false; if(nums.size()==1) return tru原创 2019-01-23 14:48:28 · 144 阅读 · 0 评论 -
leetcode Best Time to Buy and Sell Stock I II III IV
Best Time to Buy and Sell Stock遍历一次数组,记录最小值,每次计算与最小值之间的差值为利润,最后选取利润最大的。int INF=0x7ffffffe;int maxProfit(vector<int>& prices) { int min=INF; int profit=0; int tmp; for (...原创 2019-01-23 14:18:37 · 240 阅读 · 0 评论 -
leetcode 动态规划题
5 Longest Palindromic Substring网址:https://leetcode.com/problems/longest-palindromic-substring/submissions/思路一:暴力破解O(n^3)思路二:动态规划时间复杂度:O(n^2), 空间复杂度:O( n ^ 2)动态转移方程:if i == j,dp[i, j] = 1if i =...原创 2018-12-24 15:50:15 · 207 阅读 · 0 评论 -
leetcode 78 Subset
思路一:回溯回溯,类似深度优先搜索,实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。void dfs(vector<int>& nums, int pos, vector<int>& path, vector<vector<int>>& resu...原创 2018-12-19 16:37:54 · 215 阅读 · 0 评论 -
刷题(未放入)
23. Merge k Sorted Lists解法一:每次轮流查找k个链表当前指针的最小值加入到新的链表中,最小值的链表指针向后移位;假设有k个链表,每个长度为n,那么每次查找最小值O(k),对每个节点都要查找一次,所以时间复杂度是O(nk^2)。空间复杂度是O(nk)。解法二:类似于归并排序,两两结合第一次合并进行了k/2次,每次2n个节点,第二次进行k/4次,每次4n个节点,以此...原创 2019-03-03 18:24:14 · 120 阅读 · 0 评论