剣指Offer第二面問題6(java実現)
1084 ワード
テーマの説明
チェーンを入力して、最後の端からチェーン値の順にArayListを返します。
問題を解く構想
一つの方法はスタックを利用して実現することである。 もう一つの方法は、3つのポインタを利用してリンクを反転させることであり、鍵はrポインタが切断されたノードを保存することである。
コードの実装
問題の要求によって、典型的な「後進先出」であることが分かりました。
また、針を反転させることで、反転針のコードを数日間かけて乗せることができます。
チェーンを入力して、最後の端からチェーン値の順にArayListを返します。
問題を解く構想
一つの方法はスタックを利用して実現することである。 もう一つの方法は、3つのポインタを利用してリンクを反転させることであり、鍵はrポインタが切断されたノードを保存することである。
コードの実装
import java.util.ArrayList;
import java.util.Stack;
// 。
public class Problem06a {
public class ListNode{
int val;
ListNode next = null;
ListNode(int val){
this.val = val;
}
}
public ArrayList printListFromTailToHead(ListNode listNode) {
if (listNode == null)
return new ArrayList<>();
Stack stack = new Stack<>();
ArrayList arrayList = new ArrayList<>();
while(listNode != null){
stack.push(listNode.val);
listNode = listNode.next;
}
while(!stack.isEmpty()){
arrayList.add(stack.pop());
}
return arrayList;
}
}
コードまとめ問題の要求によって、典型的な「後進先出」であることが分かりました。
また、針を反転させることで、反転針のコードを数日間かけて乗せることができます。