zoukankan      html  css  js  c++  java
  • 牛客剑指Offer3

    题目描述
    输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
    题解:
    1.分析 listNode 是链表,只能从头遍历到尾,但是输出却要求从尾到头,这是典型的"先进后出",我们可以想到栈!ArrayList 中有个方法是 add(index,value),可以指定 index 位置插入 value 值
    所以我们在遍历 listNode 的同时将每个遇到的值插入到 list 的 0 位置,最后输出 listNode 即可得到逆序链表

    代码如下:

    import java.util.*;
    public class Solution {    
    	public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    	        ArrayList<Integer> list = new ArrayList<>();        
    		ListNode tmp = listNode;        
    		while(tmp!=null){            
    		list.add(0,tmp.val);            
    		tmp = tmp.next;        
    		}        
    		return list;    
    	}
    }

    复杂度

    • 时间复杂度:O(n)O(n)O(n)
    • 空间复杂度:O(n)O(n)O(n)

    2.分析:栈打印出来
    代码如下:

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

    ** 复杂度**

    • 时间复杂度:O(n)O(n)O(n)
    • 空间复杂度:O(n)O(n)O(n)
    别废话,拿你代码给我看。
  • 相关阅读:
    BFGS(1)
    局部加权之线性回归(1)
    遗传算法(1)
    Python扩展(Cython混编)
    梯度下降算法(1)
    Python矩阵作图库matplotlib的初级使用
    搭建FTP服务器与客户端(1)
    maven常见小问题整理
    git常用命令问题整理
    maven常用命令整理
  • 原文地址:https://www.cnblogs.com/lvxueyang/p/13707485.html
Copyright © 2011-2022 走看看