书中方法一:反转应该立刻想到栈,利用一个栈完成链表的反转打印,但是用了额外的O(n)空间. public void printFromTail(ListNode first){ Stack<ListNode> stack = new Stack<ListNode>(); while(first != null){ stack.push(first); first = first.next; } while(!stack.isEmpty()){ System.out.print(st…
面试题 6. 从尾到头打印链表 NowCoder 题目描述 输入一个链表的头结点,从尾到头反过来打印出每个结点的值. Java 实现 ListNode Class class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } @Override public String toString() { return val + "->" + next; } } 使用递归 im…
问题描述:输入一个链表的头结点,从尾巴到头反过来打印出每个结点的值. 首先定义链表结点 public class ListNode { int val; ListNode next = null; ListNode(int val){ this.val = val; } } 思路1:此题明显想到是利用栈的思想,后进先出,先遍历链表,依次将结点值进栈.最后在遍历栈出栈. public static Stack<Integer> printListReverse_Stack(ListNode li…
重要思路: 这个问题肯定要遍历链表,遍历链表的顺序是从头到尾,而要输出的顺序却是从尾到头,典型的“后进先出”,可以用栈实现. 注意stl栈的使用,遍历stack的方法. #include <iostream> #include <stack> using namespace std; class Node { public: Node(int v, Node* n) {val = v; next = n;} ~Node(){} int val; Node* next; }; Nod…
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 思路一:反转数组 代码 时间复杂度:O(n) 空间复杂度:O(1) class Solution { public: vector<int> reversePrint(ListNode* head) { vector<int> res; if (!head) return res;…
问题描述 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class So…
方法一:采用栈来存储,用ArrayList保存.注意题目给出的输出结果是ArrayList import java.util.ArrayList; import java.util.Stack; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack=new Stack<>(); ArrayLis…
题目:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 分析:若不允许修改原链表的值,则可以使用栈来实现,也可以使用另外一个ArrayList做中转的数据. public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> arrayList = new ArrayList<>(); Stack<Integer> stack =…
一.前言 刷题平台:牛客网 二.题目 输入一个链表,返回一个反序的链表. 1.思路 通常,这种情况下,我们不希望修改原链表的结构.返回一个反序的链表,这就是经典的"后进先出",我们可以使用栈实现这种顺序.每经过一个结点的时候,把该结点放到一个栈中.当遍历完整个链表后,再从栈顶开始逐个输出结点的值,给一个新的链表结构,这样链表就实现了反转. 2.代码 Python: 直接使用列表的插入方法,每次插入数据,只插入在首位. # -*- coding:utf-8 -*- # class Lis…
题目:请实现一个函数,把字符串中的每个空格替换成“%20”.例如输入“We are happy”,则输出”We%20are%20happy”. 原因:在网络编程中,如果URL参数中含有特殊字符,如:空格.“#”等,可能导致服务器端无法获得正确的参数值.我们需要将这些特殊符号转换成服务器识别的字符.转换规则是在“%”后面跟上ASCII码的两位十六进制的表示.比如:空格的ASCII码是32,即十六进制的0x20,因此空格被替换成“%20”. 时间复杂度为O(n2)不足以拿到Offer 现在我们考虑怎…