所以我正在處理這個代碼,用戶在方法xify(x)中輸入一個int數組x。然後應該返回每個元素的數量。所以,如果x
是數組[4, 2, 3]
,我們應該返回頭部列表:4 4 4 4 2 2 3 3 3
。如何返回一個數組作爲節點列表
但是,看來我的方法只是返回一個空列表。我似乎無法追蹤到底是什麼問題。下面我提供了我的xify()
方法,以及一個名爲add的助手方法,可以將節點添加到列表中。
public static Node<Integer> xify(int[] x){
Node<Integer> result = new Node<>(null, null);
int counter=0;
int length=x.length;
while(counter<length){ //loop through the array
while(x[counter]!=0){ //take each element, add it to the list * int of the elem
add(result,x[counter]);
x[counter]=x[counter]-1;}
counter++;
}
return result;
}
helper方法:
public static<T> void add(Node<T> list, T element){
while(list.getNext()!=null){
list=list.getNext();
}
list.setNext(new Node<>(element, null));
}
什麼是錯我的算法?
P.S正如你可能已經看到的那樣,它正在使用泛型,因爲這是我目前正在學習的東西。
如何,我叫它:
System.out.println(xify(array));
System.out.println(toString(xify(array)));
我希望你的問題是'add(result,x [counter]);'因爲java不是'pass-by-referenced',因此如果你在'add'函數中添加元素,它不會影響你的結果'變量。 – pooyan
@pooyan是的,它會的。 'result'將會發生變異 – Bohemian
@pooyan是的,我的朋友,add函數可以正常工作,我已經使用它了,它完成了它的目的。我只需要我的xify算法的幫助,我假設 – MSK