455.分发饼干
C++:
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int index=s.size()-1;
int res=0;
for(int i=g.size()-1;i>=0;i--){
if(index>=0&&s[index]>=g[i]){
index--;
res++;
}
}
return res;
}
};
C#:
public class Solution {
public int FindContentChildren(int[] g, int[] s) {
Array.Sort(g);
Array.Sort(s);
int index=s.Length-1;
int res=0;
for(int i=g.Length-1;i>=0;i--){
if(index>=0&&s[index]>=g[i]){
index--;
res++;
}
}
return res;
}
}
376. 摆动序列
C++:
class Solution {
public:
int wiggleMaxLength(vector<int>& nums) {
if(nums.size()<=1) return nums.size();
int res=1;
int prediff=0;//前一队差值
int curdiff=0;//当前一对差值
for(int i=0;i<nums.size()-1;i++){
curdiff=nums[i+1]-nums[i];
//出现峰值
if((prediff<=0&&curdiff>0)||(prediff>=0&&curdiff<0)){
res++;
prediff=curdiff;
}
}
return res;
}
};
C#:
public class Solution {
public int WiggleMaxLength(int[] nums) {
if(nums.Length<=1) return nums.Length;
int prediff=0;//前一队差值
int curdiff=0;//当前一对差值
int res=1;
for(int i=0;i<nums.Length-1;i++){
curdiff=nums[i+1]-nums[i];
if((prediff<=0&&curdiff>0)||(prediff>=0&&curdiff<0)){
res++;
prediff=curdiff;
}
}
return res;
}
}
53. 最大子序和
C++:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int result=INT32_MIN;
int count=0;// 取区间累计的最大值(相当于不断确定最大子序终止位置)
for(int i=0;i<nums.size();i++){
count+=nums[i];
if(count>result) result=count;
if(count<=0) count=0;
}
return result;
}
};
C++:dp
class Solution {
public:
int maxSubArray(vector<int>& nums) {
if(nums.size()==0) return 0;
vector<int> dp(nums.size(),0);//dp以i为为的最大连续子序和
dp[0]=nums[0];
int result=dp[0];
for(int i=1;i<nums.size();i++){
dp[i]=max(nums[i],dp[i-1]+nums[i]);
if(result<dp[i]) result=dp[i];
}
return result;
}
};
C#:
public class Solution {
public int MaxSubArray(int[] nums) {
int res=int.MinValue;
int count=0;
for(int i=0;i<nums.Length;i++){
count+=nums[i];
if(res<count) res=count;
if(count<=0) count=0;
}
return res;
}
}