查看: 7316| 回复: 10
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] LeetCode Interval类题目的个人总结(Java描述)

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
为了方便自己日后面试前的复习,花了两天时间总结了Interval相关的问题,主要包含如下题目:
  • 56 Merge Intervals
  • 57 Insert Interval
  • 252 Meeting Rooms
  • 253 Meeting Rooms II
  • 352 Data Stream as Disjoint Intervals
  • 435 Non-overlapping Intervals
  • 436 Find Right Interval
  • 616 Add Bold Tag in String
  • 636 Exclusive Time of Functions
  • 699 Falling Squares
  • 715 Range Module
  • 759 Employee Free Time
  • 986 Interval List Intersections


练习的时候除了参考LeetCode讨论版区里的答案以外,还重点参考了两篇文章:

Medium:
https://medium.com/cracking-the- ... amming-a8c019928405
知乎:
https://zhuanlan.zhihu.com/p/26657786

这是我自己第一次系统性地总结刷题的一个分类,希望大家拍砖轻点。
请注意,不能保证总结文档里的思路和方案是100%正确!主要目的是交流,希望读过的朋友帮我指出里面存在的问题,一起讨论一起进步;也希望帮助到有需要的同学。
谢谢!

Interval.pdf

240.8 KB, 下载次数: 166, 下载积分: 大米 -1 颗

评分

参与人数 16大米 +48 收起 理由
yeehaah + 1 赞一个
Alex08 + 2 给你点个赞!
gyroid + 2 很有用的信息!
DarrenGIVA + 1 给你点个赞!
ryanfly + 1 赞一个

查看全部评分


上一篇:longest path in acyclic undirected connected graph
下一篇:可以删除一共n堵墙,起点到终点的最短距离

本帖被以下淘专辑推荐:

推荐
xiana406 2019-5-4 08:43:24 | 只看该作者
全局:
真好,我还没达到楼主总结的这种水平,于是我决定,今天把上面的题目全做乐。谢谢~
回复

使用道具 举报

🔗
沉风 2019-5-4 03:55:08 | 只看该作者
本楼:
全局:
赞 awesome
回复

使用道具 举报

🔗
sandrababy 2019-5-4 08:06:32 | 只看该作者
本楼:
全局:
赞赞赞!!
回复

使用道具 举报

🔗
eludeme 2019-5-4 08:25:13 | 只看该作者
全局:
很有用的信息!
回复

使用道具 举报

🔗
SCIN 2019-5-4 09:55:59 来自APP | 只看该作者
全局:
谢谢楼主 非常有用 interval是个大考点
回复

使用道具 举报

全局:
赞一个!紫薯紫薯
回复

使用道具 举报

🔗
xiana406 2019-5-4 18:23:56 | 只看该作者
全局:
452也是同类型的题目,可以补充进去。
回复

使用道具 举报

🔗
 楼主| moluren 2019-5-4 19:15:18 | 只看该作者
全局:
xiana406 发表于 2019-5-4 18:23
452也是同类型的题目,可以补充进去。

非常感谢,我加进去的。
回复

使用道具 举报

🔗
 楼主| moluren 2019-5-4 19:33:59 | 只看该作者
全局:
xiana406 发表于 2019-5-4 18:23
452也是同类型的题目,可以补充进去。

文档我就暂时不更新了,我会在这个主题下更新,到一定阶段再更发布更新的文档。

452. Minimum Number of Arrows to Burst Balloons
这道题也是Interval的类型,解题思路也是排序和贪心算法。

贪心算法的思路是:尽量找一支箭可以刺穿的气球数,也就是找交集。

以下是我的代码,可能不是最优最简洁的,但是我觉得比较好理解。

  1.     public int findMinArrowShots(int[][] points) {
  2.         Arrays.sort(points, (a, b) -> a[0] - b[0]);
  3.         if (points.length <= 1) return points.length;

  4.         int[] intersection = points[0];
  5.         int count = 1;
  6.         for (int i = 1; i < points.length; i++) {
  7.             int[] next = points[i];

  8.             intersection = intersection(intersection, next);
  9.             if (intersection == null) {
  10.                 count++;
  11.                 intersection = next;
  12.             }
  13.         }

  14.         return count;
  15.     }

  16.     private int[] intersection(int[] a, int[] b) {
  17.         if (a[1] < b[0] || a[0] > b[1]) return null;

  18.         return new int[]{Math.max(a[0], b[0]), Math.min(a[1], b[1])};
  19.     }
复制代码


再次谢谢 @xiana406

补充内容 (2019-5-4 19:36):
不好意思,笔记本太老旧了,打字老丢字:贪心算法是让一支箭刺穿尽量多的气球,也就是求交集。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表