티스토리 뷰

Algorithm/Leetcode

977. Squares of a Sorted Array

소농배 2025. 3. 19. 15:54
class Solution {
    public int[] sortedSquares(int[] nums) {
        int[] result = new int[nums.length];
        int resultIndex = 0;
        int smallestIndex = 0;
        int smallestNumber = 0;
        int leftIndex = 0;
        int rightIndex = 0;

        for (int i = 0; i < nums.length; i++) {
            nums[i] = square(nums[i]);
            if (i == 0) {
                smallestIndex = i;
                smallestNumber = nums[i];
            } else {
                if (nums[i] < smallestNumber) {
                    smallestIndex = i;
                    smallestNumber = nums[i];
                }
            }
        }

        result[resultIndex] = smallestNumber;
        leftIndex = smallestIndex - 1;
        rightIndex = smallestIndex + 1;
        resultIndex++;

        while(resultIndex < result.length) {
            if (leftIndex < 0) {
                //left 먼저 소진
                result[resultIndex] = nums[rightIndex];
                rightIndex++;
            } else if (rightIndex >= nums.length) {
                //right 먼저 소진
                result[resultIndex] = nums[leftIndex];
                leftIndex--;
            } else {
                int leftSquare = nums[leftIndex];
                int rightSquare = nums[rightIndex];

                if (leftSquare <= rightSquare) {
                    result[resultIndex] = leftSquare;
                    leftIndex--;
                } else {
                    result[resultIndex] = rightSquare;
                    rightIndex++;
                }
            }

            resultIndex++;
        }
        return result;
    }

    public int square(int number) {
        return number * number;
    }
}

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

460. LFU Cache  (0) 2025.03.19
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함