首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java,从linkedlist参数返回linkedlist。

Java,从linkedlist参数返回linkedlist。
EN

Stack Overflow用户
提问于 2016-11-16 19:31:55
回答 1查看 1K关注 0票数 1

我正在尝试创建一个方法,该方法返回列表中任何两位数字的位置值,该值之和为零。我陷入困境的地方是:创建返回方法类型,选择要传递的适当参数,并创建一个空列表,该列表保存要返回的值。

任何帮助都将不胜感激!!

代码语言:javascript
复制
public class TwoSums {

public LinkedList<Integer> sum_values(LinkedList<Integer> input){

(上面)我正在尝试(但不确定如何)从该方法返回一个链接列表。我希望参数是一个具有{3,-3,0,1}值的列表。我也不确定返回类型应该在这里。

代码语言:javascript
复制
    int iterator = 0;
    int scanner = 0;
    LinkedList positions = new LinkedList<Integer>();

(上图)我试图创建一个空列表,如果参数之和为零,可以将参数的位置值推入其中。

代码语言:javascript
复制
    while(iterator<input.length){ 
        if (iterator + scanner !=0){
            scanner ++;}
        else if (iterator + scanner ==0){
            //push iterator and scanner values to the linkedlist
EN

回答 1

Stack Overflow用户

发布于 2016-11-16 19:35:29

这可能是你的作业,所以我会给你一些指导思想,我不会为你做这项工作!

首先,返回类型。问题是:你不能只返回单个数字。因为,您对数字的感兴趣。因此,您需要一些类,例如

代码语言:javascript
复制
public class IndexPair {
  private final int firstIndex;
  private final int secondIndex;

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

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

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

另一个问题是找到那对。一个天真的解决办法是:

代码语言:javascript
复制
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));

如前所述,以上这些都是为了让你走。在这段代码中可能会有一些打印错误或一些细微的错误。以它为灵感,并与它一起工作,直到它做你所需要的!

编辑:调用您的方法如下

代码语言:javascript
复制
List<IndexPair> pairs = sum_values(Arrays.asList(-3, 3, 0, 0)) 

例如。但请理解:这是非常基本的东西。只需对列表和数组进行一些读取即可。这些事情已经被记录了很多次了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40640725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档