공부기록
307. Range Sum Query - Mutable 본문
문제
https://leetcode.com/problems/range-sum-query-mutable/
피드백
- 팬윅 트리 (binary index tree) 로 일단 풀었다.
- read : log(N), wirte : log(N)
- T[N] = T[lsb[N1]] + T[lsb[N2]] ... 총 연산 수가 log(N) 이 됨.
- 세그먼트 트리도 솔루션에 있다. 개인적으로 아이디어가 더 직관적임
- input 원소를 리프 노드로 둠, 그리고 위에 이진 B+트리를 만드는 것 처럼 부모 노드들을 생성
- 각 노드들은 자식노드들의 인덱스 범위와, 그 원소들의 합을 속성으로 가짐
- [left, right] 범위를 주면, 리프 노드부터 시작해서 [left,k], [k,right] 가 되는 부모노드 2개를 찾아 원소합을 더한다.
- index의 원소가 값이 바뀌면 그 값은 위로 전파된다... 부모노드.sum = left.sum + right.sum 이기에 형제 노드의 인덱스도 잘 구해서 계속 update 해 나가면 됨.
'코테 > LeetCode' 카테고리의 다른 글
576. Out of Boundary Paths (0) | 2022.07.17 |
---|---|
821. Shortest Distance to a Character (0) | 2022.07.08 |
74. Search a 2D Matrix (0) | 2022.04.21 |
49. Group Anagrams (0) | 2022.04.19 |
347. Top K Frequent Elements (0) | 2022.04.16 |