728x90
https://leetcode.com/problems/find-pivot-index/?envType=study-plan&id=level-1
Intuition
Pivot Index는 해당 인덱스를 기점으로 좌/우 요소들의 합이 같아야 한다. 따라서 좌/우의 합을 score로 계산하여 비교하는 방식으로 문제를 풀 수 있을 것이라 생각했다.
처음에는 매 요소를 순차적으로 돌 때마다, 좌우의 총합을 매번 계산하여 비교하는 방식을 생각했으나, 이는 비효율적이라 생각.
Approach
순차적으로 반복문을 돌아야 한다면 왼쪽에서 오른쪽으로 갈 것이다. 그 말은 우측은 항상 총합이 적어질 것이고, 왼쪽은 반대로 더 커질 것이다. 따라서 오른쪽의 총합을 미리 구해두고, 감산한 수치를 왼쪽으로 옮겨주는 방식으로 해결하면 시간 복잡도를 낮출 수 있을 것이라 생각했다.
Code
/**
* @param {number[]} nums
* @return {number}
*/
var pivotIndex = function(nums) {
let left = 0;
let right = nums.reduce((partialSum, a) => partialSum + a, 0);
for (let i = 0; i < nums.length; i++) {
right -= nums[i];
if(left == right) {
return i
}
left += nums[i]
}
return -1
};
728x90
'Research > Coding Test' 카테고리의 다른 글
스택/큐_기능개발 (0) | 2023.03.21 |
---|---|
스택/큐_같은 숫자는 싫어 (0) | 2023.03.21 |
20. Valid Parentheses (0) | 2023.03.21 |
13. Roman to Integer (0) | 2023.03.20 |
1. Two Sum (0) | 2023.03.19 |
댓글