我正在尝试创建一个方法,该方法返回列表中任何两位数的位值,该值总和为零。我遇到的问题是:创建返回方法类型,选择要传递的相应参数,并创建一个包含要返回的值的空列表。
非常感谢任何帮助!!
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
答案 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))
例如,。但请理解:这是非常基本的东西。只需阅读列表和数组。这些事情已被记录很多次。