Image From LeetCodeImage From LeetCode

今天我們要講解的是 [Search Insert Position],這在 LeetCode 算是比較簡單的題目,讓我們一起開始吧!

進來之前請先注意,我的方式不一定完全正確,只是依照我自己的理念進行撰寫,所以如果程式上有什麼更好的解法,歡迎提出見解。

這次題目

Given a sorted array of distinct integers and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.

You must write an algorithm with O(log n) runtime complexity.

Example

1
2
Input: nums = [1,3,5,6], target = 5
Output: 2
1
2
Input: nums = [1,3,5,6], target = 2
Output: 1
1
2
Input: nums = [1,3,5,6], target = 7
Output: 4

Constraints:

  • 1 <= nums.length <= 104
  • -104 <= nums[i] <= 104
  • nums contains distinct values sorted in ascending order.
  • -104 <= target <= 104

自已解法

這次主要針對target尋找陣列是否有值,並且列出他的index,他有特別說此陣列已經進行排序,所以我們只要確定是否比他大或是等於即可回傳當下的值,但萬一如果裡面都沒有比他大或者等於時,我們必須要取得最後一個值的index+1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
// 先取得最大值
let k = nums.length;
for(let i = 0; i < nums.length; i++) {
if (nums[i] >= target) {
k = i;
break;
}
}
return k;
};

實作結果

如此一來就能簡單的跳脫值並且以防到後面找不到參數,預先設定好他的最大值k = nums.length

Image From LeetCodeImage From LeetCode