贪心算法合集

95 分糖果问题

贪心算法合集
思路非常简单,和题解一模一样:
用数组存每个人对应的糖果数量,初始为1
  • 从左到右遍历,如果比左边的大,+1
  • 再从右到左遍历,如果比右边的大,+1
import java.util.*;

public class Solution {

    public int candy (int[] arr) {

        int res=0;
        int[] dp = new int[arr.length];
        Arrays.fill(dp,1);

        for(int i=1;i<arr.length;i++){

            if(arr[i]>arr[i-1]&&dp[i]dp[i-1]){
                dp[i]=dp[i-1]+1;
            }
        }

        for(int i=arr.length-2;i>=0;i--){
            if(arr[i]>arr[i+1]&&dp[i]dp[i+1]){
                dp[i]=dp[i+1]+1;
            }
        }
        for(int i=0;i<arr.length;i++){
            res+=dp[i];
        }
        return res;
    }
}

96 主持人调度

!!!!!!!!!!!!!!!这题debug了很久很久,最后自己的想法也没过(问题应该在我的做法只排序了开始时间,没有排序结束时间),还是看了题解
第一个点是数据范围的问题,用Integer重写的比较器不能用减法返回,否则用减法会超出数据范围,导致错误结果,可以用if判断大小再返回

贪心算法合集

重载+小顶堆

具体做法:

step 1:重载sort函数,将开始时间早的活动放在前面,相同情况下再考虑结束时间较早的。
step 2:使用小顶堆辅助,其中堆顶是还未结束的将要最快结束的活动的结束时间。
step 3:首先将int的最小数加入堆中,遍历每一个开始时间,若是堆顶的结束时间小于当前开始时间,可以将其弹出,说明少需要一个主持人。
step 4:除此之外,每次都需要将当前的结束时间需要加入堆中,代表需要一个主持人,最后遍历完成,堆中还有多少元素,就需要多少主持人。

import java.util.*;

public class Solution {

    public int minmumNumberOfHost (int n, int[][] startEnd) {

        Arrays.sort(startEnd,new Comparator<Object>(){
            public int compare(Object o1,Object o2){
                int[] one = (int[]) o1;
                int[] two = (int[]) o2;
                if(one[0]>two[0]) return 1;
                else if(one[0]==two[0]) return 0;
                else return -1;

            }
        });

        PriorityQueue<Integer> q = new PriorityQueue<Integer>();
        q.offer(Integer.MIN_VALUE);
        for(int i=0;i<n;i++){

            if(q.peek()startEnd[i][0]) q.poll();
            q.offer(startEnd[i][1]);
        }

        return q.size();
    }
}

优先队列插入的时间复杂度是O(logn),
时间复杂度:O(nlog2n)
​sort排序是O(nlog2n),一次遍历,循环中维护堆每次O(log2n)
空间复杂度:O(n),堆大小最大为n

Original: https://blog.csdn.net/Sophia2333333331/article/details/128695509
Author: Sophia2333333331
Title: 贪心算法合集

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/814195/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球