王廷瑋|數位醫療|智慧醫療: 35. Search Insert Position WFU

2024年7月3日 星期三

35. Search Insert Position

35. Search Insert Position


給定一個排序的不同整數數組和一個目標值,如果找到目標值,返回其索引。如果未找到,則返回按順序插入時應該插入的位置索引。

你必須設計一個時間複雜度為 O(log n) 的算法。

範例 1:

輸入:nums = [1,3,5,6], target = 5 輸出:2

Python

from typing import List

class Solution:
def searchInsert(self, nums: List[int], target: int) -> int:
left, right = 0, len(nums) - 1

while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1

return left

17.34MB, 54ms


C++


#include <vector>

using namespace std;

class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;

while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}

return left;
}
};

11.98MB, 3ms


Javascript


/**
* @param {number[]} nums
* @param {number} target
* @return {number}
*/
var searchInsert = function(nums, target) {
let left = 0, right = nums.length - 1;

while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (nums[mid] === target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}

return left;
};

48.82MB, 49ms