From 06fc23ec9f877dc27fc74681f091231cffeb7aaa Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Tue, 12 Nov 2024 18:49:59 +0800 Subject: [PATCH] =?UTF-8?q?2024/11/12=20=E7=81=B5=E8=8C=B6=E9=A2=98?= =?UTF-8?q?=E5=8D=95=20=E4=BA=8C=E5=88=86=E6=9F=A5=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ling_cha_mount/binary_search/Num2529.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/com/cool/ling_cha_mount/binary_search/Num2529.java diff --git a/src/main/java/com/cool/ling_cha_mount/binary_search/Num2529.java b/src/main/java/com/cool/ling_cha_mount/binary_search/Num2529.java new file mode 100644 index 0000000..d537324 --- /dev/null +++ b/src/main/java/com/cool/ling_cha_mount/binary_search/Num2529.java @@ -0,0 +1,40 @@ +package com.cool.ling_cha_mount.binary_search; + +import org.junit.Test; + +/** + * @author : Cool + * @date: 2024/11/12 + */ +public class Num2529 { + public int maximumCount(int[] nums) { + int start = binarySearch(nums, 0); + if (start < nums.length && nums[start] == 0) { + int end = binarySearch(nums, 1) - 1; + return Math.max(start, nums.length - end - 1); + } + if (start < nums.length) { + return Math.max(start, nums.length - start); + } + return nums.length; + } + + private int binarySearch(int[] nums, int target) { + int left = 0; + int right = nums.length - 1; + while (left <= right) { + int mid = left + (right - left) / 2; + if (target <= nums[mid]) { + right = mid - 1; + } else { + left = mid + 1; + } + } + return left; + } + + @Test + public void test() { + maximumCount(new int[]{-2, -1, -1, 1, 2, 3}); + } +}