Leetcode 35題 搜尋插入位置
阿新 • • 發佈:2018-11-11
給定一個排序陣列和一個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。
你可以假設陣列中無重複元素。
示例 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;
}