如何用Java实现求在n个非负整数中连续相加不大于k的个数 输入 第一行,n,k(1 < n,k < 100) 第二行,n个非负整数(< 1000) 输出
时间: 2023-02-07 20:20:55 浏览: 72
下面是用 Java 实现求在 n 个非负整数中连续相加不大于 k 的个数的代码:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int k = scan.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; i++) {
a[i] = scan.nextInt();
}
// 定义双指针 left 和 right
int left = 0;
int right = 0;
// 定义当前连续相加和 sum
int sum = 0;
// 定义结果变量 res
int res = 0;
// 当 right 指针未越界时
while (right < n) {
// 如果 sum 小于 k,那么 right 指针右移,并更新 sum 的值
if (sum < k) {
sum += a[right];
right++;
} else {
// 否则,sum 大于 k,那么 left 指针右移,并更新 sum 的值
sum -= a[left];
left++;
}
// 如果 sum 不大于 k,那么更新结果 res
if (sum <= k) {
res = Math.max(res, right - left);
}
}
// 输出结果
System.out.println(res);
}
}
```
上面的代码使用了双指针的思想。首先定义两个指针 left 和 right,分别指向数组的第一个数和第二个数。然后,我们使用一个变量 sum 记录当前连续相加的和。接下来,我们进入一个循环,在循环中,分两种情况讨论:
- 如果当前连续相加的和 sum
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)