中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

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
金阳县| 乐都县| 定结县| 金沙县| 丽江市| 广汉市| 安达市| 永善县| 上虞市| 科尔| 上栗县| 密云县| 漳平市| 前郭尔| 沭阳县| 文山县| 太保市| 永定县| 鲁山县| 南丹县| 北安市| 垣曲县| 土默特左旗| 河曲县| 龙江县| 乌鲁木齐市| 白沙| 兴化市| 元谋县| 武鸣县| 三门峡市| 开远市| 星座| 任丘市| 甘孜| 丹东市| 贵德县| 太仆寺旗| 普兰店市| 城市| 青海省|