刷题07

刷题07

贪心的本质是选择每一阶段的局部最优,从而达到全局最优

贪心没有套路,说白了就是常识性推导加上举反例。

贪心算法一般分为如下四步:

  • 将问题分解为若干个子问题
  • 找出适合的贪心策略
  • 求解每一个子问题的最优解
  • 将局部最优解堆叠成全局最优解

分发饼干

class Solution {
    public int findContentChildren(int[] g, int[] s) {
        Arrays.sort(g);
        Arrays.sort(s);
        int start=0;
        for(int i=0;i<s.length;i++)
        {
            if(start<g.length&&s[i]>=g[start])
            {
                start++;
            }
        }
        return start;
    }
}

摆动序列

class Solution {
    public int wiggleMaxLength(int[] nums) {
       int pre=0;
       int cur=0;
       int count=1;
       for(int i=0;i<nums.length-1;i++)
       {
           cur=nums[i+1]-nums[i];
           if(cur>0&&pre<=0||cur<0&&pre>=0)
           {
               count++;
               pre=cur;
           }
       }
       return count;
    }
}

最大子序和

class Solution {
    public int maxSubArray(int[] nums) {
        int result=Integer.MIN_VALUE;
        int count=0;
        for(int i=0;i<nums.length;i++)
        {
            count+=nums[i];
            if(count>result) result=count;
            if(count<=0) count=0;
        }
        return result;
    }
}

买卖股票的最佳时机

class Solution {
    public int maxProfit(int[] prices) {
        int max=0;
        for(int i=0;i<prices.length-1;i++)
        {
            if(prices[i+1]-prices[i]>0)
            {
                max+=prices[i+1]-prices[i];
            }
        }
        return max;
    }
}
上一篇:Prism_07_WPF MVVM_复合程序视图布局


下一篇:cas146368-07-2|1-乙基-2,3,3-三甲基-3H-吲哚-5-磺酸内盐花菁染料合成路线-齐岳生物