給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。
你可以假設陣列中無重複元素。
示例1:
輸入: [1,3,5,6], 5
輸出: 2
示例2:
輸入: [1,3,5,6], 2
輸出: 1
示例3:
輸入: [1,3,5,6], 7
輸出: 4
示例4:
輸入: [1,3,5,6], 0
輸出: 0
這個題給了比較容易的條件,測試樣例沒有重複元素,而且是排序陣列。那麼思路就很好想了,首先肯定是要遍歷的,所以時間複雜度最少也得是o(n),而且這種題也就是這個複雜度了。遍歷的過程如果遇到target就返回索引,如果不等於target則判斷一下是否大於當前值並小於等於下乙個值,如果是則返回下一值的索引。最後如果遍歷完之後還沒有返回,那說明只有兩種情況沒有在遍歷中進行判斷,要麼target小於第乙個值,要麼大於最後乙個值,所以在程式開頭先判斷是否小於等於第乙個值,如果是就返回0索引。然後遍歷完之後直接返回陣列長度即可,因為程式如果可以執行到這裡那麼一定是大於最大的那個數。
c++源**:
class
solution
return len;}}
;
python3源**:
class
solution
:def
searchinsert
(self, nums, target)
:"""
:type nums: list[int]
:type target: int
:rtype: int
"""leng =
len(nums)
if target <= nums[0]
:return
0for i in
range
(leng-1)
:if target == nums[i]
:return i
if target > nums[i]
and target <= nums[i+1]
:return i+
1return leng
Leetcode刷題 35 搜尋插入位置
問題描述 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。可以假設陣列中無重複元素。示例1 輸入 1,3,5,6 5 輸出 2 考慮的時候想的很簡單,因為是有序陣列,直接暴力遍歷過去就可以了,時間複雜度o n 看了題解裡的提示才...
LeetCode演算法35 java 搜尋插入位置
問題 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 2 輸出 1 示例 3 輸入 1,3,5,6 7 輸出 4 示例 4...
LeetCode刷題日記 35 搜尋插入位置
第一次用暴力法寫出來的程式再用時擊敗了96.1 的使用者,同時在記憶體擊敗了98.15 的使用者,不過可能主要原因是這是一道考察二分法的題目。突然發現相同 多次提交,執行用時會發生變化.震驚 題目要求,給出乙個排序陣列和乙個目標值,若在陣列中能找到目標值,則返回該目標值在陣列中的下標,若陣列中不存在...