注意!答案仅作为参考(实际考试中下列代码通过用例100%,但不代表最优解)
有N个正整数组成的一个序列
给定一个整数sum
求长度最长的的连续子序列使他们的和等于sum
返回次子序列的长度
如果没有满足要求的序列 返回-1
案例1:
输入
1,2,3,4,2
6
输出
3
解析:1,2,3和4,2两个序列均能满足要求
所以最长的连续序列为1,2,3 因此结果为3
示例2: 输入 1,2,3,4,2 20 输出 -1 解释:没有满足要求的子序列,返回-1 备注: 输入序列仅由数字和英文逗号构成 数字之间采用英文逗号分割 序列长度 1<=N<=200 输入序列不考虑异常情况 由题目保证输入序列满足要求
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
List<Integer> ints = Arrays.stream(in.nextLine().split(","))
.map(Integer::parseInt)
.collect(Collectors.toList());
int sum = Integer.parseInt(in.nextLine());
in.close();
int max_len = 0;
for (int i = 0; i < ints.size(); i++) {
int tmp_sum = 0;
int sub_len = 0;
for (int j = i; j < ints.size(); j++) {
if (tmp_sum > sum) break;