<>面试题53 - I. 在排序数组中查找数字 I

统计一个数字在排序数组中出现的次数。

示例 1:

输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:

输入: nums = [5,7,7,8,8,10], target = 6
输出: 0

<>简单暴力解法
class Solution { public int search(int[] nums, int target) { int sum=0; for(int
i=0;i<nums.length;i++){ if(nums[i]==target){ sum++; } } return sum; } }
<>二分查找

因为数组是已经排序好的数组,所以可以先找出左右边界,找到数组中的左右边界,然后相减就可以拿到这个数字了.
/** * @Auther: truedei * @Date: 2020 /20-5-20 08:45 * @Description: */ public
class Test1 { static public int search(int[] nums, int target) { int i=0; int j=
nums.length-1; int left=0,right=0; //搜索左边界 while (i<=j){ int mid = (i + j) /2;
if(nums[mid] <= target) i = i + 1; else j = j - 1; } right = i; i = 0; j=nums.
length-1; //搜索右边界 while (i<=j){ int mid = (i + j) /2; if(nums[mid] < target) i =
i+ 1; else j = j - 1; } left=j; return right - left - 1; } public static void
main(String[] args) { int nums[] = new int[]{5,7,7,8,8,10},target = 8; System.
out.println(search(nums,target)); } }

技术
©2019-2020 Toolsou All rights reserved,
java实现抢红包功能AndroidStudio开发笔记1--第一个appMybatis错误解决:There is no getter for property named '*' in 'class Java.lang.String单个按键控制多种流水灯状态用Python做自动化测试(pytest框架的精髓)关于keras使用fit_generator中遇到StopIterationMySQL面试必会!Python基础知识整理笔记Redis队列实现java秒杀系统,无脚本,可用于生产崮德好文连载 - 活该你是工程师(自序)