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 889cd26cd4..75157d83e0 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#目录)