91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++在旋轉有序數組中怎么搜索

發布時間:2022-03-28 13:48:58 來源:億速云 閱讀:111 作者:iii 欄目:大數據

今天小編給大家分享一下C++在旋轉有序數組中怎么搜索的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

在旋轉有序數組中搜索

Example 1:

Input: nums = [2,5,6,0,0,1,2], target = 0
Output: true

Example 2:

Input: nums = [2,5,6,0,0,1,2], target = 3
Output: false

Follow up:

  • This is a follow up problem to Search in Rotated Sorted Array, where nums may contain duplicates.

  • Would this affect the run-time complexity? How and why?

這道是之前那道 Search in Rotated Sorted Array 的延伸,現在數組中允許出現重復數字,這個也會影響我們選擇哪半邊繼續搜索,由于之前那道題不存在相同值,我們在比較中間值和最右值時就完全符合之前所說的規律:如果中間的數小于最右邊的數,則右半段是有序的,若中間數大于最右邊數,則左半段是有序的。而如果可以有重復值,就會出現來面兩種情況,[3 1 1] 和 [1 1 3 1],對于這兩種情況中間值等于最右值時,目標值3既可以在左邊又可以在右邊,那怎么辦么,對于這種情況其實處理非常簡單,只要把最右值向左一位即可繼續循環,如果還相同則繼續移,直到移到不同值為止,然后其他部分還采用 Search in Rotated Sorted Array 中的方法,可以得到代碼如下:

class Solution {
public:
    bool search(vector<int>& nums, int target) {
        int n = nums.size(), left = 0, right = n - 1;
        while (left <= right) {
            int mid = (left + right) / 2;
            if (nums[mid] == target) return true;
            if (nums[mid] < nums[right]) {
                if (nums[mid] < target && nums[right] >= target) left = mid + 1;
                else right = mid - 1;
            } else if (nums[mid] > nums[right]){
                if (nums[left] <= target && nums[mid] > target) right = mid - 1;
                else left = mid + 1;
            } else --right;
        }
        return false;
    }
};

以上就是“C++在旋轉有序數組中怎么搜索”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

徐州市| 布尔津县| 绥芬河市| 韩城市| 滨州市| 罗江县| 聊城市| 呼伦贝尔市| 岐山县| 中方县| 邵阳县| 太原市| 兖州市| 定远县| 剑阁县| 沙田区| 无为县| 安化县| 噶尔县| 花垣县| 大名县| 太仓市| 凉城县| 洪泽县| 将乐县| 巴林左旗| 聂拉木县| 全南县| 五河县| 饶河县| 甘孜| 五指山市| 鹤山市| 无锡市| 彭山县| 宜君县| 上犹县| 鄂托克旗| 加查县| 高唐县| 页游|