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

【LeetCode】劍指 Offer(27)

這篇具有很好參考價(jià)值的文章主要介紹了【LeetCode】劍指 Offer(27)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

題目:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I - 力扣(Leetcode)

題目的接口:

解題思路:

代碼:

過(guò)啦?。?!

寫(xiě)在最后:


題目:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I - 力扣(Leetcode)

【LeetCode】劍指 Offer(27)

題目的接口:

class Solution {
public:
    int search(vector<int>& nums, int target) {

    }
};

解題思路:

那么這道題呢,

如果只是作為一道題,或者說(shuō)筆試題,

我們當(dāng)然是二話不說(shuō)直接暴力拿下,

來(lái)看代碼:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int cnt = 0;
        for(auto e : nums) if(e == target) cnt++;
        return cnt;        
    }
};

是的,就是這么簡(jiǎn)單,三行代碼暴力拿下,

但是,很顯然,這道題肯定不只是讓你隨便暴力拿下,

如果是在面試的時(shí)候,面試官讓你講講這道題,你確實(shí)可以先給面試官

講講暴力的解法,但要是你只會(huì)暴力,那估計(jì)就要直接回家等通知了,

很顯然,作為一個(gè)有序數(shù)組,這道題可以用二分進(jìn)行優(yōu)化:

我們可以通過(guò)二分法確定左右邊界,然后讓右邊界 - 左邊界 + 1求出答案。

具體思路如下:

先確定右邊界:(讓左下標(biāo)一直往右邊靠)

【LeetCode】劍指 Offer(27)

如果 nums[mid] <= target,就讓?left = mid + 1;

【LeetCode】劍指 Offer(27)

?讓左下標(biāo)一直往右邊走:

【LeetCode】劍指 Offer(27)

?直到走出taget位置,讓右下標(biāo)往右靠:

【LeetCode】劍指 Offer(27)

這樣 left > right?,循環(huán)結(jié)束,找到右邊界left,

特殊情況:

1. 如果數(shù)組內(nèi)不存在target,right所在位置就不是target;

2. 如果數(shù)組不存在target且數(shù)組內(nèi)所以元素都 > target 或者 數(shù)組根本沒(méi)有元素,right就 < 0

也就是right會(huì)跑出數(shù)組,甚至本來(lái)就不在數(shù)組里面,

這兩種情況就直接返回 0 表示不存在 target 值。

接下來(lái)是確定左邊界,我們現(xiàn)將求出的右邊界存下來(lái):

(讓右下標(biāo)一直往左走)

【LeetCode】劍指 Offer(27)

如果 nums[mid] <?target,就讓?left = mid + 1;

【LeetCode】劍指 Offer(27)

?如果 nums[mid] >=?target,就讓 right?= mid - 1;

【LeetCode】劍指 Offer(27)

?讓右下標(biāo)一直往左走:

【LeetCode】劍指 Offer(27)

?這樣 left > right?,循環(huán)結(jié)束,找到左邊界right,

?最后再讓 右邊界 - 左邊界 + 1 即可,

下面是具體代碼:

代碼:

class Solution {
public:
    int search(vector<int>& nums, int target) {
        //先確定右邊界
        int left = 0, right = nums.size() - 1;
        while(left <= right) {
            int mid = (left + right) >> 1;
            if(nums[mid] <= target) left = mid + 1;
            else right = mid - 1;
        }

        //右邊界如果跑出數(shù)組或者所在位置不等于target,證明數(shù)組內(nèi)沒(méi)有target,就直接返回0
        if(right < 0 || nums[right] != target) return 0;

        //將右邊界存下來(lái)
        int r = right;

        //再確定左邊界
        left = 0, right = nums.size() - 1;
        while(left <= right) {
            int mid = (left + right) >>  1;
            if(nums[mid] < target) left = mid + 1;
            else right = mid - 1;
        }

        //返回:右邊界 - 左邊界 + 1
        return r - left + 1;
    }
};

過(guò)啦!?。?/h3>

【LeetCode】劍指 Offer(27)

寫(xiě)在最后:

以上就是本篇文章的內(nèi)容了,感謝你的閱讀。

如果喜歡本文的話,歡迎點(diǎn)贊和評(píng)論,寫(xiě)下你的見(jiàn)解。

如果想和我一起學(xué)習(xí)編程,不妨點(diǎn)個(gè)關(guān)注,我們一起學(xué)習(xí),一同成長(zhǎng)。

之后我還會(huì)輸出更多高質(zhì)量?jī)?nèi)容,歡迎收看文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-411931.html

