Compare commits

..

No commits in common. "fcc6fec02415994ebdc7142f1a551d2259c8d891" and "0dc0b1083520460692555a9ce056eea25417603e" have entirely different histories.

1 changed files with 0 additions and 46 deletions

View File

@ -1,46 +0,0 @@
package com.cool.ling_cha_mount.binary_search;
import org.junit.Test;
/**
* @author : Cool
* @date: 2024/11/12
*/
public class Num2529 {
/**
* @Author Cool
* @Date 18:50 2024/11/12
* 找到第一个0若存在则找最后一个0的位置类似于<a herf="https://leetcode.cn/problems/find-first-and-last-position-of-element-in-sorted-array/description/"/>
* 若找不到0则可能是数组内所有数字都小于0或是不存在0则进行分类讨论
**/
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});
}
}