首页 > 其他分享 >LeetCode[435] 无重叠区间

LeetCode[435] 无重叠区间

时间:2022-11-23 11:59:14浏览次数:72  
标签:const 重叠 int auto 200010 ++ intervals 435 LeetCode

https://leetcode.cn/problems/non-overlapping-intervals/description/

线性dp

TLE

class Solution {
public:
    int f[200010];
    int a[200010];
    int eraseOverlapIntervals(vector<vector<int>> &intervals)
    {
        int n = intervals.size();
        sort(intervals.begin(), intervals.end(), [](const auto &u, const auto &v)
             { return u[0] < v[0]; });
        int ans = 0;
        for (int i = 0; i < n; i++)
        {
            f[i] = 1;
            for (int j = 0; j < i; j++)
            {
                if (intervals[j][1] <= intervals[i][0]) {
                    f[i] = max(f[i], f[j] + 1);
                }
            }
            ans = max(ans, f[i]);
        }

        cout << ans << endl;

        return n - ans;
    }
};

贪心

按照右端点从小到大排序。先选择右端点小的,能够留下更多的未覆盖区域。是最优解

证明:待补充(2022-11-23)

AC

class Solution {
public:
    int f[200010];
    int a[200010];
    int eraseOverlapIntervals(vector<vector<int>> &intervals)
    {
        int n = intervals.size();
        sort(intervals.begin(), intervals.end(), [](const auto &u, const auto &v)
             { return u[1] < v[1]; });
        
        int ans = 1;
        int r = intervals[0][1];
        
        for (int i = 1; i < n; i++)
        {
            if (intervals[i][0] >= r) {
                ans++;
                r = intervals[i][1];
            }
        }

        cout << ans << endl;

        return n - ans;
    }
};

标签:const,重叠,int,auto,200010,++,intervals,435,LeetCode
From: https://www.cnblogs.com/StarTwinkle/p/16917799.html

相关文章

  • [LeetCode] 2133. Check if Every Row and Column Contains All Numbers
    An nxn matrixis valid ifeveryrowandeverycolumncontains all theintegersfrom 1 to n (inclusive).Givenan nxn integermatrix matrix,re......
  • leetcode 88. 合并两个有序数组 js实现
    给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合......
  • LeetCode[124] 二叉树中的最大路径和
    https://leetcode.cn/problems/binary-tree-maximum-path-sum/description/dp,树上搜索因为值有负数,所以针对一个节点的更新,有四种情况:节点值本身节点值+左子树节......
  • [Leetcode Weekly Contest]320
    链接:LeetCode[Leetcode]2475.数组中不等三元组的数目给你一个下标从0开始的正整数数组nums。请你找出并统计满足下述条件的三元组(i,j,k)的数目:0<=i<j<......
  • leetcode35. 搜索插入位置(简单)
    题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为O(logn)......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:删除链表中的节点
    题目:有一个单链表的 head,我们想删除它其中的一个节点 node。给你一个需要删除的节点 node 。你将 无法访问 第一个节点 head。链表的所有值都是唯一的,并且保证给定......
  • leetcode724. 寻找数组的中心下标(数组)
    题目描述:给你一个整数数组nums,请计算数组的中心下标。数组中心下标是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最......
  • leetcode563. 二叉树的坡度。
    563.二叉树的坡度 二叉树大部分题目都可以用递归解决。为了满足一般性,即使题目初试没有的情况,子问题有的,也要考虑。递归就考虑当前的情况就行了,不要再考虑上一层或......
  • 【LeetCode】NO.217存在重复元素
    题目:给你一个整数数组 nums 。如果任一值在数组中出现至少两次,返回 true ;如果数组中每个元素互不相同,返回 false 。示例1:输入:nums=[1,2,3,1]输出:true示例2:......
  • leetcode814. 二叉树剪枝。如果想到使用递归还是很简单的
    814.二叉树剪枝有一点疑问,为什么不能先     if(!root->left&&!root->right&&root->val==0)returnnullptr;   ?classSolution{public:TreeNode......