到了這里,關(guān)于【LeetCode】劍指 Offer(27)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

  • (排序) 劍指 Offer 51. 數(shù)組中的逆序?qū)?——【Leetcode每日一題】

    (排序) 劍指 Offer 51. 數(shù)組中的逆序?qū)?——【Leetcode每日一題】

    難度:困難 在數(shù)組中的兩個(gè)數(shù)字,如果前面一個(gè)數(shù)字大于后面的數(shù)字,則這兩個(gè)數(shù)字組成一個(gè)逆序?qū)?。輸入一個(gè)數(shù)組,求出這個(gè)數(shù)組中的逆序?qū)Φ目倲?shù)。 示例 1: 輸入: [7,5,6,4] 輸出: 5 限制 : 0 = 數(shù)組長(zhǎng)度 = 50000 ??思路:歸并排序 預(yù)備知識(shí) 「 歸并排序 」是用 分治 思想,分

    2024年02月11日
    瀏覽(24)
  • (排序) 劍指 Offer 45. 把數(shù)組排成最小的數(shù) ——【Leetcode每日一題】

    (排序) 劍指 Offer 45. 把數(shù)組排成最小的數(shù) ——【Leetcode每日一題】

    難度:中等 輸入一個(gè)非負(fù)整數(shù)數(shù)組,把數(shù)組里所有數(shù)字拼接起來(lái)排成一個(gè)數(shù),打印能拼接出的所有數(shù)字中最小的一個(gè)。 示例 1: 輸入: [10,2] 輸出: “102” 示例 2: 輸入: [3,30,34,5,9] 輸出: “3033459” 提示 : 0 nums.length = 100 說(shuō)明: 輸出結(jié)果可能非常大,所以你需要返回一個(gè)字符串而不

    2024年02月10日
    瀏覽(18)
  • (排序) 劍指 Offer 21. 調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面 ——【Leetcode每日一題】

    (排序) 劍指 Offer 21. 調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前面 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 輸入一個(gè)整數(shù)數(shù)組,實(shí)現(xiàn)一個(gè)函數(shù)來(lái)調(diào)整該數(shù)組中數(shù)字的順序,使得所有奇數(shù)在數(shù)組的前半部分,所有偶數(shù)在數(shù)組的后半部分。 示例: 輸入:nums = [1,2,3,4] 輸出:[1,3,2,4] 注:[3,1,2,4] 也是正確的答案之一。 提示 : 0 = n u m s . l e n g t h = 50000 0 = nums.length = 50000 0 =

    2024年02月12日
    瀏覽(22)
  • 每天一道leetcode:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I(適合初學(xué)者&二分查找)

    每天一道leetcode:劍指 Offer 53 - I. 在排序數(shù)組中查找數(shù)字 I(適合初學(xué)者&二分查找)

    統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)。 0 = nums.length = 10^5 -10^9 = nums[i] = 10^9 nums 是一個(gè)非遞減數(shù)組 -10^9 = target = 10^9 使用兩次二分查找找到target在數(shù)組中的左右邊界,然后長(zhǎng)度就是右邊界減去左邊界再加一,最后返回長(zhǎng)度即可。 ? 歡迎大家在評(píng)論區(qū)討論,如有不懂的代碼部分

    2024年02月14日
    瀏覽(27)
  • 劍指offer27.二叉樹(shù)的鏡像

    劍指offer27.二叉樹(shù)的鏡像

    這道題很簡(jiǎn)單,寫(xiě)了十多分鐘就寫(xiě)出來(lái)了,一看題目就知道這道題肯定要用遞歸。先交換左孩子和右孩子,再用遞歸交換左孩子的左孩子和右孩子,交換右孩子的左孩子和右孩子,其中做一下空判斷就行。以下是我的代碼: 看了一下題解大多數(shù)用的遞歸,還有用輔助棧的。

    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》(3)排序算法篇

    《劍指offer》(3)排序算法篇

    class Solution: ? ? def duplicate(self , numbers: List[int]) - int: ? ? ? ? if len(numbers) = 1: ? ? ? ? ? ? return -1 ? ? ? ? import collections ? ? ? ? num_dict = collections.Counter(numbers) ? ? ? ? res = [key for (key,value) in num_dict.items() if value 1] ? ? ? ? return res[0] class Solution: ? ? def sort(self,num): #快排

    2024年02月13日
    瀏覽(22)
  • 【LeetCode】劍指 Offer(26)

    【LeetCode】劍指 Offer(26)

    目錄 題目:劍指 Offer 51. 數(shù)組中的逆序?qū)?- 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過(guò)啦?。?! 寫(xiě)在最后: 這一道題,我的思路是用雙指針暴力求解, 但這個(gè)數(shù)組長(zhǎng)度,O(N^2)的時(shí)間復(fù)雜度肯定是不可能把所有樣例跑完, 看了大佬的思路,用的是歸并排序,(如果不

    2023年04月11日
    瀏覽(20)
  • 【LeetCode】劍指 Offer(21)

    【LeetCode】劍指 Offer(21)

    目錄 題目:劍指 Offer 39. 數(shù)組中出現(xiàn)次數(shù)超過(guò)一半的數(shù)字 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過(guò)啦?。。?題目:劍指 Offer 40. 最小的k個(gè)數(shù) - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過(guò)啦?。?! 寫(xiě)在最后: 這道題,我的思路是直接排序, 然后返回中間

    2023年04月10日
    瀏覽(29)
  • 【LeetCode】劍指 Offer(28)

    【LeetCode】劍指 Offer(28)

    目錄 題目:劍指 Offer 54. 二叉搜索樹(shù)的第k大節(jié)點(diǎn) - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過(guò)啦?。?! 題目:劍指 Offer 55 - I. 二叉樹(shù)的深度 - 力扣(Leetcode) 題目的接口: 解題思路: 代碼: 過(guò)啦?。?! 題目:劍指 Offer 55 - II. 平衡二叉樹(shù) - 力扣(Leetcode) 題目的接

    2023年04月24日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包