From 5e960b4fcd1c5e52de20dfc19af8674b63c3eb9f Mon Sep 17 00:00:00 2001 From: hailincai Date: Mon, 23 Aug 2021 07:42:21 -0400 Subject: [PATCH] =?UTF-8?q?Update=200435.=E6=97=A0=E9=87=8D=E5=8F=A0?= =?UTF-8?q?=E5=8C=BA=E9=97=B4.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First java code not working, I test in the IntellJ with jdk 11, the Arrays.sort is not right ( doesn't make the left edge sort from small to big ), so the non overlapping area count fail. I fix it. Sort by end first, if end is same, sort by start --- problems/0435.无重叠区间.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/problems/0435.无重叠区间.md b/problems/0435.无重叠区间.md index 70d0ff3a..f5da71c7 100644 --- a/problems/0435.无重叠区间.md +++ b/problems/0435.无重叠区间.md @@ -186,27 +186,27 @@ Java: class Solution { public int eraseOverlapIntervals(int[][] intervals) { if (intervals.length < 2) return 0; + Arrays.sort(intervals, new Comparator() { @Override public int compare(int[] o1, int[] o2) { - if (o1[0] != o2[0]) { + if (o1[1] != o2[1]) { return Integer.compare(o1[1],o2[1]); } else { - return Integer.compare(o2[0],o1[0]); + return Integer.compare(o1[0],o2[0]); } } }); - int count = 0; + int count = 1; int edge = intervals[0][1]; for (int i = 1; i < intervals.length; i++) { - if (intervals[i][0] < edge) { - count++; - } else { + if (edge <= intervals[i][0]){ + count ++; //non overlap + 1 edge = intervals[i][1]; } } - return count; + return intervals.length - count; } } ```