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

題目描述

給定一個(gè)按照升序排列的整數(shù)數(shù)組 nums,和一個(gè)目標(biāo)值 target。找出給定目標(biāo)值在數(shù)組中的開(kāi)始位置和結(jié)束位置。
如果數(shù)組中不存在目標(biāo)值 target刊头,返回 [-1, -1]。

時(shí)間復(fù)雜度為 O(log n) 的算法诸尽。
示例 1:
輸入:nums = [5,7,7,8,8,10], target = 8
輸出:[3,4]

示例 2:
輸入:nums = [5,7,7,8,8,10], target = 6
輸出:[-1,-1]

示例 3:
輸入:nums = [], target = 0
輸出:[-1,-1]

提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
nums 是一個(gè)非遞減數(shù)組
-109 <= target <= 109

解題思路

直接遍歷數(shù)組原杂,找到第一次出現(xiàn)target和最后一次target的位置即可,沒(méi)找到直接返回[-1,-1]您机;但是時(shí)間復(fù)雜度為O(n)穿肄。
題目中是已經(jīng)升序排列的數(shù)組,利用這一特性际看,采用二分查找咸产,查找到第一個(gè)等于target的位置start,如果沒(méi)有仲闽,那么返回[-1,-1]脑溢,否則,再次二分查找赖欣,查找到第一個(gè)大于target的位置end屑彻,返回[start,end-1]验庙;時(shí)間復(fù)雜度為O(logn)。
也可以直接調(diào)用STL的二分查找函數(shù)社牲,lower_bound函數(shù)和upper_bound函數(shù)粪薛。

源碼

class Solution {
public:
    vector<int> searchRange(vector<int>& nums, int target) {
        int n=nums.size();

        int left=0,right=n;
        while(left<right)
        {
            int mid=(right-left)/2+left;
            if(nums[mid]<target)
            {
                left=mid+1;
            }
            else
            {
                right=mid;
            }
        }
        if(left==n||nums[left]!=target)
        {
            return vector<int>{-1,-1};
        }
        int start=left;
        left=0;right=n;
        while(left<right)
        {
            int mid=(right-left)/2+left;
            if(nums[mid]<=target)
            {
                left=mid+1;
            }
            else
            {
                right=mid;
            }
        }
        int end=left-1;
        vector<int>ans;
        {
            ans.push_back(start);
            ans.push_back(end);
        }
        return ans;
        
        /*
        vector<int>ans{-1,-1};
        if(!binary_search(nums.begin(),nums.end(),target))return ans;
        ans[0]=lower_bound(nums.begin(),nums.end(),target)-nums.begin();
        ans[1]=upper_bound(nums.begin(),nums.end(),target)-nums.begin()-1;
        return ans;
        */
    }
};

題目來(lái)源

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)搏恤,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處违寿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市挑社,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巡揍,老刑警劉巖痛阻,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異腮敌,居然都是意外死亡阱当,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)糜工,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弊添,“玉大人,你說(shuō)我怎么就攤上這事捌木∮桶樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵刨裆,是天一觀(guān)的道長(zhǎng)澈圈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)帆啃,這世上最難降的妖魔是什么瞬女? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮努潘,結(jié)果婚禮上诽偷,老公的妹妹穿的比我還像新娘。我一直安慰自己疯坤,他們只是感情好报慕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著压怠,像睡著了一般卖子。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刑峡,一...
    開(kāi)封第一講書(shū)人閱讀 51,562評(píng)論 1 305
  • 那天洋闽,我揣著相機(jī)與錄音玄柠,去河邊找鬼。 笑死诫舅,一個(gè)胖子當(dāng)著我的面吹牛羽利,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刊懈,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼这弧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了虚汛?” 一聲冷哼從身側(cè)響起匾浪,我...
    開(kāi)封第一講書(shū)人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卷哩,沒(méi)想到半個(gè)月后蛋辈,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡将谊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年冷溶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尊浓。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逞频,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栋齿,到底是詐尸還是另有隱情苗胀,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布瓦堵,位于F島的核電站柒巫,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏谷丸。R本人自食惡果不足惜堡掏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刨疼。 院中可真熱鬧泉唁,春花似錦、人聲如沸揩慕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迎卤。三九已至拴鸵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劲藐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工八堡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聘芜。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓兄渺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親汰现。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挂谍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容