Java,从linkedlist参数返回一个链表

时间:2016-11-16 19:31:55

标签: java list methods collections parameters

我正在尝试创建一个方法,该方法返回列表中任何两位数的位值,该值总和为零。我遇到的问题是:创建返回方法类型,选择要传递的相应参数,并创建一个包含要返回的值的空列表。

非常感谢任何帮助!!

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

1 个答案:

答案 0 :(得分:0)

这可能是你的功课,所以我会给你一些指导性的想法;我不会为你做的工作!

首先,返回类型。事情是:你不能只返回单个号码。因为,您对数字感兴趣。因此,你需要一些像

这样的课程
public class IndexPair {
  private final int firstIndex;
  private final int secondIndex;

  public IndexPair(int first, int second) { this.firstIndex = first ...

然后你的方法可以简单地返回一个List<IndexPair>对象。注意:如果你在这里认真,你可能想要覆盖等于方法,例如;为了便于比较IndexPair对象。

当然:Java已经知道可以在这里使用的一些Pair类;而不是发明自己的东西。

另一个问题:找到那些对。一个天真的解决方案是:

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)) 
例如,

。但请理解:这是非常基本的东西。只需阅读列表和数组。这些事情已被记录很多次。