LeetCode演算法題35 搜尋插入位置解析

2021-08-30 08:18:26 字數 1216 閱讀 4044

給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。

你可以假設陣列中無重複元素。

示例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 的使用者,不過可能主要原因是這是一道考察二分法的題目。突然發現相同 多次提交,執行用時會發生變化.震驚 題目要求,給出乙個排序陣列和乙個目標值,若在陣列中能找到目標值,則返回該目標值在陣列中的下標,若陣列中不存在...