国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I

這篇具有很好參考價值的文章主要介紹了劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目來源
劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I

二分查找

初始化: 左邊界 i=0 ,右邊界 j=nums.length?1。
循環(huán)二分: 當(dāng)閉區(qū)間 [i, j] 無元素時跳出;

  • 計(jì)算中點(diǎn) m=(i+j)/2 (向下取整);
  • 若 nums[m]<target,則 target 在閉區(qū)間 [m+1,j] 中,因此執(zhí)行 i=m+1;
  • 若 nums[m]>target,則 target 在閉區(qū)間 [i,m?1] 中,因此執(zhí)行 j=m?1;
  • 若 nums[m]=target,則右邊界 right 在閉區(qū)間 [m+1,j] 中;左邊界 left 在閉區(qū)間 [i,m?1] 中。因此分為以下兩種情況:
    • 若查找 右邊界 right ,則執(zhí)行 i=m+1;(跳出時 i 指向右邊界)
    • 若查找 左邊界 left ,則執(zhí)行 j=m?1;(跳出時 j 指向左邊界)

返回值: 應(yīng)用兩次二分,分別查找 right 和 left ,最終返回 right?left?1 即可。

求比target大的值

        while(left <= right){
            int mid = left + ((right-left)>>1);
            if(nums[mid] <= target){
                left = mid + 1;
            }else{
                right = mid - 1;
            }
        }

劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I

求比taget小的值

        while(left <= right){
            int mid = left + ((right-left)>>1);
            if(nums[mid] < target){
                left = mid + 1;
            }else{
                right = mid - 1;
            }
        }

劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I
最終直接l-r-1即可,完整代碼

class Solution {
    public int search(int[] nums, int target) {
        int left = 0;
        int right = nums.length-1;
        while(left <= right){
            int mid = left + ((right-left)>>1);
            if(nums[mid] <= target){
                left = mid + 1;
            }else{
                right = mid - 1;
            }
        }
        int r = left;
        if(right >= 0 && nums[right] != target) return 0;
        left = 0;
        right = nums.length-1;
        while(left <= right){
            int mid = left + ((right-left)>>1);
            if(nums[mid] < target){
                left = mid + 1;
            }else{
                right = mid - 1;
            }
        }
        int l = right;
        return r - l - 1;
    }
}

劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I文章來源地址http://www.zghlxwxcb.cn/news/detail-427595.html

