题目描述:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
示例1
输入
复制
{67,0,24,58}
返回值
复制
[58,24,0,67]
解题思路:1.然后遍历那个要逆转的链使用ArrayList的方法头插
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
import java.util.ArrayList;
public class InvertedLinkedList {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ListNode cur = listNode;
ArrayList<Integer> array = new ArrayList<>();
while (cur != null) {
array.add(0,cur.val); // ArrayList 方法将
cur = cur.next;
}
return array;
}
}
思路2:先反转链表,然后在遍历反转链表,将内容添加到数组里
//反转链表
ArrayList<Integer> array = new ArrayList<>();
if (listNode == null){
return array;
}
ListNode cur = listNode.next;
ListNode newHead = listNode;
ListNode temp = null ;
while (cur!=null){
temp = cur.next;
cur.next = newHead;
newHead = cur ;
cur = temp;
}
listNode.next = null; // 将最后一个节点指向对象清为null 否则就会最后二个无限循环
while (newHead!=null) {
array.add(newHead.val);
newHead =newHead.next;
}
return array;
}