输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
输入:head = [1,3,2] 输出:[2,3,1]
可以利用栈的特性:先进后出。来完成这个题目,遍历head,遍历到为空为止,然后每一次遍历都取出val,压如栈中。
取出栈时就是到着的。
效率不太高
import sun.security.util.ArrayUtil;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @Auther: truedei
* @Date: 2020 /20-5-6 22:46
* @Description:
*/
public class TestA {
static public int[] reversePrint(ListNode head) {
Stack<Integer> stack = new Stack<>();
ListNode newLN = null;
while ((newLN=head)!=null){
stack.push(newLN.val);
head=head.next;
}
int[] ints = new int[stack.size()];
int i = 0;
while (!stack.empty()){
ints[i++] = stack.pop();
}
return ints;
}
public static void main(String[] args) {
ListNode a = new ListNode(1);
ListNode b = new ListNode(3);
ListNode c = new ListNode(2);
a.next=b;
b.next=c;
Long starTime = System.nanoTime(); // 纳秒
int[] ints = reversePrint(a);
System.out.println(ints.toString());
Long endTime = System.nanoTime() ; // 纳秒
System.out.println("+=用时:"+(endTime - starTime)+"纳秒");
}
}
class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}