LeetCode + 설명에서 피벗 인덱스 찾기 해결
의문:
정수 배열
nums
이 주어지면 이 배열의 피벗 인덱스를 계산합니다.설명:
먼저 예제를 살펴보고 그 이면의 논리를 이해해 봅시다.
예제에 따르면 숫자 배열이 있습니다.
인덱스와 함께 시각화하면 다음과 같은 결과를 얻습니다.
이제 이미지를 보면 왼쪽에 3개 요소, 오른쪽에 2개 요소를 추가하면
11
가 됩니다. 따라서 그 사이의 요소에는 피벗 인덱스가 될 인덱스가 있습니다.우리의 경우,
Array[3] = 6
따라서 3은 피벗 인덱스입니다.논리:
이제 피벗 인덱스를 확인하는 방법에 대한 문제를 살펴보겠습니다.
먼저 배열에 있는 모든 요소의 합을 알고
totalSum
로 표시해야 합니다. 여기서는 28입니다.그런 다음 왼쪽 인덱스의 모든 요소의 합계를 구하고
leftSum
로 표시합니다.이제 이러한 요소로 테이블을 생성하고 우리가 가지고 있는 인덱스의 요소를 추적하고
Index[e]
로 표시하고 그것이 무엇인지 확인합니다.문제를 오른쪽에서 왼쪽으로 접근해 봅시다.
우리
leftSum
는 아무것도 추가하지 않았기 때문에 현재 0입니다. 그리고 Index[e]
는 해당 인덱스에 있는 배열의 요소입니다.배열의 각 항목에 대해 이 작업을 수행하면
leftSum
가 leftSum
에 있는 동일한 숫자와 같은 조건이 됩니다. 해당 조건 다음 인덱스는 pivot Index
입니다.그리고 우리의 문제는 피벗 인덱스를 찾는 것입니다.
축하해요! 문제를 성공적으로 진단했습니다!
이제 우리가 얻은 결과에서 논리를 만들어 봅시다.
totalSum
- leftSum
- Index[e]
= leftSum
이제 코드로 구현해 보겠습니다.
자바스크립트를 사용하고 있습니다.
function(index){
// initialize the sums, 0 because we don't know the sums yet.
let totalSum = 0;
let leftSum = 0;
// now let's calculate the total sum
nums.forEach((element) => totalSum += element);
/*
now we have the sum, so we want to check for the condition.
but before that, we need to loop through each element in the array.
*/
for(let e=0; e<nums.length; e++){
if(totalSum - leftSum - index[e] === leftSum){
return e;
}
leftSum += index[e]
}
return -1;
}
우리는 해당 조건을 확인하고 해당 조건을 찾고 있었기 때문에 조건을 충족하면 인덱스를 반환했습니다
pivot index
.정확한 조건이 통과되지 않은 경우 위 연습에서 수행한 것처럼 배열의 다른 요소를 leftSum에 추가해야 했습니다.
그리고 피벗 인덱스가 없으면 질문 요구 사항에 따라 -1을 반환합니다.
축하해요! 훌륭해!
The solution might not be optimal in terms of runtime and memory distribution, but hey, you figured out the concept behind it and implemented it!
표지 사진 작성자: Arnold Francisca on Unsplash
읽어 주셔서 감사합니다. 질문이 있으시면 언제든지 Twitter로 보내주세요.
Reference
이 문제에 관하여(LeetCode + 설명에서 피벗 인덱스 찾기 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaflenitish/solving-find-pivot-index-from-leetcode-explanation-m6o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)