From b1ca98e30bb1dd33b9f11ea3160672b418d28af9 Mon Sep 17 00:00:00 2001 From: xbhog <2251195014@qq.com> Date: Sun, 22 Aug 2021 20:11:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?01=E8=83=8C=E5=8C=85=E4=B8=AD=20=E9=A2=98?= =?UTF-8?q?=E5=8F=B70494=20=E7=9B=AE=E6=A0=87=E5=92=8C=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9Java=E7=89=88=E4=BB=A3=E7=A0=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0494.目标和.md | 1 + 1 file changed, 1 insertion(+) diff --git a/problems/0494.目标和.md b/problems/0494.目标和.md index 77b3c76d..f1f4f3d4 100644 --- a/problems/0494.目标和.md +++ b/problems/0494.目标和.md @@ -248,6 +248,7 @@ class Solution { for (int i = 0; i < nums.length; i++) sum += nums[i]; if ((target + sum) % 2 != 0) return 0; int size = (target + sum) / 2; + if(size < 0) size = -size; int[] dp = new int[size + 1]; dp[0] = 1; for (int i = 0; i < nums.length; i++) { From 5e960b4fcd1c5e52de20dfc19af8674b63c3eb9f Mon Sep 17 00:00:00 2001 From: hailincai Date: Mon, 23 Aug 2021 07:42:21 -0400 Subject: [PATCH 2/2] =?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; } } ```