Compare commits
No commits in common. "fcc6fec02415994ebdc7142f1a551d2259c8d891" and "0dc0b1083520460692555a9ce056eea25417603e" have entirely different histories.
fcc6fec024
...
0dc0b10835
|
@ -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});
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue