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

34. 在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(二分查找)

這篇具有很好參考價(jià)值的文章主要介紹了34. 在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(二分查找)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

二分查找到目標(biāo)值然后左右找到坐標(biāo)

問題在于:找左右坐標(biāo)的時(shí)候時(shí)間復(fù)雜度不是O(logN)

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int[] ans = {-1, -1};
        if (nums.length == 0) return ans;
        int l = 0, r = nums.length;
        while (l < r) {
            int m = (l + r) / 2;
            if (nums[m] == target) {
                ans[0] = m; ans[1] = m;
                int tempm = m;
                while (m > 0 && nums[m - 1] == target) {
                    ans[0] = --m;
                }
                while (tempm < nums.length - 1 && nums[tempm + 1] == target) {
                    ans[1] = ++tempm;
                }
                break;
            } else if (nums[m] < target) {
                l = m + 1;
            } else {
                r = m;
            }
        }
        return ans;
    }
}

之前提到過二分查找不僅可找到相等的數(shù)值,更關(guān)鍵的是它可以將數(shù)組分為截然不同的兩種情況,因此我們可以借助這個(gè)性質(zhì)找到第一個(gè)大于等于target的值(左下標(biāo))第一個(gè)大于target的值(右下標(biāo)需要-1)(兩次二分查找)

找到第一個(gè)>=x的值和找到第一個(gè)>x的值見:

2258. 逃離火災(zāi)(附:二分查找的理解)文章來源地址http://www.zghlxwxcb.cn/news/detail-813929.html

class Solution {
    public int[] searchRange(int[] nums, int target) {
        int[] ans = {-1, -1};
        if (nums.length == 0) return ans;
        int lIndex = func(0, nums.length, nums, target);
        int rIndex = func(0, nums.length, nums, target + 1) - 1;
        if (lIndex <= rIndex) ans = new int[] {lIndex, rIndex};
        return ans;
    }
    public int func(int l, int r, int[] nums, int x) {
        int res = -1;
        // 找到第一個(gè)大于等于x的下標(biāo)(left)
        // 大于等于target正常使用
        // 大于target相當(dāng)于大于(target + 1)
        while (l < r) {
            int m = (l + r) / 2;
            if (nums[m] < x) {
                l = m + 1;
            } else {
                r = m;
            }
        }
        res = l;
        return res;
    }
}

