From fe0367768000ff2f0257c432b62e18c61ceb128b Mon Sep 17 00:00:00 2001 From: tianzhongwei <52898945+tianzhongwei@users.noreply.github.com> Date: Mon, 22 Jun 2020 22:37:45 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E8=B4=AA=E5=BF=83=E7=AE=97=E6=B3=95?= =?UTF-8?q?=E4=B9=8B=E5=8C=BA=E9=97=B4=E8=B0=83=E5=BA=A6=E9=97=AE=E9=A2=98?= =?UTF-8?q?.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将添加的代码移动到了末尾 --- ...03\345\272\246\351\227\256\351\242\230.md" | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" index 889cd26..75157d8 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\350\264\252\345\277\203\347\256\227\346\263\225\344\271\213\345\214\272\351\227\264\350\260\203\345\272\246\351\227\256\351\242\230.md" @@ -122,8 +122,62 @@ int findMinArrowShots(int[][] intvs) { 如果本文对你有帮助,欢迎关注我的公众号 labuladong,致力于把算法问题讲清楚~ +[renxiaoyao](https://github.com/tianzhongwei) 提供C++解法代码:435题 无重叠区间 +```C++ +class Solution { +public: + int eraseOverlapIntervals(vector>& intervals) { + int n = intervals.size(); + if(n <= 1) return 0; + auto myCmp = [&](const auto& a,const auto& b) { + return a[1] < b[1]; + }; + sort(intervals.begin(),intervals.end(),myCmp); + int cnt = 1; + int end = intervals[0][1]; // 区间动态历史最小值 + for(const auto interval : intervals) { + int start = interval[0]; + if(start >= end) { + cnt++; + end = interval[1]; + } + } + return n - cnt; + } +}; +``` + + +[renxiaoyao](https://github.com/tianzhongwei) 提供C++解法代码:312 题 戳气球 +``` +class Solution { +public: + int findMinArrowShots(vector>& points) { + int n = points.size(); + if(n < 2) return n; + + auto myCmp = [&](const auto& a,const auto& b) { + return a[1] < b[1]; + }; + sort(points.begin(),points.end(),myCmp); + + int cnt = 1; + int end = points[0][1]; + for(const auto& point : points) { + int start = point[0]; + if(start > end) { // 若当前区间的起点在当前历史最右边界的后面 + cnt++; // 则非重叠区间个数累加一 + end = point[1]; // 更新当前历史最优边界 + } + } + return cnt; // 返回非重叠区间的个数 + } +}; +``` + + [上一篇:动态规划之博弈问题](../动态规划系列/动态规划之博弈问题.md) [下一篇:动态规划之KMP字符匹配算法](../动态规划系列/动态规划之KMP字符匹配算法.md) -[目录](../README.md#目录) \ No newline at end of file +[目录](../README.md#目录) -- GitLab