1. 程式人生 > >【leetcode】35. (Easy)Search Insert Postion(JAVA)

【leetcode】35. (Easy)Search Insert Postion(JAVA)

題目連結

解題思路: 還是折半查詢,設定三個指標分別指向陣列兩邊和中間,如果中間的值是要找的值直接返回位置座標; 如果左指標和右指標重合,說明沒有找到這個數,可以分為3個情況: 目標大於最大數時,此時指標right在陣列最右位置,返回right的下一個位置; 目標小於最小數時,left指標在0位置,此時返回0; 目標在兩個數之間,此時right在left左邊,返回right位置的後面一個位置

提交程式碼:

class Solution {
    public int searchInsert(int[] nums, int target) {
         if(nums==null||
nums.length==0) return -1; int mid,left=0,right=nums.length-1; while(left<=right) { mid=(left+right)/2; if(nums[mid]<target) left=mid+1; else if(nums[mid]>target) right=mid-1; else return mid; } //如果target小於最小數,left=0
//如果target大於最大數,right在最右 //target加在right、left之間(這時候left=right+1) if(left==0) return 0; else if(right==nums.length-1) return nums.length; else if(target>nums[right]) return right+1; else return right; } }

執行結果: 在這裡插入圖片描述