• Leetcode练习之贪心思想


    保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。

    1. 分配饼干

    455. Assign Cookies (Easy)

    class Solution {
        public int findContentChildren(int[] g, int[] s) {
            if(g.length == 0 || s.length ==0){
                return 0;
            }
            Arrays.sort(g);
            Arrays.sort(s);
            int num = 0;
            int i=0;
            int j=0;
            while(i<g.length && j < s.length){
                if(g[i] <= s[j]){
                    num++;
                    i++;
                    j++;
                }else{
                    j++;
                }
            }
            return num;
        }
    }

    2. 不重叠的区间个数

    435. Non-overlapping Intervals (Medium)

    class Solution {
        public int eraseOverlapIntervals(int[][] intervals) {
            if(intervals.length == 0){
                return 0;
            }
            Arrays.sort(intervals,Comparator.comparingInt(o -> o[1]));
            int cnt = 1;
            int end = intervals[0][1];
            for(int i=1; i < intervals.length; i++){
                if(intervals[i][0] < end){
                    continue;
                }
                end = intervals[i][1];
                cnt++;
            }
            return intervals.length - cnt;
        }
    }

    3. 投飞镖刺破气球

    452. Minimum Number of Arrows to Burst Balloons (Medium)

    题目描述:气球在一个水平数轴上摆放,可以重叠,飞镖垂直投向坐标轴,使得路径上的气球都被刺破。求解最小的投飞镖次数使所有气球都被刺破。

    也是计算不重叠的区间个数,不过和 Non-overlapping Intervals 的区别在于,[1, 2] 和 [2, 3] 在本题中算是重叠区间。

    class Solution {
        public int findMinArrowShots(int[][] points) {
        if (points.length == 0) {
            return 0;
        }
        Arrays.sort(points, Comparator.comparingInt(o -> o[1]));
        int cnt = 1, end = points[0][1];
        for (int i = 1; i < points.length; i++) {
            if (points[i][0] <= end) {
                continue;
            }
            cnt++;
            end = points[i][1];
        }
        return cnt;
        }
    }
  • 相关阅读:
    Visual Studio 2008 每日提示(十一)
    Visual Studio 2008 每日提示(十二)
    13 个应该记住的最不寻常的搜索引擎
    Web1.0及WEB2.0的比较
    Comparing Properties to Methods
    1
    Struct Constructor Restrictions
    简单的动态下拉菜单
    权限设计(转)
    conceptpolymorphism
  • 原文地址:https://www.cnblogs.com/coding-fairyland/p/12669507.html
Copyright © 2020-2023  润新知