巨水
巴巴多斯小魔
这个作者很懒,什么都没留下…
展开
-
leetcode 486. 预测赢家 dp
题目 class Solution { public: bool PredictTheWinner(vector<int>& a) { int n=a.size(),dp[n][n]; for(int i=0;i<n;++i) dp[i][i]=a[i]; for(int i=0;i<n-1;++i) dp[i][i+1]=max(a[i],a[i+1])-min(a[i],a[i+1]); for(i原创 2021-07-08 14:57:03 · 129 阅读 · 0 评论 -
leetcode 781. 森林中的兔子
题目 class Solution { public: int numRabbits(vector<int>& a) { int n=a.size(),ans=0; map<int,int>mp; for(int i=0;i<n;++i){ if(mp[a[i]]==a[i]+1) mp[a[i]]=0; if(!mp[a[i]]) ans+=a[i]+1;原创 2021-07-07 22:42:06 · 118 阅读 · 0 评论 -
leetcode 42. 接雨水 找到后面第一个大于他的找不到就找后面最大的 扫一遍就行。。
题目 class Solution { public: int trap(vector<int>& a) { if(a.size()<=1) return 0; int n=a.size(),mx[n],sum[n]; int val=a[n-1],dex=n-1; for(int i=0;i<n;++i) sum[i]=i?(sum[i-1]+a[i]):a[i]; for(int i原创 2021-04-02 00:50:36 · 85 阅读 · 0 评论 -
leetcode 765. 情侣牵手(模拟,从左往右便利,只要不成对就交换)
题目 模拟,只要发现右边不是自己的爱人,就让别人和爱人换一下位置。。 class Solution { public: int getlove(int x){return (x&1)?(x-1):(x+1);} int minSwapsCouples(vector<int>& a) { int n=a.size(),vis[n],ans=0; for(int i=0;i<n;++i) vis[a[i]]=i;原创 2021-02-14 00:59:19 · 215 阅读 · 0 评论 -
leetcode 665. 非递减数列 水题
题目 a[i]比a[i+1]大,可以选择让a[i]变小,让a[i+1]变大。 [3,4,2,3] 这个我们选择让4变小,4要<=2,4还要>=3,所以不可以,,a[i+1]>=a[i-1]才可以。 [5,7,1,6] 这个我们选择让1变大,1要>=7,1还要<=6,所以不可以,,a[i+2]>=a[i]才可以。 class Solution { public: bool checkPossibility(vector<int>& a) {原创 2021-02-07 01:37:27 · 68 阅读 · 0 评论 -
leetcode 376. 摆动序列 (求最长摆动子序列 直接取山峰端点 模拟超简单)
题目 模拟模的好,没烦恼,在此嘲笑一下我的憨憨猪。 class Solution { public: int wiggleMaxLength(vector<int>& nums) { int n=nums.size(); if(n<2) return n; int ans=1,flag=-1; for(int i=1;i<n;++i){ if(nums[i]==nums[i-1]原创 2020-12-15 22:15:01 · 98 阅读 · 0 评论 -
leetcode 31. 下一个排列(倒序找到第一个大于前一个数的数,交换后reverse 巨水)
题目 倒叙找到第一个>前一个的数,将前一个数 与这个数下标到n-1中最小的>前一个数的数 交换,将这个数到n=1 reverse即可。 class Solution { public: void nextPermutation(vector<int>& nums) { int n=nums.size(); int flag=0; for(int i=n-1;i>=1;--i){ if(nu原创 2020-12-14 22:17:21 · 149 阅读 · 0 评论 -
leetcode 1147. 段式回文(巨水 注意边界)
题目 class Solution { public: int longestDecomposition(string s) { int n=s.size(),ans=0; if(n==1) return 1; int l=0,j=n-1; while(l<=j){ int tmpl=l,tmpj=j; while(l<j&&s.substr(tmpl,l-tm原创 2020-11-30 20:09:05 · 236 阅读 · 0 评论 -
leetcode 238. 除自身以外数组的乘积(巨水 水的我都不好意思写题解)
题目 class Solution { public: //ans[i]:[1,i)的乘积 //nums[i]:[i,n)的乘积 vector<int> productExceptSelf(vector<int>& nums) { vector<int>ans;ans.push_back(1); int n=nums.size(); for(int i=1;i<n;++i) ans.pu原创 2020-11-20 12:49:46 · 73 阅读 · 0 评论