代码随想录算法训练营第三十一天| ●理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

●理论基础

455.分发饼干

#伪代码
#先排序
sort(g.begin,g.end);
sort(s.begin.s.end);
int result=0
int index=s.size()-1;

for(i=g.size()-1;i>=0;i--){
  if(index>=0&&s[index0>=g[i]])
      result++;
      index--;
}
return result;
class Solution:
    def findContentChildren(self, g: List[int], s: List[int]) -> int:
        #贪心算法
        g.sort()
        s.sort()
        result=0
        j=len(s)
        #大饼干分大孩子
        for i in range(len(g)-1,-1,-1):
            if(j-1>=0 and s[j-1]>=g[i]):
                result+=1
                j-=1
        return result

376. 摆动序列 

#伪代码
num.size=1  return 1;
prediff=0
curdiff=0
result=1
for(i=0;i=0&&curdiff<0)||(prediff<=0&&curdiff>0)
      result++;
      prediff=curdiff
}
class Solution:
    def wiggleMaxLength(self, nums: List[int]) -> int:
        prediff=0
        result=1
        for i in range(len(nums)-1):
            curdiff=nums[i+1]-nums[i]
            if((prediff>=0 and curdiff<0) or (prediff<=0 and curdiff>0)):
                result+=1
                prediff=curdiff
        return result

53. 最大子序和

#伪代码
int result=INT_MIN;
int count=0;
for(i=0;iresult) result=count;
   if(count<0) count=0;
}
return result
class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        #贪心算法
        result=-inf
        count=0
        for i in range(len(nums)):
            count+=nums[i]
            if(count>result):
                result=count
            if(count<0):
                count=0
        return result

你可能感兴趣的:(算法,c++,开发语言)