diff --git a/src/main/java/com/cool/ling_cha_mount/binary_search/Num34.java b/src/main/java/com/cool/ling_cha_mount/binary_search/Num34.java new file mode 100644 index 0000000..9655661 --- /dev/null +++ b/src/main/java/com/cool/ling_cha_mount/binary_search/Num34.java @@ -0,0 +1,31 @@ +package com.cool.ling_cha_mount.binary_search; + +/** + * @author : Cool + * @date: 2024/11/08 + * 34. 在排序数组中查找元素的第一个和最后一个位置 + */ +public class Num34 { + public int[] searchRange(int[] nums, int target) { + int start = binarySearch(nums, target); + if (start < nums.length && nums[start] == target) { + int end = binarySearch(nums, target + 1) - 1; + return new int[]{start, end}; + } + return new int[]{-1, -1}; + } + + public int binarySearch(int[] nums, int target) { + int left = 0; + int right = nums.length - 1; + while (left <= right) { + int mid = (right - left) / 2 + left; + if (nums[mid] < target) { + left = mid + 1; + } else { + right = mid - 1; + } + } + return left; + } +} diff --git a/src/main/java/com/cool/ling_cha_mount/binary_search/Num704.java b/src/main/java/com/cool/ling_cha_mount/binary_search/Num704.java new file mode 100644 index 0000000..242f9b0 --- /dev/null +++ b/src/main/java/com/cool/ling_cha_mount/binary_search/Num704.java @@ -0,0 +1,24 @@ +package com.cool.ling_cha_mount.binary_search; + +/** + * @author : Cool + * @date: 2024/11/10 + * 704. 二分查找 + */ +public class Num704 { + public int search(int[] nums, int target) { + int left = 0; + int right = nums.length - 1; + while (left <= right) { + int mid = (right - left) / 2 + left; + if (nums[mid] > target) { + right = mid - 1; + } else if (nums[mid] < target) { + left = mid + 1; + } else { + return mid; + } + } + return -1; + } +}