TOC](目次のタイトルをここに書いてください)
1.タイトル
2.私の最初の考えと問題
この問題には、反復的かつ再帰的な解決策が必要です。
反復法は単純で簡単です。
再帰については考えていませんでした。再帰的な解決策があることを知っていたので、しばらくはわかりませんでした。解決策を見て理解してください。
3.問題解決方法1:反復
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode temp = head;
while(temp != null){
ListNode nextTemp =temp.next;
temp.next = prev;
prev = temp;
temp = nextTemp;
}
return prev;
}
}
4.問題解決方法2:再帰
class Solution {
public ListNode reverseList(ListNode head) {
//1.求解基本问题
if(head == null || head.next == null){
return head;
}
//2.将大问题如何变成小问题
ListNode temp = reverseList(head.next);
//3.小问题的解如何变成大问题的解
head.next.next = head;
head.next = null;
return temp;
}
}
最初の2つのステップはここに書くことができます。3番目のステップは最初は少しわかりにくいです。たとえば、3-> 4を逆にする場合、head.next.next = head;実現4は3、headを指します。 next = null;実現3nullを指します。後でもう一度練習してください。