LeetCode - 1365. How Many Numbers Are Smaller Than the Current Number

henu·2023년 9월 1일
0

LeetCode

목록 보기
34/186
post-thumbnail

Solution

var smallerNumbersThanCurrent = function(nums) {
    const sorted = [...nums].sort((a,b) => a-b);

    return nums.map(e => sorted.indexOf(e))
};

Explanation

이 문제는 nums[i]보다 작은 요소들의 개수를 카운팅하는 문제이다.
필자의 접근법은
1. nums를 오름차순으로 정렬한 새로운 배열을 생성한다.
이 경우 정렬된 배열의 인덱스는 해당 인덱스의 요소보다 작은 요소들의 개수가 된다.
예를 들어

nums = [8, 1, 2, 2, 3];
sorted = [1, 2, 2, 3, 8];
// sorted[0]보다 작은 요소의 개수는 0개
// sorted[1]보다 작은 요소의 개수는 1개
// sorted[2]보다 작은 요소의 개수는 2개
// sorted[3]보다 작은 요소의 개수는 2개
// sorted[4]보다 작은 요소의 개수는 4개

위의 예제에서 sorted[3]과 같이 동일한 값은 indexOf 메소드로 처리 가능하다.
indexOf 메소드 사용시 검색 범위를 지정해주지않으면 최소 인덱스값을 리턴하기때문이다.
2. nums에 map 메소드를 사용해서 정렬된 배열의 인덱스 값으로 매핑해주면된다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN