首页 > 试题广场 >

未排序数组中累加和小于或等于给定值的最长子数组长度

[编程题]未排序数组中累加和小于或等于给定值的最长子数组长度
  • 热度指数:4162 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个无序数组arr,其中元素可正、可负、可0。给定一个整数k,求arr所有的子数组中累加和小于或等于k的最长子数组长度
例如:arr = [3, -2, -4, 0, 6], k = -2. 相加和小于等于-2的最长子数组为{3, -2, -4, 0},所以结果返回4
[要求]
时间复杂度为,空间复杂度为


输入描述:
第一行两个整数N, k。N表示数组长度,k的定义已在题目描述中给出
第二行N个整数表示数组内的数


输出描述:
输出一个整数表示答案
示例1

输入

5 -2
3 -2 -4 0 6

输出

4

备注:

头像 诗云panther
发表于 2021-08-17 15:48:47
include <bits/stdc++.h> using namespace std;#define gc() (p1==p2&&(p1=bf,p2=bf+fread(bf,1,1<<21,stdin),p1==p2)?EOF:*p1++)char bf[ 展开全文
头像 WYJ96
发表于 2021-08-10 17:05:25
import java.util.*; public class Main{ public static int maxLen1(int[] arr, int k) { if (arr == null || arr.length == 0) { re 展开全文
头像 快支棱起来的椰子很愤怒
发表于 2022-01-10 14:54:52
n, k = map(int, input().split()) arr = list(map(int, input().split())) min_sums, min_ends = [0] * n, [0] * n min_sums[-1] = arr[-1] min_ends[-1] = n - 展开全文