12
返回列表 发新帖
楼主: tanpf5
跳转到指定楼层
上一主题 下一主题
收起左侧

11/23 Google Intern Interview

🔗
bobzhang2004 2015-12-3 00:50:44 | 只看该作者
全局:
tanpf5 发表于 2015-12-3 00:36
我记得当时我问过这个问题,相等不算重叠,不删除

那相等的情况就得merge吧,[2, 4], [4, 6]变成[2, 6]?
回复

使用道具 举报

🔗
 楼主| tanpf5 2015-12-3 00:53:02 | 只看该作者
全局:
bobzhang2004 发表于 2015-12-3 00:50
那相等的情况就得merge吧,[2, 4], [4, 6]变成[2, 6]?

这题是去掉重叠的而已,不合并
回复

使用道具 举报

🔗
 楼主| tanpf5 2015-12-3 00:54:14 | 只看该作者
全局:
bobzhang2004 发表于 2015-12-3 00:50
那相等的情况就得merge吧,[2, 4], [4, 6]变成[2, 6]?

这题是去掉重叠的而已,不合并
回复

使用道具 举报

🔗
bobzhang2004 2015-12-3 04:57:16 | 只看该作者
全局:
根据楼主的意思,重新改了下代码,谢谢
  1. public class MergeIntervalsIII {
  2.         public static void main(String[] args) {
  3.                 List<Interval> intervals = new ArrayList<Interval>();
  4.                 intervals.add(new Interval(4, 8));
  5.                 intervals.add(new Interval(3, 4));
  6.                 intervals.add(new Interval(-1, 2));
  7.                 intervals.add(new Interval(10, 12));

  8.                 List<Interval> res = mergeIntervals(intervals);
  9.                 for (Interval interval : res) {
  10.                         System.out.println(interval.start + " " + interval.end);
  11.                 }
  12.         }
  13.        
  14.         static class Interval {
  15.                 int start;
  16.                 int end;

  17.                 Interval() {
  18.                         start = 0;
  19.                         end = 0;
  20.                 }
  21.                 Interval(int s, int e) {
  22.                         start = s;
  23.                         end = e;
  24.                 }
  25.         }
  26.        
  27.         /*
  28.                  intervals.add(new Interval(4, 8));
  29.                 intervals.add(new Interval(3, 5));
  30.                 intervals.add(new Interval(-1, 5));
  31.                 intervals.add(new Interval(10, 12));
  32.                 这个case 应该是返回(10, 12)
  33.          */
  34.         public static List<Interval> mergeIntervals(List<Interval> intervals) {
  35.                 List<Interval> res = new ArrayList<Interval>();
  36.                 if (intervals == null || intervals.size() == 0) {
  37.                         return res;
  38.                 }
  39.                 Collections.sort(intervals, new Comparator<Interval>(){
  40.                         public int compare(Interval i1, Interval i2) {
  41.                                 if (i1.start == i2.start) {
  42.                                         return i1.end - i2.end;
  43.                                 }
  44.                                
  45.                                 return i1.start - i2.start;
  46.                         }
  47.                 });
  48.                 List<Interval> list = new ArrayList<Interval>();
  49.                 boolean[] isOverlap = new boolean[intervals.size()];
  50.                 list.add(intervals.get(0));
  51.                 for (int i = 1; i < intervals.size(); i++) {
  52.                         if (intervals.get(i).start < list.get(list.size() - 1).end) {
  53.                                 isOverlap[i] = true;
  54.                                 isOverlap[i - 1] = true;
  55.                                 list.get(list.size() - 1).end = Math.max(list.get(list.size() - 1).end, intervals.get(i).end);
  56.                         } else {
  57.                                 list.add(intervals.get(i));
  58.                         }
  59.                 }
  60.                 for (int i = 0; i < intervals.size(); i++) {
  61.                         if (!isOverlap[i]) {
  62.                                 res.add(intervals.get(i));
  63.                         }
  64.                 }
  65.                 return res;
  66.         }
  67. }
复制代码
回复

使用道具 举报

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

本版积分规则

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