03 2021 档案

摘要:题目链接 解题思路1:因为交易次数不受限,如果可以把所有的上坡全部收集到,一定是利益最大化的。 class Solution { public: int maxProfit(vector<int>& prices) { if (prices.empty() || prices.size() <= 1 阅读全文
posted @ 2021-03-31 17:33 洗盏更酌 阅读(47) 评论(0) 推荐(0)
摘要:题目链接 解题思路: 只需要遍历价格数组一遍,记录历史最低点,然后在每一天考虑这么一个问题:如果我是在历史最低点买进的,那么我今天卖出能赚多少钱?当考虑完所有天数之时,我们就得到了最好的答案。 C++: class Solution { public: int maxProfit(vector<in 阅读全文
posted @ 2021-03-31 16:48 洗盏更酌 阅读(56) 评论(0) 推荐(0)
摘要:题目链接 解题思路:使用首尾指针。比较数组两侧的值,以数值较小的一侧的高度作为当前位置(L或R)两侧的堤坝,从而计算出当前位置的雨水量(因为雨水量的瓶颈是较低一侧的高度),并且更新首尾指针路过数字的最大值。然后历史最大值较小的一侧的指针向数组中心移动,直到首尾指针相遇。 C++: int Water 阅读全文
posted @ 2021-03-30 17:40 洗盏更酌 阅读(73) 评论(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 洗盏更酌 阅读(97) 评论(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 洗盏更酌 阅读(73) 评论(0) 推荐(0)
摘要:题目链接 解题思路:滑动窗口 C++: class Solution { public: int lengthOfLongestSubstring(string s) { // 哈希集合,记录每个字符是否出现过 unordered_set<char> occ; int n = s.size(); / 阅读全文
posted @ 2021-03-30 12:02 洗盏更酌 阅读(98) 评论(0) 推荐(0)