5、从尾到头打印链表

1、不使用栈

public int[] reversePrint(ListNode head) {
        //先获取链表长度,创建对应长度数组
        ListNode currNode = head;
        int len = 0;
        while(currNode != null){
            len ++;
            currNode = currNode.next;
        }
        int[] result = new int[len];
        
        //再次遍历链表,将值倒序填充至结果数组
        currNode = head;
        while(currNode != null){
            result[len - 1] = currNode.val;
            len --;
            currNode = currNode.next;
        }
        return result;
    }

2、使用栈

class Solution {
    public int[] reversePrint(ListNode head) {
        // null
        //1
        //3 > 2 > 4 > 5
        // 0n 0n %%%
        if (head == null){
            return new int[]{};
        }
        Deque<Integer> dq = new ArrayDeque<>();
        while (head != null){
            dq.push(head.val);
            head = head.next;
        }
        int n = dq.size();
        int[] result = new int[n];
        for (int i = 0; i < n;i++){
            result[i] = dq.pop();
        }
        return result;
    }
}
posted @ 2021-04-17 16:46  backTraced  阅读(48)  评论(0)    收藏  举报