From d2ad6fb2c42d4b6f602404ab9ea635d029722f79 Mon Sep 17 00:00:00 2001 From: Cool <747682928@qq.com> Date: Sun, 10 Nov 2024 17:12:02 +0800 Subject: [PATCH] =?UTF-8?q?2024/11/10=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/Num34.java | 31 +++++++++++++++++++ .../ling_cha_mount/binary_search/Num704.java | 24 ++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 src/main/java/com/cool/ling_cha_mount/binary_search/Num34.java create mode 100644 src/main/java/com/cool/ling_cha_mount/binary_search/Num704.java 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; + } +}