Algorithm/LeetCode

35. Search Insert Position

문제 파악 및 재정의

중복없는 정수로 이루어진 정렬된 배열과 목표 값이 주어진다.
목표를 찾으면 해당 index를 반환
목표 없다면 들어갈 적합한 자리의 index를 반환하라

자료구조 및 알고리즘 선택

배열 순회 / 그리디?

구현

class Solution {
    public int searchInsert(int[] nums, int target) {
        int ret = nums.length;
        for(int idx = 0; idx < nums.length; idx++) {
            if(target <= nums[idx]) {
                ret = idx;
                break;
            }
        }
        return ret;        
    }
}

 

회고

순회 중 target값이 나오거나 그것보다 큰 값으로 넘어간다면 해당 index를 반환

예외는 타겟이 가장 큰 값일 경우가 있는데 이 경우를 위해 반환값에 배열의 마지막 위치를 미리 명시해줬다.

 

배열과 Binary Search 문제였다.

o(n)이지만 더 줄일 수 있는 방법이 있을 것 같다.


Time complexity: O(logn)
Space Complexity: O(1)

class Solution {
    public int searchInsert(int[] nums, int target) {
        int start = 0;
        int end = nums.length - 1;

        while (start <= end) {
            int mid = start + (end-start)/2;
            if (nums[mid] == target) return mid;
            else if (nums[mid] > target) end = mid-1;
            else start = mid + 1;
        }

        return start;
    }
}

'Algorithm > LeetCode' 카테고리의 다른 글

12. Integer to Roman  (0) 2023.03.07
278. First Bad Version  (0) 2023.03.03
242. Valid Anagram  (0) 2023.02.26
task-scheduler-ii  (2) 2023.02.25
[EASY] longest-palindrome  (0) 2023.01.11