37.数字在排序数组中出现的次数

xiaoxiao2021-02-28  22

题目描述

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

解题思路

方法一

         直接遍历,进行统计即可;

public int GetNumberOfK(int[] array, int k) { int nums = 0; for (int i : array) { if (i == k) { nums++; } } return nums; }

          很显然,面试官不需要这种答案;

方法二

          二分查找

public int GetNumberOfK2(int[] array, int k) { int start = binaryFind(array, k); int end = binaryFind(array, k + 1); return (start == array.length || array[start] != k) ? 0 : end - start; } private int binaryFind(int[] nums, int K) { int l = 0, h = nums.length; while (l < h) { int m = l + (h - l) / 2; if (nums[m] >= K) h = m; else l = m + 1; } return l; }
转载请注明原文地址: https://www.6miu.com/read-2626471.html

最新回复(0)