我正在尝试创建一个方法,该方法返回列表中任意两位数字总和为零的位置值。我遇到困难的地方是:创建返回方法类型,选择要传递的适当参数,以及创建一个包含要返回的值的空列表。
任何帮助将不胜感激!!
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
最佳答案
这可能是你的作业,所以我只是给你一些指导性的想法;我不会为你做这些工作!
首先,返回类型。问题是:你不能只返回单个数字。因为,您对数字对感兴趣。因此你需要一些类似的类(class)
public class IndexPair {
private final int firstIndex;
private final int secondIndex;
public IndexPair(int first, int second) { this.firstIndex = first ...
然后你的方法可以简单地返回 List<IndexPair>
目的。注意:如果你是认真的,你会想重写 equals 方法;以便轻松比较 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))
例如。但请理解:这确实是基本的东西。只需阅读一些有关列表和数组的内容即可。这些事情已经被记录很多次了。
关于Java,从链表参数返回链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40640725/