• leetcode的一些贪心题目


    11-盛最多水的容器

    思路:定义2个指针分别指向数组的两端,找出两边缘最小的那个,然后乘以两边缘的距离,然后向中间搜索,移动一次算出结果比较取最大的。

    class Solution {
    public:
        int maxArea(vector<int>& height) {
            int res=0,i=0,j=height.size()-1;
            while(i<j){
                int h=min(height[j],height[i]);
                res = max(res,h*(j-i));
                while(i<j&&h==height[i]) i++;
                while(i<j&&h==height[j]) j--;
            }
            return res;
        }
    };

    455-分发饼干

    思路:可以先对两个数组进行排序,然后从小到大来一一对应,res+1,第二个数组发现不能满足第一个数组的时候逐步+1,然后用该数组后面的数字来对比。

    class Solution {
    public:
        int findContentChildren(vector<int>& g, vector<int>& s) {
            sort(g.begin(),g.end(),greater<int>());
            sort(s.begin(),s.end(),greater<int>());
            
            int gi=0,si=0,res=0;
            while(gi<g.size()&&si<s.size()){
                
                if(s[si]>=g[gi]){
                    res++;
                    gi++;
                    si++;
                }
                else
                    gi++;
            }
            
            return res;
        }
    };

    392-判断子序列

    思路:目前想到的就是两个字符串对比,从前往后遍历一遍,遇到相同的就自增1,逐步遍历一遍后看i是否等于s的长度,且字符都在t中出现过。

    class Solution {
    public:
        bool isSubsequence(string s, string t) {
            int i=0;
            for(int j=0;j<t.size()&&i<s.size();j++){
                if(s[i]==t[j]) i++;
            }
            return i==s.size();
        }
    };

    435-无重叠区

    思路:先更据每个区间的start进行升序排序,然后更据前一个区间的end是否大于后一个区间的start来进行判断,是则res+1,然后将last指向end值较小的那个区间,没有则指向当前,然后继续遍历。

    class Solution {
    public:
        int eraseOverlapIntervals(vector<vector<int>>& intervals) {
            int res = 0, n = intervals.size(), last = 0;
            sort(intervals.begin(), intervals.end());
            for (int i = 1; i < n; ++i) {
                if (intervals[i][0] < intervals[last][1]) {
                    ++res;
                    if (intervals[i][1] < intervals[last][1]) 
                        last = i;
                } else {
                    last = i;
                }
            }
            return res;
        }
    };
    

    402

    55

    12

    13

  • 相关阅读:
    给a标签加样式的写法
    IE6、IE7下不支持overflowy:hidden;
    fontfamily:微软雅黑
    文字加下划线
    IE8下按钮与右边的距离比IE7和IE6的多了一倍
    在button(div)里设置背景图后,在IE6下背景图的高度被撑开了
    li中包含span,在IE6、IE7下会有3pxbug
    事件冒泡
    [LeetCode] Insert Interval 解题报告
    [LeetCode] Generate Parentheses 解题报告
  • 原文地址:https://www.cnblogs.com/darklights/p/11730633.html
Copyright © 2020-2023  润新知