如何在 Java 中查找总和等于给定数字的连续子数组?

java 8object oriented programmingprogramming更新于 2025/9/20 12:28:17

查找总和等于给定数字 − 的连续子数组

  • 遍历数组。
  • 在每个元素处逐个添加接下来的 n 个元素,当总和等于所需值时打印子数组。

示例

import java.util.Arrays;
import java.util.Scanner;
public class sub_arrays {
   public static void main(String args[]){
      //从用户处读取数组
      Scanner sc = new Scanner(System.in);
      System.out.println("输入要创建的数组的大小:");
      int size = sc.nextInt();
      int[] myArray = new int[size];
      System.out.println("输入数组的元素:");
      for(int i=0; i<size; i++){
         myArray[i] = sc.nextInt();
      }
      //读取数字
      System.out.println("输入所需总数:");
      int reqSum = sc.nextInt();
      System.out.println("创建的数组为:"+Arrays.toString(myArray));
      System.out.println("子数组总数为:"+reqSum);
      for(int i=0; i<myArray.length; i++){
         int sum = 0;
         for (int j=i; j<myArray.length; j++){
            sum = sum + myArray[j];
            if(sum == reqSum){
               System.out.println(Arrays.toString(Arrays.copyOfRange(myArray, i, j+1)));
            }
         }
      }
   }
}

输出

输入要创建的数组的大小:
10
输入数组的元素:
5
4
1
2
3
4
1
4
5
5
输入所需的和:
10
创建的数组为:[5, 4, 1, 2, 3, 4, 1, 4, 5, 5]
子数组的和为:10
[5, 4, 1]
[4, 1, 2, 3]
[1, 2, 3, 4]
[2, 3, 4, 1]
[1, 4, 5]
[5, 5]

相关文章