JAVA实现,寻找数组中元素相加的和为0的元素个数的最大值,并输出子数组元素

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

题目:寻找一个数组中连续几个元素,和为0,且这几个元素为这个数组中连续个数最多的几个元素,并且输出打印这些元素。

输入样例:

1 2 3 0 -3 -2 1

1 2 3 0 -3 -2 1 0 -2 -3 2 3

输出样例:

2 3 0 -3 -2

1 2 3 0 -3 -2 1 0 -2 -3 2 3

------------------------------------------------I am a Dividing line---------------------------------------------

java代码:

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

/**

* 连续子数组和为0的最大个数

*

* @author ForeverLover

*

*/

public class ArrayLine {

public static void main(String[] args) {

while (true) {

// ---------------输入-----------------//

Scanner scan = new Scanner(System.in);

String s = scan.nextLine();

String[] sa = s.split(" ");

int[] array = new int[sa.length];

for (int i = 0; i < array.length; i++)

array[i] = Integer.parseInt(sa[i]);

// --------------寻找数组------------------//

List<Integer> list = new ArrayList<Integer>();

List<Integer> result = new ArrayList<Integer>();

for (int i = 0; i < array.length; i++) {

int sum = array[i];

result.clear();

result.add(array[i]);

for (int j = i + 1; j < array.length; j++) {

if ((sum += array[j]) == 0) {

result.add(array[j]);

if (result.size() >= list.size()) {

list.clear();

list.addAll(result);

}

} else

result.add(array[j]);

}

}

// ---------------输出------------------//

for (int i = 0; i < list.size(); i++) {

if (i != list.size() - 1)

System.out.PRint(list.get(i) + " ");

else

System.out.println(list.get(i));

}

}

}

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航