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]; } } }
1732. 找到最高海拔
/* 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; } }