LeetCode刷題筆記第35題

2022-06-16 12:06:10 字數 903 閱讀 2176

題目描述:

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

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

解題思路:

最直接的想法就是使用二分查詢,如果有序陣列中含有與target值相等的元素,直接返回對應的索引值;如果沒有則在查詢完畢之後,返回對應的左游標值。還有一種解法是直接遍歷有序陣列,遍歷進行的條件是陣列當前訪問值小於target值同時遍歷游標小於陣列長度,遍歷結束後,對應的遍歷游標值就是應該要返回的值。

第一種解法:二分查詢

時間複雜度為:o(logn)

public

int searchinsert(int nums, int

target)

int left = 0;

int right = nums.length - 1;

int mid = (left + right) / 2;

while (left <=right)

else

mid = (right + left) / 2;

}return mid + 1;

}

第一種解法續:對二分查詢的改進,減少迴圈次數

public

int searchinsert3(int nums,int

target)

return target<=nums[lo]? lo:++lo;

}

第二種解法:暴力遍歷

超級簡短,時間複雜度為o(n)

public

int searchinsert2(int nums, int

target)

Leetcode第35題筆記

class solution 此處需要注意,insert之後,it指標會變化,如果不將其返回值再次賦予it,會導致it指標亂指,答案會錯誤。nums.insert nums.end target return nums.size 1 如果覺得迭代器容易出錯,也可直接用陣列下標解決,兩種方式原理相同,...

LeetCode刷題筆記第26題

題目 給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用o 1 額外空間的條件下完成。題目分析 做題之前一定要將題目分析的細緻一些,因為有些條件如果一旦不注意就會造成程式結果出現偏差或者執行不通過...

leetcode刷題筆記 第27題 移除元素

描述 給定乙個陣列 nums 和乙個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。示例 給定 nums 3,2,2,3...