일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SQL 고득점 Kit
- 프로그래머스
- 코드스테이츠
- 타입스크립트
- 2주 프로젝트
- til
- 타임어택
- js
- 회고
- python
- 파이썬
- javascript
- 타입스크립트 올인원
- 정재남
- 렛츠기릿 자바스크립트
- 제로초
- 백준
- programmers
- 알고리즘
- 토익
- LeetCode
- 4주 프로젝트
- 리트코드
- 자바스크립트
- 코어 자바스크립트
- 리덕스
- Async
- 리액트
- 손에 익히며 배우는 네트워크 첫걸음
- codestates
Archives
- Today
- Total
Jerry
[day22][leetcode] 561. Array Partition 본문
반응형
SOLUTION 1
/**
* @param {number[]} nums
* @return {number}
*/
var arrayPairSum = function(nums) {
/**
Using twopointer technique
left, right
sorting nums
looping for combinations with two pairs in min function
calculating sum of min function
comparing each results
finding maximum sum
*/
/*
pattern
-> 제일 작은 수 기준으로 짝을 만든다, 나머지 중 제일 작은 수 기준으로 짝을 만든다 (반복)
-> 각 짝별로 작은 수를 더한다
*/
nums.sort((a, b) => a - b);
let results = [];
let left = 0;
let right = 1;
while (nums.length > 0) {
if (nums[left] > nums[right]) results.push(nums[right]);
else if (nums[left] < nums[right]) results.push(nums[left]);
else results.push(nums[left]);
nums.shift();
nums.shift();
}
return results.reduce((acc, cur) => acc + cur, 0);
};
SOLUTION2
/**
* @param {number[]} nums
* @return {number}
*/
var arrayPairSum = function(nums) {
nums.sort((a, b) => a - b);
let i = 0, sum = 0;
while (nums.length > i) {
sum += nums[i];
i += 2;
}
return sum;
};
// 시간 복잡도: O(logN)
// 공간 복잡도: O(N)
반응형
'Problem Solving > Algorithm 문제 풀기' 카테고리의 다른 글
[day23][leetcode] 151. Reverse Words in a String (0) | 2024.03.07 |
---|---|
[day23][leetcode] 557. Reverse Words in a String III (0) | 2024.03.07 |
[day22][leetcode] 209. Minimum Size Subarray Sum (0) | 2024.03.06 |
[day22][leetcode] 167. Two Sum II - Input Array Is Sorted (0) | 2024.03.06 |
[day21][leetcode] 209. Minimum Size Subarray Sum (0) | 2024.03.04 |