zoukankan      html  css  js  c++  java
  • 剑指offer——从尾到头打印链表

    输入一个链表,从尾到头打印链表每个节点的值。

    /**
    *    public class ListNode {
    *        int val;
    *        ListNode next = null;
    *
    *        ListNode(int val) {
    *            this.val = val;
    *        }
    *    }
    *
    */
    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            
        }
    }
    

      

    可以利用的先入后出的特点,顺序遍历链表,将数据压入栈中,最后在从栈中弹出到结果ArrayList中即可

    ArrayList的初始化

    ArrayList<Integer> arrayList = new ArrayList<Integer>();
    

      

    其次,集合的大小用size(),数组的大小用length()

    ArrayList的t添加:add(E object)

    获取:get(int location)

    ArrayList的遍历方式

    public class ArrayListDemo {  
        public static void main(String[] args) {  
            List<String> al = new ArrayList<String>();  
            al.add("wangw1");  
            al.add("wangw3");  
            al.add("wangw4");  
            al.add("wangw5");  
              
            //遍历方式1  
            Iterator<String> it1 = al.iterator();  
            while(it1.hasNext()){  
                System.out.println(it1.next());  
            }  
              
            //遍历方式2  
            for(Iterator it2 = al.iterator();it2.hasNext();){  
                System.out.println(it2.next());  
            }  
              
            //遍历方式3  
            for(String temp:al){  
                System.out.println(temp);  
            }  
              
            //遍历方式4  
            for(int i = 0;i<al.size();i++){  
                System.out.println(al.get(i));  
            }  
        }  
    }  
    

      

    自己的解法:

    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            if(listNode == null || listNode.next == null){
                return new ArrayList<Integer>();
            }
            ArrayList<Integer> array = new ArrayList<Integer>();
            ListNode list = listNode;
            while(list.next != null){
                array.add(list.val);
                list = list.next;
            }
            ArrayList<Integer> arrayList = new ArrayList<Integer>();
            arrayList.add(list.val);
            for(int i = array.size() - 1; i >= 0; --i ){
                arrayList.add(array.get(i));
            }
            return arrayList;
        }
    }
    

      

    利用栈:

    import java.util.Stack;
    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            if(listNode == null || listNode.next == null){
                return new ArrayList<Integer>();
            }
            Stack<Integer> stack = new Stack<>();
            while(listNode != null){
                stack.push(listNode.val);
                listNode = listNode.next;
            }
            ArrayList<Integer> arrayList = new ArrayList<>();;
            while(!stack.empty()){
                arrayList.add(stack.pop());
            }
            return arrayList;
        }
    }
    

      

    别人的递归调用:

    注意返回结果arrayList是定义在外面的,而且,里面遍历链表是用的if,不是循环

    import java.util.ArrayList;
    public class Solution {
        ArrayList<Integer> arrayList = new ArrayList<>();
        public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
            if(listNode != null){
                this.printListFromTailToHead(listNode.next);
                arrayList.add(listNode.val);
            }
            return arrayList;
        }
    }
    

      

  • 相关阅读:
    Codeforces 934 B.A Prosperous Lot
    Codeforces 934 A.Compatible Pair
    UVA 12898
    Codeforces Round #376 (Div. 2) C. Socks bfs
    Codeforces Round #377 (Div. 2) C. Sanatorium 水题
    Codeforces Round #377 (Div. 2) D. Exams 二分
    Codeforces Beta Round #91 (Div. 1 Only) E. Lucky Array 分块
    hdu 5154 Harry and Magical Computer 拓扑排序
    Codeforces Round #272 (Div. 2) C. Dreamoon and Sums 数学
    Codeforces Round #288 (Div. 2) C. Anya and Ghosts 模拟
  • 原文地址:https://www.cnblogs.com/SkyeAngel/p/8521239.html
Copyright © 2011-2022 走看看