![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
wusutata
这个作者很懒,什么都没留下…
展开
-
leetcode Validate Binary Search Tree
AC代码一class Solution {public:bool isValidBST(TreeNode* root) { if(root==NULL) return true; if(root->left==NULL && root->right==NULL) return true; bool lflag = isValidBST(...原创 2019-02-27 22:28:29 · 87 阅读 · 0 评论 -
leetcode Trapping Rain Water
AC代码时间复杂度为O(n),空间复杂度为O(1)。只用了i,j,k三个变量作为指针。思路是:设置两个指针i,j,i指向左边的第一个高大于0的柱子,j指向右边第一个高大于0的柱子。然后,选择这两课柱子中较矮的那个(若两者相等,则选择i),从这个位置开始直到其后(或者其前)的第一个大于它的高度的柱子之间,统计这段区间内的面积。如这里第一次循环时选择i,则i向右移动到第二个黑色柱子处停下(此时...原创 2019-03-29 13:24:25 · 209 阅读 · 0 评论 -
392. Is Subsequence
这道题是给出两个字符串,求第一个字符串s是否是第二个字符串t的子序列。即字符串s中每个字符在字符串t都出现过,且相对顺序不变,但是可能不连续。AC代码如下:思路:依次检查s中每个字符是否都在字符串t中,如果在就继续在字符串t中向后找s中的下一个字符。如果已经遍历了字符串t中的每一个字符还没有找完字符串s,则说明s不是t的子序列。class Solution {public:...原创 2019-03-25 19:39:11 · 103 阅读 · 0 评论 -
LeetCode Remove Duplicates from Sorted Array
这一系列有几道题,这一题是其中最简单的那道。但是掌握了解题的思想就会发现都是一样的解法。设定两个指针i和j,其中i指向新数组的最后一个元素(也就是说i及其之前的元素都是不重复的元素),而j指向当前正在判断是否加入新数组中的元素(也就是说j前面的元素都已经加入确定了是加入原数组中,还是丢弃)。如果出现了nums[i]==nums[j],说明出现重复,就丢弃nums[j],直接指针后移,否则将...原创 2019-03-25 19:11:27 · 60 阅读 · 0 评论 -
LeetCode Daily Temperatures
思路:从后往前遍历数组。原数组用T表示。设置一个可变数组ans保存结果,用于保存每一天为了等到一个比这天更暖和的天(即找到一个比这个数更大的数)应该等待的天数。数组下标从0到n-1,n表示数组中总的元素个数。对于数组中的最后一个数,毫无疑问,ans[n-1]=0;对于剩下的每一个数则有几种情况。第一种情况是最简单的,就是对于数组中的第i个数而言,位于其后的第i+1个大于它即T[i]<...原创 2019-03-13 22:18:34 · 139 阅读 · 0 评论 -
LeetCode Remove Duplicates from Sorted List II
思路:这道题可以添加一个额外的结点作为头结点,头结点中不存储数据,只作为第一个结点。这里采用的是未使用额外头结点的解法。保持三个指针,p, q, cur,这三个指针分别指向三个相邻结点, p是q的前驱,cur是q的后继。初始化时p=NULL, q = head, cur =head->nex。若q->val!=cur->val,即q指向的结点的val和cur指向的节点的...原创 2019-03-02 21:36:15 · 131 阅读 · 0 评论 -
leetcode Partition List
思路:思路是受了快排中将数组通过一个主元分成两部分的思路启发。因此,保存两个指针p1和p2,p1指向当前最后一个值小于x的结点,p2指向当前正在检查的结点,处于head指针和p1(包括p1指针指向的结点)之内的所有结点都满足值小于x,处于p1的后继结点(p1->next指向的结点)和p2的前驱结点(该结点的next指向p2)之间的所有结点的值大于等于x,如果p2的值大于等于x,则让p2指向其...原创 2019-03-02 15:26:44 · 123 阅读 · 0 评论 -
123. Best Time to Buy and Sell Stock III
AC代码class Solution {public: int maxProfit(vector<int>& prices) { if(prices.size()<=1) return 0; int i,k; vector<int> arr,ans; for...原创 2019-02-25 20:36:23 · 180 阅读 · 0 评论 -
Leetcode Reverse Linked List
思路:逆转一个链表,分别考虑链表为空,链表有1个结点,链表有>=2个结点。若为前两种情况,可直接返回。若链表中有>=2结点。则一次从头结点开始逆转每个结点的next指针。从头结点开始,需要逆转头结点指向第2个结点的next指针,必须保存是三个指针,这三个指针分别指向头结点,第2个结点,第三个结点(如果第三个结点存在的话)。这样需要逆转头结点指向第2个结点的指针,只需要修改指向第2个...原创 2019-03-01 11:11:00 · 72 阅读 · 0 评论 -
leetcode Letter Case Permutation
最朴素的回溯:class Solution {public: vector<string> letterCasePermutation(string S) { string tmp = ""; vector<string> ans; LetterCase(0, S, ans, tmp); re...原创 2019-04-08 21:38:35 · 156 阅读 · 0 评论