From 5a2adb11cb7fdb447673956b3c071d2f07f4d798 Mon Sep 17 00:00:00 2001 From: fanxb Date: Fri, 16 Jul 2021 15:54:34 +0800 Subject: [PATCH] add --- .../src/com/fanxb/common/offer/Q53.java | 49 +++++++++++++++++++ .../com/fanxb/common/offer/package-info.java | 4 ++ 2 files changed, 53 insertions(+) create mode 100644 5.leetcode/src/com/fanxb/common/offer/Q53.java create mode 100644 5.leetcode/src/com/fanxb/common/offer/package-info.java diff --git a/5.leetcode/src/com/fanxb/common/offer/Q53.java b/5.leetcode/src/com/fanxb/common/offer/Q53.java new file mode 100644 index 0000000..f9b405d --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/offer/Q53.java @@ -0,0 +1,49 @@ +package com.fanxb.common.offer; + +/** + * 两数相加 + * + * @author fanxb + * @date 2021/6/1 + **/ +public class Q53 { + + public int search(int[] nums, int target) { + if (nums.length == 0) { + return 0; + } + //二分查找目标值在数组中的位置 + int l = 0, r = nums.length - 1; + while (l < r) { + if (nums[l] == target) { + break; + } + int mid = (l + r) / 2; + if (nums[mid] == target) { + l = mid; + break; + } + if (nums[mid] < target) { + l = mid + 1; + } else { + r = mid - 1; + } + } + if (nums[l] != target) { + return 0; + } + int index = l, res = 1; + //找左边的 + while (--index > 0 && nums[index] == target) { + res++; + } + while (++l < nums.length && nums[l] == target) { + res++; + } + return res; + } + + public static void main(String[] args) { + System.out.println(new Q53().search(new int[]{5, 7, 7, 8, 8, 10}, 6)); + } +} diff --git a/5.leetcode/src/com/fanxb/common/offer/package-info.java b/5.leetcode/src/com/fanxb/common/offer/package-info.java new file mode 100644 index 0000000..595c036 --- /dev/null +++ b/5.leetcode/src/com/fanxb/common/offer/package-info.java @@ -0,0 +1,4 @@ +package com.fanxb.common.offer; +/** + * 剑指offer相关题目 + */ \ No newline at end of file