给你一个整数数组 nums 以及两个整数 lower 和 upper 。求数组中,值位于范围 [lower, upper] (包含 lower 和 upper)之内的 区间和的个数 。
区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包含 i 和 j (i ≤ j)。
示例 1:
输入:nums = [-2,5,-1], lower = -2, upper = 2
输出:3
解释:存在三个区间:[0,0]、[2,2] 和 [0,2] ,对应的区间和分别是:-2 、-1 、2 。
示例 2:
输入:nums = [0], lower = 0, upper = 0
输出:1
提示:
1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
-105 <= lower <= upper <= 105
题目数据保证答案是一个 32 位 的整数
以下是使用Java编写实现题目的解决方案:
- public class Solution {
-
- public int countRangeSum(int[] nums, int lower, int upper) {
-
- int count = 0;
-
- for (int i = 0; i < nums.length; i++) {
-
- int sum = 0;
-
- for (int j = i; j < nums.length; j++) {
-
- sum += nums[j];
-
- if (sum >= lower && sum <= upper) {
-
- count++;
-
- }
-
- }
-
- }
-
- return count;
-
- }
-
-
- public static void main(String[] args) {
-
- int[] nums = {-2, 5, -1};
-
- int lower = -2;
-
- int upper = 2;
-
- Solution solution = new Solution();
-
- int count = solution.countRangeSum(nums, lower, upper);
-
- System.out.println(count);
-
- }
-
- }
上述代码中,'countRangeSum'方法接受一个整数数组'nums'以及两个整数'lower'和'upper'作为参数。通过两层循环遍历数组,计算每个区间的和,并判断和是否在'lower'和'upper'之间。如果在范围内,则计数器'count'加1。最后返回计数器的值,即符合条件的区间和的个数。
在'main'方法中,创建了一个示例数组'nums',设置了'lower'和'upper'的值,并调用'countRangeSum'方法进行计算和输出。
(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)