自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 LeetCode 185. 部门工资前三高的所有员工

https://leetcode-cn.com/problems/department-top-three-salaries/这个是在where里求排名来筛选。# Write your MySQL query statement belowselect d.Name as 'Department', e1.Name as 'Employee', e1.S...

2020-04-30 00:07:53 155

原创 leetcode 234. 回文链表

https://leetcode-cn.com/problems/palindrome-linked-list/没啥难度的一道题,关键是处理好长度奇数偶数的问题、以及快慢指针要准确切一半的初始化、结束判断。栈先把值放进去,比较方便,【1,2】这样的链表,如果是在循环里面放,就进不了循环没放进去栈里。快慢指针先初始为1和2,然后判断next是否为空来判断是否最后一个。长度奇数的值...

2020-04-29 12:23:47 108

原创 leetcode 581. 最短无序连续子数组

https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/找出后面有比这个数字小的最左数字,前面有比这个数字大的最右数字。要从两个方向跑,因为栈会弹出数字,后面可能会有比这个弹出数字小的数字,弹出了就找不到了。class Solution {public: int findUnsorte...

2020-04-29 00:08:04 104

原创 leetcode 39. 组合总和

https://leetcode-cn.com/problems/combination-sum/一个数字可以重复使用多次,用的时候dfs下标不用加1,这样可以用多次,加上大于target剪枝,也不会用太多。不用的时候下标要加1。class Solution {public: vector<int> run; vector<vector<in...

2020-04-28 22:17:37 116

原创 leetcode 48. 旋转图像

https://leetcode-cn.com/problems/rotate-image/submissions/由外层向内层遍历,每层都是一个正方形的四边。每条边需要更换len-1个。逆时针更换,最开始的存在temp里。class Solution {public: void rotate(vector<vector<int>>& mat...

2020-04-28 17:16:55 150

原创 leetcode 238. 除自身以外数组的乘积

https://leetcode-cn.com/problems/product-of-array-except-self/这种需要左边、右边连续区间的计算结果的,可以先从左到右和从右到左计算一遍,同时存起来。这样不用每个都计算左右区间的结果。class Solution {public: vector<int> productExceptSelf(vector...

2020-04-28 15:43:53 87

原创 leetcode 96. 不同的二叉搜索树

https://leetcode-cn.com/problems/unique-binary-search-trees/一棵树n个节点,根节点一个,剩下n-1个,左右子树分, 数量从0到n-1,然后乘起来,因为是步骤。class Solution {public: int numTrees(int n) { int dp[n+1]; mems...

2020-04-28 12:05:13 103

原创 LeetCode 148. 排序链表

https://leetcode-cn.com/problems/sort-list/链表排序用递归归并排序,复杂度nlognsplit链表和插入链表有一个dummy头结点方便很多。sortlist后记得重新赋值返回的头节点。/** * Definition for singly-linked list. * struct ListNode { * int...

2020-04-28 10:26:53 104

原创 leetcode 406. 根据身高重建队列

https://leetcode-cn.com/problems/queue-reconstruction-by-height/大的看不到前面小的,所以在大的插入小的,不影响。先按照身高从大到小、位置从前到后排序。然后插入到结果当中,当前结果的都是大于等于当前数字的,插入后不会影响已经插入的结果,同理,以后插入的也不会影响现在的结果,所以插入到现在的位置k。多次插入使用链表,使用a...

2020-04-27 22:32:46 178

原创 leetcode 142. 环形链表 II 287. 寻找重复数

https://leetcode-cn.com/problems/linked-list-cycle-ii/https://leetcode-cn.com/problems/find-the-duplicate-number/第一道题是环形链表第二道题,每一个数字可以看作是next下标,有一个重复数字,所以可以看作是链表有环。/** * Definition...

2020-04-27 20:45:49 144

原创 leetcode 215. 数组中的第K个最大元素

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/关键在于枢纽元的选择上,不能选择第一个,不然很慢。class Solution {public: void quick(int l,int r,int k,vector<int>& nums){ if(l&gt...

2020-04-27 11:57:34 123

原创 LeetCode 236. 二叉树的最近公共祖先

https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/递归实现最近公共祖先,函数返回该子树是否包含p,q。有两种情况,1.p、q在同一条路径上,所以需要找到了p或者q继续向下查找,找到了了的话最近公共祖先就是这个。2.p,q在两条支路上,那么最近公共祖先的左右子树各包含pq。/** * De...

2020-04-27 11:38:33 126

原创 leetcode 49. 字母异位词分组

https://leetcode-cn.com/problems/group-anagrams/实际上是一个字符计数的比较问题。先从字符数量,然后从字符按照顺序的大小,以及该字符的数量来比较。bool operator<( map<char,int> &a, map<char,int> &b){ if(a.size()!=b.si...

2020-04-27 09:53:45 125

原创 LeetCode 337. 打家劫舍 III

https://leetcode-cn.com/problems/house-robber-iii/枚举,最元素的位置可能隔两层,所以不是贪心。树形dp其实就是同时返回两个结果,免得对同一个节点调用两次,免得对一个节点重复调用,使得后面出现重复。/** * Definition for a binary tree node. * struct TreeNode { * ...

2020-04-26 22:17:27 148

原创 LeetCode 279. 完全平方数

https://leetcode-cn.com/problems/perfect-squares/这种最快凑数的,都是bfs。。。之前做过一道题,没反应过来。。。struct Node{ int val; int step;};class Solution {public: int numSquares(int n) { int ...

2020-04-26 21:31:13 90

原创 LeetCode 75. 颜色分类

https://leetcode-cn.com/problems/sort-colors/l表示左边的位置(不包括这个位置)都是0。r表示右边的位置(不包括这个位置)都是2。cur是从左到右遍历的位置(还未读取)遇到0的时候,cur要加1。cur和l相等的时候,如果cur不加1,就乱了。cur和l不相等的时候,就是cur小于l的时候,交换后cur位置的值是1,因为cur之前的都...

2020-04-26 20:55:19 98

原创 LeetCode 5394. 对角线遍历 II

https://leetcode-cn.com/problems/diagonal-traverse-ii/行号和列号之和相同的处于同一对角线,然后排序。struct Node{ int x; int y; int val;};bool operator<(const Node &a,const Node &b){ if(a...

2020-04-26 19:21:21 155

原创 LeetCode 5180. 带限制的子序列和

https://leetcode-cn.com/problems/constrained-subset-sum/s

2020-04-26 18:50:51 215

原创 leetcode 5393. 可获得的最大点数

https://leetcode-cn.com/problems/maximum-points-you-can-obtain-from-cards/代码是贪心。题解https://leetcode-cn.com/problems/maximum-points-you-can-obtain-from-cards/solution/tan-xin-qian-zhui-he-by-wuwenj...

2020-04-26 18:34:37 146

原创 leetcode 399. 除法求值

https://leetcode-cn.com/problems/evaluate-division/关键是转换成图的问题,a/b=2,那么a到b的边权重是2,b/c=4,b到c的权重是4,那么a到c就是路径的权重乘起来。中间的约去了。然后就是要把倒数也加入到图上。class Solution {public: map<string,in...

2020-04-26 10:25:04 138

原创 leetcode 309. 最佳买卖股票时机含冷冻期

https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/枚举型dp[i][j],前i个,j:0买入,1卖出,冷冻不用管,由于是枚举上一次操作的日期,买入的上一次卖出是前2天之前。class Solution {public: int maxProfit(vector&l...

2020-04-24 22:19:36 100

原创 leetcode 621. 任务调度器

https://leetcode-cn.com/problems/task-scheduler/每个任务要隔n个时间,使用贪心,尽量把数量多的任务提前执行,中间的数量少的任务可以提供缓冲时间。使用优先队列,由于每个任务需要隔n时间,直接遍历n+1个时间。执行完一次的但剩下的数量不是0的任务,放在一个缓冲地方,不要放入队列里,不然会扰乱队列。遍历完n+1个时间,再把临时存放的任务...

2020-04-23 22:53:22 160

原创 LeetCode 146. LRU缓存机制

https://leetcode-cn.com/problems/lru-cache/哈希表加上双向链表,可以O(1)操作,链表节点要记录key,用来在删除lru末尾节点时删除哈希表中的。链表带头节点,方便很多,不用判断是否为空,同时还维护了末尾节点(通过最开始头结点的prev和next指针都指向自己,插入的时候接续保持循环,这样head的prev的指针就是tail指针)。链表的删...

2020-04-23 21:16:06 147

原创 leetcode 560. 和为K的子数组

https://leetcode-cn.com/problems/subarray-sum-equals-k/前缀和,找出所有以前前缀和的值为当前前缀和-k的 。这样复杂度o(n^2)。优化一下,用哈希表记录之前每个前缀和值的个数,只要看当前前缀和-k的个数。class Solution {public: int subarraySum(vector<int&g...

2020-04-23 14:31:37 108

原创 leetcode 494. 目标和

https://leetcode-cn.com/problems/target-sum/枚举dfs。两个优化:记录当前的位置和计算数字。1.记录后缀和,利用当前的计算数字,可以计算出最终结果的最大和最小范围,如果目标值不在这个范围内,则可以剪枝。2.记录状态结果。class Solution {public: vector<int> nums...

2020-04-21 22:47:05 132

原创 leetcode 438. 找到字符串中所有字母异位词

https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/双指针方法。这道题是统计数量刚刚好一样。使用match表示主串某字符数量多于模式这个字符的数量的字符个数。只有临界点就是相等是时候才修改match,不然修改多次,因为可能会多次遇到这个字符,这个字符的在模式串中不止一个。然后是否valid,就是每个字符对应的数量...

2020-04-20 23:35:09 126

原创 LeetCode 240. 搜索二维矩阵 II

https://leetcode-cn.com/problems/search-a-2d-matrix-ii/submissions/leetcode复制一个新的大数组会超时,还是函数传大数组快。用游走,横竖交换走。然后关键是有相似子结构,就是说横竖走完后,还是左下角的矩形作为可能区域。class Solution {public: bool sear...

2020-04-19 23:47:55 74

原创 LeetCode 221. 最大正方形

https://leetcode-cn.com/problems/maximal-square/首先和最大矩形差不多,用单调栈,面积计算的时候正方形的值选高度和宽度的最小值。class Solution {public: int incr_stack(int height[],int m){ stack<int> s; s.pus...

2020-04-19 20:21:18 110

原创 LeetCode 152. 乘积最大子数组

https://leetcode-cn.com/problems/maximum-product-subarray/由于负数乘以负数会变成正数,所以维护连续最大正数乘积,和连续绝对值最大的负数乘积。class Solution {public: int maxProduct(vector<int>& nums) { int min_...

2020-04-19 17:50:31 97

原创 LeetCode 31. 下一个排列

https://leetcode-cn.com/problems/next-permutation/字典序,从头开始比较。最小的下一个字典序,尽量从低位开始换一个大的,前面高位的不变。同时这个位置后面的要从小到大排序,因为字典序从头开始比较,要找最小的下一个字典序,后面的从低到高排序。class Solution {public: void nextPermutati...

2020-04-19 14:36:59 82

原创 LeetCode 5391. 生成数组

https://leetcode-cn.com/problems/build-array-where-you-can-find-the-maximum-exactly-k-comparisons/这道题我先从枚举dfs,需要使用到已经枚举的个数,之前的最大数、以及花费。然后稍微改下,所以状态定义是dp[i][max_num][cost],表示已经枚举的个数,已经枚举的最大数、以及花费 ...

2020-04-19 13:46:18 170

原创 LeetCode 33. 搜索旋转排序数组

https://leetcode-cn.com/problems/search-in-rotated-sorted-array/solution/这道题是我两年多前百度面试的题,当时我还没刷过这道题,想出了二分的思路。人生的第一次面试,第一次面试就过了。首先找出旋转后的原数组第一个元素的下标,总共有5种情况:1.位于最左边,左边小于中间,中间小于右边2.位于左边中间。那么最左边...

2020-04-19 00:14:11 126

原创 LeetCode 300. 最长上升子序列

https://leetcode-cn.com/problems/longest-increasing-subsequence/nlogn复杂度的,为了让上升序列最长,每次上升应该增量最少,减少后面的门槛。使用tail[n]来表示n+1长度上升序列的最后一个元素。为了使上升增量最小,使用二分查找tail数组,找出可以插入的地方,lowwer_bound,大于。最后答案是最长的序列,tai...

2020-04-18 23:02:44 86

原创 LeetCode 322. 零钱兑换

https://leetcode-cn.com/problems/coin-change/这道题一开始使用枚举。超时了。看了题解,原来是广搜。这都想不到。广搜class Solution {public: vector<int> coins; int n; int target; unordered_set<int> ...

2020-04-18 20:32:53 95

原创 LeetCode 55. 跳跃游戏

https://leetcode-cn.com/problems/jump-game/一开始枚举dfs+判重,结果超时了。然后从可达性方面想,倒过来想,从最后一个点开始,向左遍历,找出能到达这个点的点,然后再找出能到达这个点的点,直到开始位置0。如果某个位置没有可达的上一个位置,说明这个位置及之后的不能达到,如果后面的位置能达到,那么这个位置也可以达到。class S...

2020-04-18 13:08:37 78

原创 LeetCode 15. 三数之和

https://leetcode-cn.com/problems/3sum/先排序,遍历开始位置,剩下两个,使用双指针,后面的一段,求两个数的和是某一个数,从两边向中间开始,最小和最大的,如果和大了,那么要减少,排序后从左向右增加,所以右边的减少。去重的话,如果有连续相同的数字,那么只需考虑第一个,因为后面的数字只是前面少了一段相同的数字,结果的子集是在一个当中。同时找到了相同的数...

2020-04-18 11:09:55 87

原创 LeetCode 11. 盛最多水的容器

https://leetcode-cn.com/problems/container-with-most-water/这道题一开始想到暴力,然后想双指针,想不出来,因为按照老套路两个指针都在左边向右移动。还能分别在两边向中间移动。面积=最小高度*距离,取决于最小高度和距离。开始分别在两边,距离最大。接下来要找出更优的,移动大的那根是没有用的,因为取决于最小距离,这里实际上就是一个剪...

2020-04-17 17:53:28 117

原创 LeetCode 5. 最长回文子串

https://leetcode-cn.com/problems/longest-palindromic-substring/一开始想枚举区间,然后想不到怎么利用上一个步的信息。回文串,左右对称,从中心扩散,就能减少计算量。class Solution {public: string longestPalindrome(string s) { ...

2020-04-16 20:09:45 70

原创 LeetCode 3. 无重复字符的最长子串

https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/这道题使用双指针,因为子连续区间满足某种条件。由于是符合条件的最长区间,所以i前进的时候不用记录结果。j前进的时候可能整个字符串都符合规则,所以每一步里都记录结果。class Solution {public: ...

2020-04-16 19:33:24 76

原创 LeetCode 312. 戳气球

https://leetcode-cn.com/problems/burst-balloons/虽然一开始想的也是动态规划,状态定义是[i],前i个,发现很难转移,当增加1个的时候,如果先删去新的,剩下的边界不一样了。如果最后删除新的还可以。如果中途删除新的,那么子状态就用不了了。后来想到了dp[i][j],前i个,固定右边的边界j,那么问题又来了,j在中途删掉的时候,虽然边界变成新的...

2020-04-16 15:59:56 90

基于QT的五子棋 人人对战 人机对战 程序与程序对战

基于QT的五子棋 人人对战 人机对战 程序与程序对战

2016-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除