我正在尝试创建一个方法,该方法返回列表中任何两位数字的位置值,该值之和为零。我陷入困境的地方是:创建返回方法类型,选择要传递的适当参数,并创建一个空列表,该列表保存要返回的值。
任何帮助都将不胜感激!!
public class TwoSums {
public LinkedList<Integer> sum_values(LinkedList<Integer> input){(上面)我正在尝试(但不确定如何)从该方法返回一个链接列表。我希望参数是一个具有{3,-3,0,1}值的列表。我也不确定返回类型应该在这里。
int iterator = 0;
int scanner = 0;
LinkedList positions = new LinkedList<Integer>();(上图)我试图创建一个空列表,如果参数之和为零,可以将参数的位置值推入其中。
while(iterator<input.length){
if (iterator + scanner !=0){
scanner ++;}
else if (iterator + scanner ==0){
//push iterator and scanner values to the linkedlist发布于 2016-11-16 19:35:29
这可能是你的作业,所以我会给你一些指导思想,我不会为你做这项工作!
首先,返回类型。问题是:你不能只返回单个数字。因为,您对数字的对感兴趣。因此,您需要一些类,例如
public class IndexPair {
private final int firstIndex;
private final int secondIndex;
public IndexPair(int first, int second) { this.firstIndex = first ...然后,您的方法可以简单地返回一个List<IndexPair>对象。注意:如果您在这里是认真的,您可能想要覆盖等于方法,例如,为了便于对IndexPair对象进行比较。
当然,Java已经知道了一些可以在这里使用的对类,而不是自己发明的东西。
另一个问题是找到那对。一个天真的解决办法是:
List<IndexPair> results = new ArrayList<>();
for (int firstIndex = 0; firstIndex < input.size(); firstIndex++) {
for (int secondIndex = firstIndex+1; secondIndex < input.size(); secondIndex++) {
if (input.get(firstIndex) + input.get(secondIndex) == 0) {
results.add(new IndexPair(firstIndex, secondIndex));如前所述,以上这些都是为了让你走。在这段代码中可能会有一些打印错误或一些细微的错误。以它为灵感,并与它一起工作,直到它做你所需要的!
编辑:调用您的方法如下
List<IndexPair> pairs = sum_values(Arrays.asList(-3, 3, 0, 0)) 例如。但请理解:这是非常基本的东西。只需对列表和数组进行一些读取即可。这些事情已经被记录了很多次了。
https://stackoverflow.com/questions/40640725
复制相似问题