到了這里,關(guān)于34. 在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(二分查找)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • LeetCode 34 在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

    在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置 給你一個(gè)按照非遞減順序排列的整數(shù)數(shù)組 nums ,和一個(gè)目標(biāo)值 target 。請(qǐng)你找出給定目標(biāo)值在數(shù)組中的開始位置和結(jié)束位置。 如果數(shù)組中不存在目標(biāo)值 target ,返回 [-1, -1] 。 你必須設(shè)計(jì)并實(shí)現(xiàn)時(shí)間復(fù)雜度為 O(log n) 的算法解決此

    2024年02月02日
    瀏覽(25)
  • 二分查找實(shí)例1(在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置)

    二分查找實(shí)例1(在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置)

    給你一個(gè)按照非遞減順序排列的整數(shù)數(shù)組? nums ,和一個(gè)目標(biāo)值? target 。請(qǐng)你找出給定目標(biāo)值在數(shù)組中的開始位置和結(jié)束位置。 如果數(shù)組中不存在目標(biāo)值? target ,返回? [-1, -1] 。 你必須設(shè)計(jì)并實(shí)現(xiàn)時(shí)間復(fù)雜度為? O(log n) ?的算法解決此問題。 示例 1: 示例?2: 示例 3: 提示

    2024年02月09日
    瀏覽(21)
  • 84.在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(力扣)

    84.在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(力扣)

    目錄 問題描述 代碼解決以及思想? 知識(shí)點(diǎn)? 初始化左邊界 left 為數(shù)組的起始位置(0),右邊界 right 為數(shù)組的結(jié)束位置( nums.size() - 1 )。 進(jìn)入一個(gè)循環(huán),只要左邊界 left 不大于右邊界 right ,就執(zhí)行以下操作: a. 計(jì)算中間位置 middle ,這是為了進(jìn)行二分查找,以避免整數(shù)溢

    2024年02月06日
    瀏覽(29)
  • 在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(Java詳解)

    在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置(Java詳解)

    給你一個(gè)按照 非遞減 順序排列的整數(shù)數(shù)組? nums ,和一個(gè)目標(biāo)值? target 。請(qǐng)你找出給定目標(biāo)值在數(shù)組中的開始位置和結(jié)束位置。 如果數(shù)組中不存在目標(biāo)值? target ,返回? [-1, -1] 。 你必須設(shè)計(jì)并實(shí)現(xiàn)時(shí)間復(fù)雜度為 ? O(log n) ?的算法解決此問題。 示例: 輸入:nums = [5,7,7,8,8

    2024年02月03日
    瀏覽(28)
  • 【算法Hot100系列】在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

    【算法Hot100系列】在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

    ??????歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內(nèi)容和知識(shí),也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續(xù)學(xué)習(xí),不斷總結(jié),共同進(jìn)步,活到老學(xué)到老 導(dǎo)航 檀越劍指大廠系列:全面總

    2024年02月02日
    瀏覽(29)
  • 【LeetCode】每日一題&&兩數(shù)之和&&尋找正序數(shù)組的中位數(shù)&&找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)&&在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

    【LeetCode】每日一題&&兩數(shù)之和&&尋找正序數(shù)組的中位數(shù)&&找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)&&在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

    ========================================================================= 主頁點(diǎn)擊直達(dá): 個(gè)人主頁 我的小倉庫: 代碼倉庫 C語言偷著笑: C語言專欄 數(shù)據(jù)結(jié)構(gòu)挨打小記: 初階數(shù)據(jù)結(jié)構(gòu)專欄 Linux被操作記: Linux專欄 LeetCode刷題掉發(fā)記: LeetCode刷題 算法: 算法專欄? C++頭疼記: C++專欄 計(jì)算機(jī)

    2024年02月08日
    瀏覽(37)
  • 「優(yōu)選算法刷題」:在排序數(shù)組中查找元素的第一個(gè)和最后個(gè)位置

    「優(yōu)選算法刷題」:在排序數(shù)組中查找元素的第一個(gè)和最后個(gè)位置

    給你一個(gè)按照非遞減順序排列的整數(shù)數(shù)組? nums ,和一個(gè)目標(biāo)值? target 。請(qǐng)你找出給定目標(biāo)值在數(shù)組中的開始位置和結(jié)束位置。 如果數(shù)組中不存在目標(biāo)值? target ,返回? [-1, -1] 。 你必須設(shè)計(jì)并實(shí)現(xiàn)時(shí)間復(fù)雜度為? O(log n) ?的算法解決此問題。 示例 1: 示例?2: 示例 3: 二分

    2024年01月22日
    瀏覽(23)
  • 【leetcode題解C++】34.在排序數(shù)值中查找第一個(gè)和最后一個(gè)位置

    給你一個(gè)按照非遞減順序排列的整數(shù)數(shù)組? nums ,和一個(gè)目標(biāo)值? target 。請(qǐng)你找出給定目標(biāo)值在數(shù)組中的開始位置和結(jié)束位置。 如果數(shù)組中不存在目標(biāo)值? target ,返回? [-1, -1] 。 你必須設(shè)計(jì)并實(shí)現(xiàn)時(shí)間復(fù)雜度為? O(log n) ?的算法解決此問題。 示例 1: 示例?2: 示例 3: 思路

    2024年01月16日
    瀏覽(23)
  • 代碼隨想錄額外題目| 數(shù)組03 ●34排序數(shù)組查首尾位置 ●922按奇偶排序數(shù)組II●35搜索插入位置

    代碼隨想錄額外題目| 數(shù)組03 ●34排序數(shù)組查首尾位置 ●922按奇偶排序數(shù)組II●35搜索插入位置

    #34排序數(shù)組查首尾位置 medium,我寫的:1 暴力 我寫的,做了個(gè)類似二分搜索的方法: 隨想錄:從兩頭都做類似二分搜索 #922?按奇偶排序數(shù)組II 我的解法,有點(diǎn)蠢: inplace解法: 把odd idx放的偶數(shù),給換到even idx放的奇數(shù) 注意j是從1開始,而且每輪i,j都是繼續(xù)增加不回去 空間表

    2024年02月15日
    瀏覽(27)
  • 【LeetCode】2619. 數(shù)組原型對(duì)象的最后一個(gè)元素

    【LeetCode】2619. 數(shù)組原型對(duì)象的最后一個(gè)元素

    請(qǐng)你編寫一段代碼實(shí)現(xiàn)一個(gè)數(shù)組方法,使任何數(shù)組都可以調(diào)用 array.last() 方法,這個(gè)方法將返回?cái)?shù)組最后一個(gè)元素。如果數(shù)組中沒有元素,則返回 -1 。 你可以假設(shè)數(shù)組是 JSON.parse 的輸出結(jié)果。 示例 1 : 輸入: nums = [null, {}, 3] 輸出: 3 解釋:調(diào)用 nums.last() 后返回最后一個(gè)元

    2024年01月21日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包