最长连续子序列
有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); } }