1. 程式人生 > >Leetcode 35題 搜尋插入位置

Leetcode 35題 搜尋插入位置

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

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

示例 1: 輸入: [1,3,5,6], 5  輸出: 2  示例 2: 輸入: [1,3,5,6], 7  輸出: 4

思路1:給定的陣列是有序的,先判斷目標是是否比陣列的第一個元素小(返回下標0)或比最後一個元素大(返回陣列長度),然後通過for迴圈遍歷整個陣列,判斷陣列是否存在該元素找到與目標值相等的元素,存在則返回該元素的下標,不存在則插入第一個比目標值大的元素位置。

class Solution {
    public int searchInsert(int[] nums, int target) {
        //所給陣列已經排過序
        //Arrays.sort(nums);
        int index=0;
        //判斷是否有該元素
        if(target<nums[0])
        {
            return 0;
        }else if(target>nums[nums.length-1])
        {
            return nums.length;
        }else
        {
            for(int i=0;i<nums.length;i++)
            {
                if(nums[i]==target)
                {
                    index = i;
                }else if(target>nums[i]&&target<nums[i+1])
                {
                    index = i+1;
                }
            }
        }
        return index;
    }
}

思路2:因為陣列為有序陣列,通過for迴圈遍歷陣列,如果迴圈到比target資料大(或相等)的元素,即返回第一個比他大的元素下標;如果沒有,則返回陣列長度。

public int searchInsert(int[] nums, int target) {
    for (int i = 0; i < nums.length; i++) {
        if (nums[i] >= target)
            return i;
    }
    return nums.length;
}