力扣c語言實現 33 搜尋旋轉排序陣列

2021-10-21 06:40:50 字數 951 閱讀 2421

整數陣列 nums 按公升序排列,陣列中的值 互不相同 。

在傳遞給函式之前,nums 在預先未知的某個下標 k(0 <= k < nums.length)上進行了 旋轉,使陣列變為 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下標 從 0 開始 計數)。例如, [0,1,2,4,5,6,7] 在下標 3 處經旋轉後可能變為 [4,5,6,7,0,1,2] 。

給你 旋轉後 的陣列 nums 和乙個整數 target ,如果 nums 中存在這個目標值 target ,則返回它的索引,否則返回 -1 。

示例 1:

輸入:nums = [4,5,6,7,0,1,2], target = 0

輸出:4

示例 2:

輸入:nums = [4,5,6,7,0,1,2], target = 3

輸出:-1

示例 3:

輸入:nums = [1], target = 0

輸出:-1

1 <= nums.length <= 5000

-10^4 <= nums[i] <= 10^4

nums 中的每個值都 獨一無二

nums 肯定會在某個點上旋轉

-10^4 <= target <= 10^4

高階:你可以設計乙個時間複雜度為 o(log n) 的解決方案嗎?

int

search

(int

* nums,

int numssize,

int target)

else

if(nums[mid]

< nums[right]

)//右邊有序

else

}else

else}}

return-1

;}

力扣33 搜尋旋轉排序陣列

假設公升序排序的陣列在某個節點上進行了旋轉,比如說 1,2,3,4,5,6 旋轉之後變成了 4,5,6,1,2,3 搜尋乙個給定的目標值,如果陣列中存在這個目標值,則返回該值的下標,否則的話返回 1 思路 題目要求使用o logn 的時間複雜度,因此主要考慮二分法 二分法的主要模板如下所示 int ...

力扣c語言實現 682 棒球比賽

原題目連線 你現在是棒球比賽記錄員。給定乙個字串列表,每個字串可以是以下四種型別之一 1.整數 一輪的得分 直接表示您在本輪中獲得的積分數。2.一輪的得分 表示本輪獲得的得分是前兩輪有效 回合得分的總和。3.d 一輪的得分 表示本輪獲得的得分是前一輪有效 回合得分的兩倍。4.c 乙個操作,這不是乙個...

力扣c語言實現 7 整數反轉

給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321 示例 2 輸入 123 輸出 321 示例 3 輸入 120 輸出 21 注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉...