随笔分类 -  leetcode

摘要:题目链接 解题思路:滑动窗口 C++: class Solution { public: unordered_map <char, int> ori, cnt; bool check() { for (const auto &p: ori) { if (cnt[p.first] < p.second 阅读全文
posted @ 2021-04-06 17:37 洗盏更酌 阅读(67) 评论(0) 推荐(0)
摘要:题目链接 解题思路: C++: class Solution { public: int compareVersion(string version1, string version2) { int n1 = version1.size(), n2 = version2.size(), end = 阅读全文
posted @ 2021-04-06 11:17 洗盏更酌 阅读(47) 评论(0) 推荐(0)
摘要:题目连接 解题思路: 从左往右层序遍历一个二叉树,在某一层的节点队列中,如果某个pop出的节点为空,并且队列中仍然有非空的元素,说明这个二叉树不是完全二叉树。 C++: /** * Definition for a binary tree node. * struct TreeNode { * in 阅读全文
posted @ 2021-04-05 00:50 洗盏更酌 阅读(59) 评论(0) 推荐(0)
摘要:题目链接 解题思路:双指针 C++: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} 阅读全文
posted @ 2021-04-03 20:38 洗盏更酌 阅读(38) 评论(0) 推荐(0)
摘要:题目链接 解题思路: 使用层序遍历,输出每一层最右边的节点即可。 C++: /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * T 阅读全文
posted @ 2021-04-02 15:46 洗盏更酌 阅读(83) 评论(0) 推荐(0)
摘要:题目链接 解题思路: 迭代C++: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * 阅读全文
posted @ 2021-04-02 10:51 洗盏更酌 阅读(57) 评论(0) 推荐(0)
摘要:题目链接 解题思路: 直接上代码: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * 阅读全文
posted @ 2021-04-02 00:48 洗盏更酌 阅读(105) 评论(0) 推荐(0)
摘要:102. 二叉树的层序遍历 给你一个二叉树,请你返回其按层序遍历得到的节点值。(即逐层地,从左到右访问所有节点)。 解答 103. 二叉树的锯齿形层序遍历 给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 解答 其他题:大数相加 阅读全文
posted @ 2021-04-01 16:37 洗盏更酌 阅读(238) 评论(0) 推荐(0)
摘要:题目链接 解题思路:动态规划 使用一系列变量存储买入的状态,再用一系列变量存储卖出的状态。buy[j]表示恰好进行第j笔交易,并且当前手上持有一张股票,这种情况下的最大利润;sell[j]表示恰好进行第j笔交易,并且当前手上没有股票,这种情况下的最大利润。 C++: #include <vector 阅读全文
posted @ 2021-04-01 12:27 洗盏更酌 阅读(81) 评论(0) 推荐(0)
摘要:题目链接 解题思路:动态规划 C++: class Solution { public: int maxProfit(vector<int>& prices) { int n = prices.size(); int buy1 = -prices[0], sell1 = 0; int buy2 = 阅读全文
posted @ 2021-04-01 10:45 洗盏更酌 阅读(48) 评论(0) 推荐(0)
摘要:题目链接 解题思路1:因为交易次数不受限,如果可以把所有的上坡全部收集到,一定是利益最大化的。 class Solution { public: int maxProfit(vector<int>& prices) { if (prices.empty() || prices.size() <= 1 阅读全文
posted @ 2021-03-31 17:33 洗盏更酌 阅读(48) 评论(0) 推荐(0)
摘要:题目链接 解题思路: 只需要遍历价格数组一遍,记录历史最低点,然后在每一天考虑这么一个问题:如果我是在历史最低点买进的,那么我今天卖出能赚多少钱?当考虑完所有天数之时,我们就得到了最好的答案。 C++: class Solution { public: int maxProfit(vector<in 阅读全文
posted @ 2021-03-31 16:48 洗盏更酌 阅读(58) 评论(0) 推荐(0)
摘要:题目链接 解题思路:使用首尾指针。比较数组两侧的值,以数值较小的一侧的高度作为当前位置(L或R)两侧的堤坝,从而计算出当前位置的雨水量(因为雨水量的瓶颈是较低一侧的高度),并且更新首尾指针路过数字的最大值。然后历史最大值较小的一侧的指针向数组中心移动,直到首尾指针相遇。 C++: int Water 阅读全文
posted @ 2021-03-30 17:40 洗盏更酌 阅读(74) 评论(0) 推荐(0)
摘要:题目链接 解题思路:一次计算以1,2,3,4,5,6,7,8,9,10,11,12......为前缀的,不超过上界n的数字个数,对数字总数进行累加,累加的和为k时,将此时前缀的下一个数字prefix+1返回,即为字典序的第K小数字。 C++: #include <iostream> using na 阅读全文
posted @ 2021-03-30 17:16 洗盏更酌 阅读(99) 评论(0) 推荐(0)
摘要:题目链接 解题思路:一维动态规划方法 C++: #include <iostream> using namespace std; string LongestPalindrome(string& s) { int n = s.length(); if (n <= 0) return s; int m 阅读全文
posted @ 2021-03-30 15:21 洗盏更酌 阅读(74) 评论(0) 推荐(0)
摘要:题目链接 解题思路:滑动窗口 C++: class Solution { public: int lengthOfLongestSubstring(string s) { // 哈希集合,记录每个字符是否出现过 unordered_set<char> occ; int n = s.size(); / 阅读全文
posted @ 2021-03-30 12:02 洗盏更酌 阅读(100) 评论(0) 推荐(0)
摘要:题目描述: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complex 阅读全文
posted @ 2019-03-05 21:35 洗盏更酌 阅读(129) 评论(0) 推荐(0)
摘要:题目描述: 解题思路:首先构造一个关联容器unordered_map<int, bool> used;用来记录每个元素是否使用。对数组中的每个元素,以该元素为中心,通过+1和-1往右和往左筛查关联容器是否包含改元素的相邻元素,直到不连续为止,记录下最长的长度。 参考代码: 运行结果: 阅读全文
posted @ 2019-02-25 15:47 洗盏更酌 阅读(139) 评论(0) 推荐(0)
摘要:题目描述: 解题思路:此题与26. Remove Duplicates from Sorted Array相似,解决方法仍然是设置左右两个指示器pl和pr。让pr从左往右移动,当*pr和*(pl-1)相同时,说明*(pl-1)和*pl相同(因为nums数组是一个有序数组),因此*pr已不能再加入修改 阅读全文
posted @ 2019-02-25 10:31 洗盏更酌 阅读(106) 评论(0) 推荐(0)
摘要:题目描述: 解题思路:这题与33. Search in Rotated Sorted Array之间的区别在于数组中可能会有重复的元素。解题思路与前者一样,关键仍然是找到单调递增区域。在前者的代码中,nums[first] <= nums[mid]这句就不适用了,应将”=“去掉。因为数组的旋转点可能 阅读全文
posted @ 2019-02-25 09:12 洗盏更酌 阅读(121) 评论(0) 推荐(0)