如何用Java实现求在n个非负整数中连续相加不大于k的个数 输入 第一行,n,k(1 < n,k < 100) 第二行,n个非负整数(< 1000) 输出
时间: 2023-02-07 14:20:56 浏览: 58
可以使用滑动窗口的方法来解决这个问题。具体来说,可以定义两个指针left和right,用来表示当前的窗口范围。然后对于每个数组元素,如果加上这个元素之后和小于等于k,就将right指针右移一位,否则就将left指针右移一位,并将窗口的和减去左端的元素。最后,只要right指针小于n,就可以继续执行这个过程,直到right指针到达n为止。最后,我们只需要统计窗口和不大于k的窗口个数即可。
下面是一个使用Java实现的例子:
```
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int k = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
int left = 0;
int right = 0;
int sum = 0;
int count = 0;
while (right < n) {
sum += nums[right];
if (sum <= k) {
count++;
right++;
} else {
sum -= nums[left];
left++;
}
}
System.out.println(count);
}
}
```
这段代码的时间复杂度为O(n),可以在较短的时间内完成计算。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)