From ede6b0a01275faa79a7a56a7a8657f0691c0d269 Mon Sep 17 00:00:00 2001 From: "huangge1199@hotmail.com" Date: Wed, 4 Aug 2021 19:44:15 +0800 Subject: [PATCH] =?UTF-8?q?611:=E6=9C=89=E6=95=88=E4=B8=89=E8=A7=92?= =?UTF-8?q?=E5=BD=A2=E7=9A=84=E4=B8=AA=E6=95=B0(=E4=BA=8C=E5=88=86?= =?UTF-8?q?=E6=B3=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editor/cn/ValidTriangleNumber.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/main/java/leetcode/editor/cn/ValidTriangleNumber.java b/src/main/java/leetcode/editor/cn/ValidTriangleNumber.java index 97bd2be..ed7f81a 100644 --- a/src/main/java/leetcode/editor/cn/ValidTriangleNumber.java +++ b/src/main/java/leetcode/editor/cn/ValidTriangleNumber.java @@ -40,11 +40,23 @@ class ValidTriangleNumber { int count = 0; for (int i = 0; i < nums.length; i++) { for (int j = i - 1; j >= 0; j--) { - int k = 0; - while (k < j && nums[j] + nums[k] <= nums[i]) { - k++; +// int k = 0; +// while (k < j && nums[j] + nums[k] <= nums[i]) { +// k++; +// } +// count += j - k; + int start = 0, end = j - 1; + while (start < end) { + int mid = start + end >> 1; + if (nums[mid] + nums[j] > nums[i]) { + end = mid; + } else { + start = mid + 1; + } + } + if (start == end && nums[end] + nums[j] > nums[i]) { + count += j - end; } - count += j - k; } } return count;