문제

제출한 코드

class Solution {
    public int searchInsert(int[] nums, int target) {
        return searchInsert(0, nums.length - 1, nums, target);
    }

    private int searchInsert(int startIndex, int lastIndex, int[] nums, int target) {
        if (startIndex == lastIndex) {
            if (nums[startIndex] >= target) {
                return startIndex;
            } else {
                return startIndex + 1;
            }
        }
        if (lastIndex - startIndex == 1) {
            if (nums[startIndex] >= target) {
                return startIndex;
            } else if (nums[startIndex] < target && target <= nums[lastIndex]) {
                return lastIndex;
            } else {
                return lastIndex + 1;
            }
        }
        int insertIndex;
        int middleIndex = (startIndex + lastIndex + 1) / 2;
        if (nums[middleIndex] == target) {
            insertIndex = middleIndex;
        } else if (nums[middleIndex] > target) {
            insertIndex = searchInsert(startIndex, middleIndex, nums, target);
        } else {
            insertIndex = searchInsert(middleIndex, lastIndex, nums, target);
        }
        return insertIndex;
    }
}

잘한점

개선할 점

Most Upvote Code

public int searchInsert(int[] A, int target) {
    int low = 0, high = A.length-1;
    while(low<=high){
        int mid = (low+high)/2;
        if(A[mid] == target) return mid;
        else if(A[mid] > target) high = mid-1;
        else low = mid+1;
    }
    return low;
}

배울 점

Submission Image