303. 区域和检索 - 数组不可变
给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。
实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象 int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))
/*给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点*/
class NumArray {
private int [] sums;
public NumArray(int[] nums) {
sums = new int [nums.length];
if(nums.length == 0) {
return;
}
sums[0] = nums[0];
for(int i = 1; i < nums.length; i++) {
sums[i] = sums[i - 1] + nums[i];
}
}
public int sumRange(int left, int right) {
if(left == 0) {
return sums[right];
}else {
return sums[right] - sums[left - 1];
}
}
}
/*
1.有一个自行车手打算进行一场公路骑行,这条路线总共由 n + 1 个不同海拔的点组成。自行车手从海拔为 0 的点 0 开始骑行。
2.给你一个长度为 n 的整数数组 gain ,其中 gain[i] 是点 i 和点 i + 1 的 净海拔高度差(0 <= i < n)。请你返回 最高点的海拔 。 */
class Solution {
public int largestAltitude(int[] gain) {
int altitude = 0, min = 0;
for(int i : gain) {
altitude += i;
min = Math.max(altitude, min);
}
return min;
}
}