到了這里,關(guān)于劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 劍指 Offer 53 - II. 0~n-1 中缺失的數(shù)字

    力扣 一個長度為n-1的遞增排序數(shù)組中的所有數(shù)字都是唯一的,并且每個數(shù)字都在范圍0~n-1之內(nèi)。在范圍0~n-1內(nèi)的n個數(shù)字中有且只有一個數(shù)字不在該數(shù)組中,請找出這個數(shù)字。 示例 1: 輸入: [0,1,3] 輸出: 2 示例 2: 輸入: [0,1,2,3,4,5,6,7,9] 輸出: 8 限制: 1 = 數(shù)組長度 = 10000 代碼:

    2024年02月14日
    瀏覽(29)
  • 劍指offer -- 二維數(shù)組中的查找

    劍指offer -- 二維數(shù)組中的查找

    二維數(shù)組中的查找_??皖}霸_??途W(wǎng) (nowcoder.com) 暴力查找法: 是一種簡單直接的解決方法,可以用于在二維數(shù)組中查找目標(biāo)值。該方法的思路是遍歷數(shù)組的每個元素,逐個與目標(biāo)值進(jìn)行比較。 具體步驟如下: 從數(shù)組的第一行第一列開始,逐行逐列地遍歷數(shù)組的每個元素。 對

    2024年02月06日
    瀏覽(64)
  • 劍指offer中算法:二維數(shù)組中的查找

    在一個 n * m 的二維數(shù)組中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個高效的函數(shù),輸入這樣的一個二維數(shù)組和一個整數(shù),判斷數(shù)組中是否含有該整數(shù)。 示例 現(xiàn)有矩陣 matrix 如下: { {1, 4, 7}, {2, 5, 8,}, {3, 6, 9} } 給定 target = 9,

    2024年02月12日
    瀏覽(21)
  • 【劍指offer刷題記錄 java版】數(shù)組雙指針 之 其它題目

    【劍指offer刷題記錄 java版】數(shù)組雙指針 之 其它題目

    本系列文章記錄labuladong的算法小抄中劍指offer題目 題目鏈接:https://leetcode.cn/problems/XltzEq/ 題目鏈接:https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/ 題目鏈接:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/ 題目鏈接:https://leetcode.cn/problems/he-wei-sde-

    2024年02月11日
    瀏覽(22)
  • 劍指 Offer 14- I. 剪繩子

    劍指 Offer 14- I. 剪繩子

    劍指 Offer 14- I. 剪繩子 難度: m i d d l e color{orange}{middle} mi dd l e 題目描述 給你一根長度為 n n n 的繩子,請把繩子剪成整數(shù)長度的 m m m 段(m、n都是整數(shù),n1并且m1),每段繩子的長度記為 k [ 0 ] , k [ 1 ] . . . k [ m ? 1 ] k[0],k[1]...k[m-1] k [ 0 ] , k [ 1 ] ... k [ m ? 1 ] 。請問 k [ 0 ] ?

    2023年04月09日
    瀏覽(44)
  • 劍指 Offer 58 - I. 翻轉(zhuǎn)單詞順序

    劍指 Offer 58 - I. 翻轉(zhuǎn)單詞順序 不用內(nèi)置方法 去除首尾空格和中間多余空格 翻轉(zhuǎn)所有字符 翻轉(zhuǎn)每個單詞 用自帶的 trim() 和 substring() ,要自己實(shí)現(xiàn)這兩個方法也很簡單。

    2024年02月11日
    瀏覽(21)
  • 【劍指offer】數(shù)組中重復(fù)的數(shù)字

    【劍指offer】數(shù)組中重復(fù)的數(shù)字

    ??專欄內(nèi)容:力扣刷題 ?個人主頁:子夜的星的主頁 ??座右銘:前路未遠(yuǎn),步履不停 劍指offer:數(shù)組中重復(fù)的數(shù)字 在一個長度為 n 的數(shù)組里的所有數(shù)字都在 0 0 0 到 n ? 1 n-1 n ? 1 的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個數(shù)字重復(fù),也不知道每個數(shù)字重復(fù)了幾

    2024年01月20日
    瀏覽(23)
  • 【劍指 offer】旋轉(zhuǎn)數(shù)組的最小數(shù)字

    【劍指 offer】旋轉(zhuǎn)數(shù)組的最小數(shù)字

    ?個人主頁:bit me?? ?當(dāng)前專欄:算法訓(xùn)練營?? 核心考點(diǎn):數(shù)組理解,二分查找,臨界條件 描述: 有一個長度為 n 的非降序數(shù)組,比如[1,2,3,4,5],將它進(jìn)行旋轉(zhuǎn),即把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,變成一個旋轉(zhuǎn)數(shù)組,比如變成了[3,4,5,1,2],或者[4,5,1,2,3]這

    2023年04月20日
    瀏覽(20)
  • 劍指offer03.數(shù)組中重復(fù)的數(shù)字

    劍指offer03.數(shù)組中重復(fù)的數(shù)字

    看到這道題的第一眼想到的是先給它排序,然后雙指針從左往右遍歷,寫了一個冒泡排序,但是我想到了應(yīng)該會超時,因?yàn)槊芭輹r間復(fù)雜度是n的平方,輸入大小時10000,肯定會超時,然后右又看了一下題目看到數(shù)字都是0-n-1,靈感一下子就來了,我先創(chuàng)建一個等大的自然數(shù)數(shù)

    2024年02月11日
    瀏覽(19)
  • 【劍指offer|1.數(shù)組中重復(fù)的數(shù)字】

    【劍指offer|1.數(shù)組中重復(fù)的數(shù)字】

    : 長度為n的數(shù)組nums中所有數(shù)字都在0~n-1范圍內(nèi) 返回任意一個重復(fù)的數(shù)字 總體時間復(fù)雜度和空間復(fù)雜度分析: 修改數(shù)組的方法: 因?yàn)橛衝個元素,每一個元素都在0~(n-1)范圍內(nèi),如果元素不重復(fù)的話, 對數(shù)組重排之后,下標(biāo)和元素值之間應(yīng)該是一一對應(yīng)的關(guān)系 但是因?yàn)?/p>

    2023年04月22日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包