![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
永远的烟火
我就是我,为绚丽绽放而厚积薄发的人间烟火
展开
-
【Leetcode-209】长度最小的子数组
方法一、遍历元素,逐项寻找子数组方法二、双指针法i,j开始都指向0;j开始右移,若s(i,j)的和大于等于target,则减去arr[i],i右移,直至s(i,j)小于target;j继续右移,同样操作,直至最后;int minSubArrayLen(int s, int *nums, int numsSize) { if (numsSize == 0) { return 0; } int ans = INT_MAX; int start = 0原创 2020-06-28 20:13:25 · 134 阅读 · 0 评论 -
【Leetcode】连续子数组的最大和
思路:(1) dp[i]:以第i项结束的最大和,答案是dp[i]中的最大值,所以要求两次最值!!!(2) dp[i] = max(dp[i-1] + nums[i], nums[i]);dp[i-1] < 0时,dp[i] = nums[i];dp[i-1] > 0时,dp[i] = dp[i-1] + nums[i];所以如上(3) dp[0] = nums[0];代码: public int maxSubArray(int[] nums) { int[]原创 2020-06-01 13:59:36 · 446 阅读 · 0 评论 -
【LeetCode】动态规划合集
leet.198 打家劫舍思路:(1)定义:dp[i]表示前i家的最大效益;(2)关系式第i家的收益,分两种情况<1> 偷第i家,由于不能偷相邻两家:则dp[i] = nums[i] + dp[i-2];<2> 不偷第i家,则dp[i] = dp[i-1];所以,收益dp[i] = max{nums[i] + dp[i-2], dp[i-1]}(3)初值dp[0] = nums[0]; // 只有一家的收益dp[1] = max{nums[0]原创 2020-05-29 16:12:59 · 148 阅读 · 0 评论 -
【Leetcode】字符串解码
思路:(1)借助Stack,遇到’]'出栈,往前扫描,记录子串:“数字[字母]”;(2)子串翻倍处理,处理完毕再入栈,栈中从低到高的顺序,就是答案的顺序;(3)借助StringBuilder,显示处理完毕的字符串;代码: public String decodeString(String s) { if(s.length() == 0) return s; char[] ch = s.toCharArray(); S原创 2020-05-29 14:44:17 · 409 阅读 · 0 评论 -
【Leetcode】刷题总结 plus
1、链表双指针:首尾指针、快慢指针2、数组3、字符串子串问题:前缀和4、队列5、栈6、哈希表7、二叉树8、排序9、搜索10、动态规划原创 2020-05-29 14:49:47 · 198 阅读 · 0 评论 -
【Leetcode】青蛙跳台阶问题
(1)思路:DP问题:(1)确定数组含义:dp[i]表示跳到第i阶的方法数;(2)找出数组元素间的关系:跳到第i阶,可以一步跳上来,也可以两步跳上来,所以dp[i]=dp[i-1]+dp[i-2];(3)找出初始值:dp[0]=1,dp[1]=1;代码:class Solution { public int numWays(int n) { if(0 == n) return 1; int[] dp = new原创 2020-05-21 20:15:35 · 492 阅读 · 0 评论 -
【Leetcode】两两交换链表中的节点
思路:p、q操作链表;必须保证每次操作有两个节点;考虑形成新的链表,不单单只是交换两个元素;代码:struct ListNode* swapPairs(struct ListNode* head){ if(head == NULL || head->next == NULL) return head; struct ListNode* p = head; struct ListNode* q = head->next; struct ListNode* newHead原创 2020-05-20 10:56:31 · 129 阅读 · 0 评论 -
【Leetcode】验证回文字符串 Ⅱ
思路:创建首尾指针i,j,向中间移动比较,出现第一次不同字符时:舍弃i指向的字符,比较(i+1,j);舍弃j指向的字符,比较(i,j-1);以上两种情况,只要其中一种满足要求即可。代码1:bool validPalindrome(char * s){ bool flag1 = true, flag2 = true; int low = 0, high = strlen(s) - 1; while(low<high){ if(s[low] != s[high]){ f原创 2020-05-20 09:35:37 · 105 阅读 · 0 评论 -
【LeetCode】和为K的子数组
方法1:前缀和+哈希表pre[j - 1] = pre[i] - k如若目标子数组的下标为(j ~ i),则前i项和与K的差必然为前(j-1)项和,因此用前n项和为key,前n项和出现的次数为value,运用Hash算法,快速得出答案。复杂度分析:时间复杂度:O(n)空间复杂度:O(n)代码: public int subarraySum(int[] nums, int k) { HashMap<Integer,Integer> map = new H原创 2020-05-18 19:20:49 · 169 阅读 · 0 评论 -
【Leetcode】层次遍历二叉树
思路:BFS1、根节点加入队列;2、遍历队列中的节点,将节点的子节点加入队列;(如不需要逐行,则结束)3、如何实现逐行?需要记录每行队列的长度;代码: public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> reslist = new ArrayList<>(); Queue<TreeNode> queue = new Li原创 2020-05-13 10:48:05 · 139 阅读 · 0 评论 -
Asteroid Collision
Asteroid Collision原创 2017-11-30 19:55:03 · 275 阅读 · 0 评论 -
Sentence Similarity
Sentence Similarity原创 2017-11-30 11:04:42 · 241 阅读 · 0 评论 -
【Leetcode-5】最长回文子串
最长回文子串原创 2017-11-05 10:31:13 · 137 阅读 · 0 评论 -
Merge Two Binary Trees
Merge Two Binary Trees原创 2017-11-18 20:10:30 · 153 阅读 · 0 评论 -
最长无重复子串
最长无重复子串原创 2017-11-04 17:17:23 · 178 阅读 · 0 评论 -
Convert BST to Greater Tree
Convert BST to Greater Tree原创 2017-11-12 19:50:33 · 118 阅读 · 0 评论 -
最佳股票交易时机
最佳股票交易时机原创 2017-11-08 15:04:53 · 306 阅读 · 0 评论