91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java如何實現反轉列表

小億
83
2023-10-22 08:18:59
欄目: 編程語言

可以使用遞歸或迭代的方式來實現反轉鏈表。

遞歸方式:

class ListNode {
    int val;
    ListNode next;
    ListNode(int val) {
        this.val = val;
    }
}

public class Solution {
    public ListNode reverseList(ListNode head) {
        // 如果鏈表為空或只有一個節點,無需反轉,直接返回原鏈表頭節點
        if (head == null || head.next == null) {
            return head;
        }
        
        ListNode newHead = reverseList(head.next); // 反轉以head.next為頭節點的子鏈表
        head.next.next = head; // 將head節點連接到反轉后的子鏈表的尾部
        head.next = null; // 將head節點的next置為null
        
        return newHead; // 返回新的頭節點
    }
}

迭代方式:

class ListNode {
    int val;
    ListNode next;
    ListNode(int val) {
        this.val = val;
    }
}

public class Solution {
    public ListNode reverseList(ListNode head) {
        // 如果鏈表為空或只有一個節點,無需反轉,直接返回原鏈表頭節點
        if (head == null || head.next == null) {
            return head;
        }
        
        ListNode prev = null; // 當前節點的前一個節點
        ListNode curr = head; // 當前節點
        
        while (curr != null) {
            ListNode next = curr.next; // 當前節點的下一個節點
            curr.next = prev; // 反轉指針指向前一個節點
            prev = curr; // 更新當前節點的前一個節點
            curr = next; // 更新當前節點為下一個節點
        }
        
        return prev; // 返回新的頭節點
    }
}

以上是兩種常見的反轉鏈表的實現方式。

0
日照市| 盐源县| 兴隆县| 桑植县| 江门市| 拉萨市| 江西省| 偃师市| 盐池县| 株洲县| 博客| 江门市| 响水县| 平安县| 德兴市| 武功县| 麦盖提县| 毕节市| 当涂县| 香格里拉县| 白水县| 女性| 门源| 威远县| 彝良县| 乌兰浩特市| 东平县| 韶山市| 中西区| 重庆市| 漳州市| 长沙市| 正蓝旗| 富蕴县| 九江县| 天津市| 乌恰县| 镇远县| 麟游县| 渝北区| 陵川县|