整數陣列 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 請根據這個假設,如果反轉...