随笔分类 - Leetcode刷题记录
摘要:中序遍历得到一个队列。然后找left和right之间的和就行了。 (第一遍理解错了意思。看懂了就不难。) int l,h; int que[20007],last; void dfs(TreeNode* now){ if (now==NULL) return ; dfs(now->left); qu
阅读全文
摘要:int d[100007]; class Solution { public: int jump(vector<int>& nums) { memset(d,127,sizeof(d)); d[0]=0; for (int i=0;i<nums.size();i++) for (int j=1;i+
阅读全文
摘要:贪心,$O(n)$。 扫一遍数组。声明一个last存从1出发可以跳到的最远位置。如果可以跳到$i$,那么最远的位置起码可以到$i+nums[i]$。如果扫到最远都到不了的点,就return 0。 class Solution { public: bool canJump(vector<int>& n
阅读全文
摘要:贪心。一串数字中取最大值。 class Solution { public: int minPartitions(string n) { char result=0; for (int i=0;i<n.size();i++) result=n[i]>result?n[i]:result; retur
阅读全文
摘要:贪心。 class Solution { public: int maxProfit(vector<int>& prices) { int now=prices.front(); //现在手中买入价 int profit=0; prices.push_back(prices.back()); for
阅读全文
摘要:贪心+栈。 int cnt[5]; int l[10007],t=0; class Solution { public: bool isValid(string s) { cnt[1]=0,cnt[2]=0,cnt[3]=0; int lim=s.size(); for (int i=0;i<lim
阅读全文
摘要:暴力解法 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { for (int i=0;i<nums.size();i++) for (int j=i+1;j<nums.size();j++) if
阅读全文

浙公网安备 33010602011771号