最长连续子序列
有N个正整数组成的一个序列。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度,如果没有满足要求的序列,返回-1。
import java.util.*;
public class Main {
public static int find(int[] arr, int target) {
int result = -1;
for (int i = 0; i < arr.length; i++) {
int sum = 0;
for (int j = i; j < arr.length; j++) {
sum += arr[j];
if (sum >= target) {
if (sum == target) {
result = Math.max(result, j - i + 1);
break;
}
break;
}
}
}
System.out.println(result);
return result;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String[] strs = in.nextLine().split(",");
int[] arr = new int[strs.length];
int i = 0;
for (String str : strs) {
arr[i] = Integer.parseInt(str);
i++;
}
int target = in.nextInt();
find(arr, target);
}
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String xl = sc.nextLine();
int sum = Integer.parseInt(sc.nextLine());
String[] strings = xl.split(",");
int num = 0;
int[] intArrays = null;
for (int i = 0, length = 0; i < strings.length; i++) {
int count = 0;
for (int j = i; j < strings.length; j++) {
count = count + Integer.parseInt(strings[j]);
if (count == sum) {
if (intArrays == null) {
intArrays = new int[strings.length];
}
intArrays[length++] = j - i + 1;
break;
}
if (count > sum) {
break;
}
}
}
if (intArrays != null) {
Arrays.sort(intArrays);
num = intArrays[strings.length - 1];
} else {
num = -1;
}
System.out.println(num);
}
}

