zoukankan      html  css  js  c++  java
  • 【剑指offer】53.在排序数组中查找数字 I

    53.在排序数组中查找数字 I

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

    难度简单23

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

    示例 1:

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

    示例 2:

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

    1.二分查找

    //search问题 先O(n)>二分
    //思路 使用二分查找右边界 和 左边界 right-left-1
    //time : O(logn)
    //space : O(1)
    public int search(int[] nums, int target) {
        int i = 0,j = nums.length-1;
        while(i<=j){
            int m = (i+j)/2;
            if(nums[i]<=target) i = m + 1;
            else 
                j = m-1;
        }
        // target is right index 
        int right = i;
    
        i = 0;j = nums.length-1;
        while(i<=j){
            int m = (i+j)/2;
            if(nums[i]<target) i = m+1;
            else 
                j = m-1;
        }
        // target is left index
        int left = j;
        return right-left-1;
    }
    
  • 相关阅读:
    Python2.7-zlib
    Python2.7-sqlite3
    Python2.7-dbm、gdbm、dbhash、bsddb、dumbdb
    Python2.7-anydbm
    Python2.7-marshal
    Python2.7-shelve
    Python2.7-copy_reg
    Python2.7-pickle, cpickle
    Python2.7-shutil
    Python2.7-fnmacth
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860613.html
Copyright © 2011-2022 走看看