剑指offer3|剑指offer3 从头到尾打印链表
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
【剑指offer3|剑指offer3 从头到尾打印链表】
package z_jzoffer.jz3; /** * @author houChen * @date 2020/8/18 11:24 * @Description: */ public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }
package z_jzoffer.jz3; /** *输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 */ import java.util.ArrayList; import java.util.List; public class Solution3 {public ArrayListprintListFromTailToHead(ListNode listNode) {//保存返回的结果 ArrayList list = new ArrayList<>(); //获取链表的长度 int len = 0; ListNode cur = listNode; while(cur!=null){ len++; cur=cur.next; }//从后向前取出链表中的元素放入list中 int count = 1; //计数器 cur = listNode; while(true){ if(len<1){ break; //链表中的元素取完了 } if(count==len){ // 如果找到了第len个元素,就找len-1个元素 list.add(cur.val); len--; count=1; cur=listNode; continue; } count++; cur = cur.next; } return list; } }
package z_jzoffer.jz3; import java.util.ArrayList; /** * @author houChen * @date 2020/8/18 11:40 * @Description: */ public class Solution3Test { public static void main(String[] args) { ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(3); ListNode node4 = new ListNode(4); node1.next=node2; node2.next=node3; node3.next = node4; Solution3 s = new Solution3(); ArrayListlist = s.printListFromTailToHead(node1); for(Integer ele : list){ System.out.println(ele); } } }
推荐阅读
- 剑指|剑指 Offer 13. 机器人的运动范围(dfs,bfs)
- 剑指offer60.n个骰子的点数
- 剑指offer——最小的K个数
- 剑指黄昏
- 剑指offer15.二进制中1的个数
- 力扣OJ|力扣OJ 剑指 Offer 12. 矩阵中的路径
- 里皮(与国足续约三年,剑指卡塔尔世界杯)
- 剑指offer2|剑指offer2 替换空格
- 剑指offer1|剑指offer1 二维数组中的查找
- 剑指offer|剑指offer、牛客-二维数组的查找