diff --git a/src/main/java/com/ximo/datastructuresinaction/leetcode/solution303/NumArray2.java b/src/main/java/com/ximo/datastructuresinaction/leetcode/solution303/NumArray2.java index c23898c..742e63d 100644 --- a/src/main/java/com/ximo/datastructuresinaction/leetcode/solution303/NumArray2.java +++ b/src/main/java/com/ximo/datastructuresinaction/leetcode/solution303/NumArray2.java @@ -2,6 +2,8 @@ import com.ximo.datastructuresinaction.segmenttree.SegmentTree; +import java.util.Arrays; + /** * @author xikl * @date 2019/1/8 @@ -12,10 +14,7 @@ public class NumArray2 { private SegmentTree segmentTree; public NumArray2(int[] nums) { - Integer[] newNums = new Integer[nums.length]; - for (int i = 0; i < nums.length; i++) { - newNums[i] = nums[i]; - } + Integer[] newNums = Arrays.stream(nums).boxed().toArray(Integer[]::new); segmentTree = new SegmentTree<>(newNums, (next, prev) -> next + prev); } diff --git a/src/main/java/com/ximo/datastructuresinaction/leetcode/solution307/NumArray.java b/src/main/java/com/ximo/datastructuresinaction/leetcode/solution307/NumArray.java index 9c73dbd..6cd37c8 100644 --- a/src/main/java/com/ximo/datastructuresinaction/leetcode/solution307/NumArray.java +++ b/src/main/java/com/ximo/datastructuresinaction/leetcode/solution307/NumArray.java @@ -55,10 +55,17 @@ public int sumRange(int i, int j) { */ public void update(int i, int val) { data[i] = val; - // 累加 + // 累加 startIndex 为需要被更新的值中+1 sumStartFromIndex(sum, data, i + 1); } + /** + * 求和 + * + * @param sumArr 求和的数组 + * @param dataArr 原始数据数组 + * @param startIndex 其实的位置 + */ private void sumStartFromIndex(int[] sumArr, int[] dataArr, int startIndex) { for (int i = startIndex; i < sumArr.length; i++) { sumArr[i] = sumArr[i - 1] + dataArr[i - 1]; diff --git a/src/main/java/com/ximo/datastructuresinaction/leetcode/solution307/NumArray2.java b/src/main/java/com/ximo/datastructuresinaction/leetcode/solution307/NumArray2.java new file mode 100644 index 0000000..5d523d8 --- /dev/null +++ b/src/main/java/com/ximo/datastructuresinaction/leetcode/solution307/NumArray2.java @@ -0,0 +1,40 @@ +package com.ximo.datastructuresinaction.leetcode.solution307; + +import com.ximo.datastructuresinaction.segmenttree.SegmentTree; + +import java.util.Arrays; + +/** + * @author xikl + * @date 2019/1/19 + */ +public class NumArray2 { + + private SegmentTree segmentTree; + + + public NumArray2(int[] nums) { + Integer[] newNums = Arrays.stream(nums).boxed().toArray(Integer[]::new); + + segmentTree = new SegmentTree<>(newNums, (prev, next) -> prev + next); + + } + + public int sumRange(int i, int j) { + return segmentTree.queryRangeClose(i, j); + } + + + /** + * 更新其中的一个值 + * + * @param i 需要被更新的位置 + * @param val 新的值 + */ + public void update(int i, int val) { + segmentTree.set(i, val); + } + + + +} diff --git a/src/test/java/com/ximo/datastructuresinaction/array/ArrayTest.java b/src/test/java/com/ximo/datastructuresinaction/array/ArrayTest.java index 9b43005..680b628 100644 --- a/src/test/java/com/ximo/datastructuresinaction/array/ArrayTest.java +++ b/src/test/java/com/ximo/datastructuresinaction/array/ArrayTest.java @@ -2,6 +2,8 @@ import org.junit.Test; +import java.util.Arrays; + /** * @author Ximo * @date 2018/10/22 0:01 @@ -30,4 +32,14 @@ public void testArrToMyArray() { Array array = new Array<>(arr); System.out.println(array); } + + + @Test + public void testIntToInteger() { + int[] intArray = {1, 2, 3, 4}; + + Integer[] integerArrays = Arrays.stream(intArray).boxed().toArray(Integer[]::new); + System.out.println(Arrays.toString(integerArrays)); + + } } \ No newline at end of file