2020年6月10日 星期三

Leetcode題解 Python & C#:六月挑戰DAY10 Search Insert Position

給一個排序過的數列 nums 和目標值 target,要找出 目標值 insert() 到 nums 後的不影響排序的位置。 

nums是遞增(升序)排列,因此要找到一個位置 index ,該位置使 nums[index - 1] < target 且 nums[index] >= target。

可以從最前方開始找,快一點的做法是使用二分搜尋。

Python
class Solution:
    def searchInsert(self, nums: List[int], target: int) -> int:
        l, r = 0, len(nums)
        while l < r:
            m = (r-l)//2+l
            if nums[m] == target:
                return m
            elif nums[m] >= target:
                r = m                
            else:
                l = m+1
        return r
C#
public class Solution {
    public int SearchInsert(int[] nums, int target) {
        int l = 0;
        int r = nums.Length;
        while(l < r)
        {
            int m = (r-l)/2 + l;
            if(nums[m] == target)
                return m;
            else if(nums[m] > target)
                r = m;
            else
                l = m + 1;
        }
        return r;
    }
}