mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 00:25:22 +08:00
56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package leetcode
|
||
|
||
import (
|
||
"github.com/halfrost/LeetCode-Go/template"
|
||
)
|
||
|
||
//解法一 线段树,sumRange 时间复杂度 O(1)
|
||
|
||
// NumArray define
|
||
type NumArray struct {
|
||
st *template.SegmentTree
|
||
}
|
||
|
||
// Constructor303 define
|
||
func Constructor303(nums []int) NumArray {
|
||
st := template.SegmentTree{}
|
||
st.Init(nums, func(i, j int) int {
|
||
return i + j
|
||
})
|
||
return NumArray{st: &st}
|
||
}
|
||
|
||
// SumRange define
|
||
func (ma *NumArray) SumRange(i int, j int) int {
|
||
return ma.st.Query(i, j)
|
||
}
|
||
|
||
//解法二 prefixSum,sumRange 时间复杂度 O(1)
|
||
|
||
// // NumArray define
|
||
// type NumArray struct {
|
||
// prefixSum []int
|
||
// }
|
||
|
||
// // Constructor303 define
|
||
// func Constructor303(nums []int) NumArray {
|
||
// for i := 1; i < len(nums); i++ {
|
||
// nums[i] += nums[i-1]
|
||
// }
|
||
// return NumArray{prefixSum: nums}
|
||
// }
|
||
|
||
// // SumRange define
|
||
// func (this *NumArray) SumRange(i int, j int) int {
|
||
// if i > 0 {
|
||
// return this.prefixSum[j] - this.prefixSum[i-1]
|
||
// }
|
||
// return this.prefixSum[j]
|
||
// }
|
||
|
||
/**
|
||
* Your NumArray object will be instantiated and called as such:
|
||
* obj := Constructor(nums);
|
||
* param_1 := obj.SumRange(i,j);
|
||
*/
|