[面试题06]从未到头打印链表(LeetCode-剑指Offer)

简介: [面试题06]从未到头打印链表(LeetCode-剑指Offer)
//输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 
//
// 
//
// 示例 1: 
//
// 输入:head = [1,3,2]
//输出:[2,3,1] 
//
// 
//
// 限制: 
//
// 0 <= 链表长度 <= 10000 
//
//leetcode submit region begin(Prohibit modification and deletion)
import java.util.ArrayList;
import java.util.List;
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public int[] reversePrint(ListNode head) {
        List<Integer> list = new ArrayList<>();
        while (head!=null){
            list.add(head.val);
            head = head.next;
        }
        int [] in = new int[list.size()];
        for (int i = list.size()-1; i >= 0 ; i--) {
            in[(list.size()-i-1)] = list.get(i);
        }
        return in;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

用了三种办法来做了,其他两种都不太理想:

第二种

static  public int[] reversePrint(ListNode head) {
        StringBuffer sb = new StringBuffer();
        while (head!=null){
            sb.append(head.val);
            head = head.next;
        }
        int [] in = new int[sb.length()];
//        for (int i =   sb.length()-1; i >= 0; i--) {
//            System.out.println("a="+sb.charAt(i)+"---->"+(sb.length()-i-1));
//        }
        for (int i = sb.length()-1; i >= 0 ; i--) {
            in[(sb.length()-i-1)] = Integer.valueOf(String.valueOf(sb.charAt(i)));
        }
        return in;
    }

第三种

public int[] reversePrint1(ListNode head) {
        String s = "";
        while (head!=null){
            s = s +head.val + ",";
            head = head.next;
        }
        s = s.substring(0,s.length()-1); //去掉最后一个空格。
        String[] split = s.split(",");
        for (int i = 0; i < split.length; i++) {
        }
        int [] in = new int[split.length];
        int j = 0;
        for (int i = split.length-1; i >= 0 ; i--) {
            in[j] = Integer.valueOf(split[i]);
            j++;
        }
        return in;
    }
目录
相关文章
|
2月前
【力扣】-- 移除链表元素
【力扣】-- 移除链表元素
40 1
|
2月前
Leetcode第21题(合并两个有序链表)
这篇文章介绍了如何使用非递归和递归方法解决LeetCode第21题,即合并两个有序链表的问题。
53 0
Leetcode第21题(合并两个有序链表)
|
2月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
30 0
LeetCode第二十四题(两两交换链表中的节点)
|
2月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
47 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
2月前
|
存储 算法 安全
HashMap常见面试题(超全面):实现原理、扩容机制、链表何时升级为红黑树、死循环
HashMap常见面试题:红黑树、散列表,HashMap实现原理、扩容机制,HashMap的jd1.7与jdk1.8有什么区别,寻址算法、链表何时升级为红黑树、死循环
|
2月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
101 0
|
2月前
【LeetCode 10】142. 环形链表 II
【LeetCode 10】142. 环形链表 II
23 0
|
2月前
【LeetCode 09】19 删除链表的倒数第 N 个结点
【LeetCode 09】19 删除链表的倒数第 N 个结点
19 0
|
2月前
【LeetCode 08】206 反转链表
【LeetCode 08】206 反转链表
13 0
|
2月前
【LeetCode 06】203.移除链表元素
【LeetCode 06】203.移除链表元素
34 0

热门文章

最新文章