977. Squares of a Sorted Array

hyunwoo·2023년 9월 30일

LeetCode

목록 보기
3/3

class Solution {
    public int[] sortedSquares(int[] nums) {
        int[] result = new int[nums.length];
        for(int i=0; i<nums.length; i++){
            result[i] = nums[i]*nums[i];
        }
        
        int small =0;
        for(int k = result.length; k>0; k--){
            for(int j = 0; j<= k-2; j++){
                if(result[j] > result[k-1]){
                    small = result[k-1];
                    result[k-1] = result[j];
                    result[j] = small;
                }
            }
        }
        
        return result;
    }
}

먼저, 각 원소를 제곱하여 새로운 배열 result에 저장하는 부분은 O(n) 시간이 걸립니다. 여기서 n은 nums 배열의 길이입니다.

그 다음, 정렬 부분은 버블 정렬 알고리즘을 사용하고 있습니다. 버블 정렬의 최악의 경우 시간 복잡도는 O(n^2)입니다. 이 부분에서 두 개의 반복문을 사용하므로, 전체 시간 복잡도는 O(n^2)입니다.

따라서 주어진 코드의 시간 복잡도는 O(n) + O(n^2)로 요약할 수 있습니다.
O(n^2)의 영향력이 크기 때문에 전체 시간 복잡도는 O(n^2)입니다.

Accepted는 되었지만 문제에서는 O(n)의 solution을 원했기에 다른 접근이 필요해 보인다.

0개의 댓글