赞
踩
有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.ArrayList; import java.util.List; import java.util.Scanner; /** * @author CZM * @date 2022 06 26 20:12 */ // 最长连续子串 public class test02 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String line = sc.nextLine(); int num = Integer.parseInt(sc.nextLine()); String[] split = line.split(","); List<Integer> list = new ArrayList<>(); for (int i = 0; i < split.length; i++){ list.add(Integer.parseInt(split[i])); } int count = -1; for (int i = 0; i < list.size(); i++){ if (list.get(i) == num) { count = Math.max(1,count); } else if (list.get(i) < num) { int sum = 0; int start = i; while (start < list.size()){ sum += list.get(start); if (sum == num) { count = Math.max(count, start+1-i); break; } else if (sum > num){ break; } else { start++; } } } } System.out.println(count); } }
题目描述 输入N个互不相同的二维整数坐标,求这N个坐标可以构成的正方形数量。[内积为零的的两个向量垂直] 输入描述 第一行输入为N,N代表坐标数量,N为正整数。N <= 100 之后的 K 行输入为坐标x y以空格分隔,x,y为整数,-10<=x, y<=10 输出描述 输出可以构成的正方形数量。 示例 1 输入 3 1 3 2 4 3 1 输出 0 (3个点不足以构成正方形) 示例 2 输入 4 0 0 1 2 3 1 2 -1 输出 1
import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * @author CZM * @date 2022 06 26 20:12 */ // 正方形数量 public class test03 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = Integer.parseInt(sc.nextLine()); List<String> list = new ArrayList<>(); for (int i = 0; i < num; i++) { list.add(sc.nextLine()); } int count = 0; if (num <= 3) { System.out.println(count); return; } for (int i = 0; i<list.size(); i++) { String str = list.get(i); String[] split = str.split(" "); int x1 = Integer.parseInt(split[0]); int y1 = Integer.parseInt(split[1]); for (int j = i + 1; j<list.size(); j++) { String str1 = list.get(j); String[] split1 = str1.split(" "); int x2 = Integer.parseInt(split1[0]); int y2 = Integer.parseInt(split1[1]); int x31 = x1 - (y1-y2); int y31 = y1 + (x1-x2); int x41 = x2 - (y1-y2); int y41 = y2 + (x1-x2); int x32 = x1 + (y1-y2); int y32 = y1 - (x1-x2); int x42 = x2 + (y1-y2); int y42 = y2 - (x1-x2); if (list.contains(x31 + " " + y31) && list.contains(x41 + " " + y41)) { count++; } if (list.contains(x32 + " " + y32) && list.contains(x42 + " " + y42)) { count++; } } } System.out.println(count / 4); } }
题目描述 有一棵二叉树,每个节点由一个大写字母标识(最多26个节点)。 现有两组字母,分别表示后序遍历(父节点->左孩子->右孩子) 和中序遍历(左孩子->父节点->右孩子)的结果, 请你输出层次遍历(左孩子->右孩子->父节点)的结果 输入描述 输入1行,分别表示后序遍历(父节点->左孩子->右孩子)和中序遍历(左孩子->父节点->右孩子)的结果。 输出描述 输出层次遍历(左孩子->右孩子->父节点)的结果。 示例 输入 CBEFDA CBAEDF 输出 ABDCEF 说明:(如下图)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。