From 89ac882f24a38f1932e9cbb7ad5e8fe0fea21820 Mon Sep 17 00:00:00 2001 From: zhicheng lee <904688436@qq.com> Date: Sat, 3 Sep 2022 23:48:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=200452.=E7=94=A8=E6=9C=80?= =?UTF-8?q?=E5=B0=91=E6=95=B0=E9=87=8F=E7=9A=84=E7=AE=AD=E5=BC=95=E7=88=86?= =?UTF-8?q?=E6=B0=94=E7=90=83.md=20Java=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原Java代码错误,提示Line 29: error: reached end of file while parsing 且代码内容较为冗余 --- .../0452.用最少数量的箭引爆气球.md | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/problems/0452.用最少数量的箭引爆气球.md b/problems/0452.用最少数量的箭引爆气球.md index c571a235..91e340be 100644 --- a/problems/0452.用最少数量的箭引爆气球.md +++ b/problems/0452.用最少数量的箭引爆气球.md @@ -137,29 +137,21 @@ public: ### Java ```java /** -时间复杂度 : O(NlogN) 排序需要 O(NlogN) 的复杂度 - -空间复杂度 : O(logN) java所使用的内置函数用的是快速排序需要 logN 的空间 -*/ + * 时间复杂度 : O(NlogN) 排序需要 O(NlogN) 的复杂度 + * 空间复杂度 : O(logN) java所使用的内置函数用的是快速排序需要 logN 的空间 + */ class Solution { public int findMinArrowShots(int[][] points) { - if (points.length == 0) return 0; - //用x[0] - y[0] 会大于2147483647 造成整型溢出 - Arrays.sort(points, (x, y) -> Integer.compare(x[0], y[0])); - //count = 1 因为最少需要一个箭来射击第一个气球 - int count = 1; - //重叠气球的最小右边界 - int leftmostRightBound = points[0][1]; + // 根据气球直径的开始坐标从小到大排序 + // 使用Integer内置比较方法,不会溢出 + Arrays.sort(points, (a, b) -> Integer.compare(a[0], b[0])); + + int count = 1; // points 不为空至少需要一支箭 for (int i = 1; i < points.length; i++) { - //如果下一个气球的左边界大于最小右边界 - for(int i = 1; i < points.length; i++){ - if (points[i][0] > leftmostRightBound ) { - //增加一次射击 - count++; - leftmostRightBound = points[i][1]; - //不然就更新最小右边界 - } else { - leftmostRightBound = Math.min(leftmostRightBound , points[i][1]); + if (points[i][0] > points[i - 1][1]) { // 气球i和气球i-1不挨着,注意这里不是>= + count++; // 需要一支箭 + } else { // 气球i和气球i-1挨着 + points[i][1] = Math.min(points[i][1], points[i - 1][1]); // 更新重叠气球最小右边界 } } return count;