📅  最后修改于: 2023-12-03 15:32:05.378000             🧑  作者: Mango
本文将介绍两个常用的Java程序:一是查找范围求和查询,二是按 K 索引对 Array 进行逆时针旋转。
给定一个整数数组 nums。求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。
class NumArray {
private int[] nums;
private int[] sums;
public NumArray(int[] nums) {
this.nums = nums;
sums = new int[nums.length + 1];
for (int i = 0; i < nums.length; i++) {
sums[i + 1] = sums[i] + nums[i];
}
}
public int sumRange(int i, int j) {
return sums[j + 1] - sums[i];
}
}
public static void main(String[] args) {
int[] nums = {-2, 0, 3, -5, 2, -1};
NumArray numArray = new NumArray(nums);
System.out.println(numArray.sumRange(0, 2)); // 1
System.out.println(numArray.sumRange(2, 5)); // -1
}
给定一个数组 nums,将数组按照 k 旋转。(即,将数组向左旋转 k 步,其中 k 是非负数。)
class RotateArray {
public void rotate(int[] nums, int k) {
k = k % nums.length;
reverse(nums, 0, nums.length - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, nums.length - 1);
}
private void reverse(int[] nums, int start, int end) {
while (start < end) {
int temp = nums[start];
nums[start++] = nums[end];
nums[end--] = temp;
}
}
}
public static void main(String[] args) {
int[] nums = {1, 2, 3, 4, 5, 6, 7};
RotateArray ra = new RotateArray();
ra.rotate(nums, 3);
System.out.println(Arrays.toString(nums)); // [5, 6, 7, 1, 2, 3, 4]
}
以上就是Java程序查找范围求和查询和按 K 索引对 Array 进行逆时针旋转的介绍及代码实现。