美文网首页
53.数字在排序数组中出现的次数(简单)

53.数字在排序数组中出现的次数(简单)

作者: 今天柚稚了么 | 来源:发表于2020-02-21 22:56 被阅读0次

考点:本题考查知识迁移能力

题目一描述

统计一个数字在排序数组中出现的次数。
输入: array= [5,7,7,8,8,10], k= 8
输出: 2

思路一:暴力法遍历整个数组

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        if (array == null || array.length <= 0)
            return 0;
        int count=0;
        for(int i=0;i<array.length;i++){
            if(array[i]==k)
                count++;
       }
        return count;
    }
}

思路二:二分查找

由于数组是一个排序过的数组,所以可以用二分查找法

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        if(array==null||array.length<=0||k<array[0]||k>array[array.length-1])
            return 0;
        return getK(array,k,0,array.length-1);
       
    }
    private int getK(int[] array, int k, int start, int end){
        if(start > end)
            return 0;
        int mid = (end - start)/2 + start;
        if(array[mid]>k){
            return getK(array,k,start,mid-1);
        }
        else if(array[mid]<k){
            return getK(array,k,mid+1,end);
        }
        else{
            return getK(array,k,start,mid-1)+getK(array,k,mid+1,end)+1;
        }
    }
}

题目二描述

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出0~n-1中缺失的数字。
输入: [0,1,2,3,4,5,6,7,9]
输出: 8

思路:二分查找

0~n-1这些数字在数组中是排序的,如果不在数组中的那个数字是m,那么所有比m小的数字的下标都与它们的值相同,m正好是数组中第一个数值和下标不相等的下标。

class Solution {
    public int missingNumber(int[] nums) {
        if(nums==null||nums.length<=0)
            return -1;
        int start = 0;
        int end = nums.length-1;
        while(start<=end){
            int mid = (end - start)/2 + start;
            if(nums[mid]!=mid){
                if(mid==0||nums[mid-1]==mid-1)
                    return mid;
                end = mid - 1;
            }
            else{
                start = mid + 1;
            }
            if(start == nums.length)
                return nums.length;
           
        }
         return -1;
    }
}

相关文章

网友评论

      本文标题:53.数字在排序数组中出现的次数(简单)

      本文链接:https://www.haomeiwen.com/subject/zzijfhtx.html