leetcode上貪心算法 java

455. 分發(fā)餅干

假設(shè)你是一位很棒的家長,想要給你的孩子們一些小餅干。但是,每個孩子最多只能給一塊餅干。對每個孩子 i ,都有一個胃口值 gi ,這是能讓孩子們滿足胃口的餅干的最小尺寸;并且每塊餅干 j ,都有一個尺寸 sj 。如果 sj >= gi ,我們可以將這個餅干 j 分配給孩子 i ,這個孩子會得到滿足。你的目標(biāo)是盡可能滿足越多數(shù)量的孩子,并輸出這個最大數(shù)值。

注意:

你可以假設(shè)胃口值為正。
一個小朋友最多只能擁有一塊餅干。

示例 1:

輸入: [1,2,3], [1,1]

輸出: 1

解釋:
你有三個孩子和兩塊小餅干,3個孩子的胃口值分別是:1,2,3。
雖然你有兩塊小餅干,由于他們的尺寸都是1,你只能讓胃口值是1的孩子滿足。
所以你應(yīng)該輸出1。
</pre>

示例 2:

輸入: [1,2], [1,2,3]

輸出: 2

解釋:
你有兩個孩子和三塊小餅干,2個孩子的胃口值分別是1,2。
你擁有的餅干數(shù)量和尺寸都足以讓所有孩子滿足。
所以你應(yīng)該輸出2.</pre>

class Solution {
    public int findContentChildren(int[] g, int[] s) {
          Arrays.sort(g);//貪心算法中大多都和排序有關(guān),要先排序
          Arrays.sort(s);
          int si=0;
          int gi=0;
           int res=0;
           while(gi<g.length&&si<s.length)
           {if(s[si]>=g[gi]){
               res++;
               si++;
               gi++;
           }  else

               si++;
           }   
return res;

    }
}

貪心和動態(tài)規(guī)劃的關(guān)系

435. 無重疊區(qū)間

給定一個區(qū)間的集合,找到需要移除區(qū)間的最小數(shù)量,使剩余區(qū)間互不重疊。

注意:

  1. 可以認(rèn)為區(qū)間的終點總是大于它的起點。
  2. 區(qū)間 [1,2] 和 [2,3] 的邊界相互“接觸”,但沒有相互重疊。

示例 1:

輸入: [ [1,2], [2,3], [3,4], [1,3] ]

輸出: 1

解釋: 移除 [1,3] 后,剩下的區(qū)間沒有重疊。

示例 2:

輸入: [ [1,2], [1,2], [1,2] ]

輸出: 2

解釋: 你需要移除兩個 [1,2] 來使剩下的區(qū)間沒有重疊。
</pre>

示例 3:

輸入: [ [1,2], [2,3] ]

輸出: 0

解釋: 你不需要移除任何區(qū)間,因為它們已經(jīng)是無重疊的了。

public class Solution {
    class myComparator implements Comparator<Interval> {
        public int compare(Interval a, Interval b) {
            return a.start - b.start;
        }
    }
    public boolean isOverlapping(Interval i, Interval j) {
        return i.end > j.start;
    }
    public int eraseOverlapIntervals(Interval[] intervals) {
        if (intervals.length == 0) {
            return 0;
        }
        Arrays.sort(intervals, new myComparator());
        int dp[] = new int[intervals.length];
        dp[0] = 1;
        int ans = 1;
        for (int i = 1; i < dp.length; i++) {
            int max = 0;
            for (int j = i - 1; j >= 0; j--) {
                if (!isOverlapping(intervals[j], intervals[i])) {
                    max = Math.max(dp[j], max);
                }
            }
            dp[i] = max + 1;
            ans = Math.max(ans, dp[i]);

        }
        return intervals.length - ans;
    }
}

作者:LeetCode
鏈接:https://leetcode-cn.com/problems/non-overlapping-intervals/solution/wu-zhong-die-qu-jian-by-leetcode/
來源:力扣(LeetCode)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 貪心算法,又稱貪婪算法。 1、在對問題求解時,總是做出在當(dāng)前看來最好的選擇。即貪心算法不從整體最優(yōu)上加以考慮。 2...
    李威威閱讀 1,036評論 0 1
  • 算法思想 一、二分查找 1. 算法思想 算法詳解 算法細(xì)節(jié) 一定要看二分查找細(xì)節(jié).md 實現(xiàn)時需要注意以下細(xì)節(jié): ...
    因丶為閱讀 474評論 0 0
  • 知識點總結(jié) 二分查找法(二分查找法是弱點)**以及相關(guān)的操作:遞歸實現(xiàn)和非遞歸實現(xiàn),floor 和 ceiling...
    李威威閱讀 996評論 0 0
  • 2019 iOS面試題大全---全方面剖析面試2018 iOS面試題---算法相關(guān)1、七種常見的數(shù)組排序算法整理(...
    Theendisthebegi閱讀 7,462評論 1 17
  • 壓縮字符串 題目:給定一組字符,使用原地算法將其壓縮。壓縮后的長度必須始終小于或等于原數(shù)組長度。數(shù)組的每個元素應(yīng)該...
    唯有努力不欺人丶閱讀 382評論 0 2

友情鏈接更多精彩內(nèi)容