【剑指offer】替换空格从尾到头打印链表

题目链接

【题目描述】

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。

【解题思路】

将链表的元素压入栈中(因为栈是先进后出的),然后再把栈中的元素放入vector即实现了倒序。

【代码】

 1 /**
 2 *  struct ListNode {
 3 *        int val;
 4 *        struct ListNode *next;
 5 *        ListNode(int x) :
 6 *              val(x), next(NULL) {
 7 *        }
 8 *  };
 9 */
10 class Solution {
11 public:
12     vector<int> printListFromTailToHead(ListNode* head) {
13         stack<int>st;
14         vector<int>v;
15         ListNode *node=head;
16         while(node!=NULL)
17         {
18             st.push(node->val);
19             node=node->next;
20         }
21         while(!st.empty())
22         {
23             v.push_back(st.top());
24             st.pop();
25         }
26         return v;
27     }
28 };

原文地址:https://www.cnblogs.com/z1014601153/p/11176295.html

时间: 2024-10-07 20:13:14

【剑指offer】替换空格从尾到头打印链表的相关文章

《剑指Offer》题目——从尾到头打印链表

题目描述:输入一个链表,从尾到头打印链表每个节点的值. 题目分析:用栈:Java用Stack不如用Deque接口,原因可以见链接:http://stackoverflow.com/questions/12524826/why-should-i-use-deque-over-stack public class ReverseList { class ListNode{ int val; ListNode next = null; ListNode(int val){ this.val = val

Java链表常见操作【剑指Offer】03:从尾到头打印链表

题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 题解一:递归 1 /* 2 在最后一次递归方法返回以后,每一层的递归方法都会做一个arrayList.add(listNode.val)这个操作, 3 从最后一次到第一次,逆向的调用了后面的方法 4 */ 5 static ArrayList<Integer> list = new ArrayList<>(); 6 public static ArrayList<Integer> printLis

剑指offer(3):从尾到头打印单链表

输入一个链表,从尾到头打印链表每个节点的值. /** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) * } * }; */ class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> inverse; stack&l

[剑指OFFER] 替换空格

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. 分析: 个人理解,应该是对空间复杂度有要求,如果没有要求,下面code就OK class Solution { public: string replaceSpace(string str) { string rtn; for(int i = 0; i < str.size(); i++) { if(str[i] == ' ') r

剑指offer替换空格

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 class Solution { public:     string replaceSpace(string str) {         stack<int> Mystack;     int length=str.length();     in

剑指offer | 从尾到头打印链表

题目描述: “输入一个链表,从尾到头打印链表每个节点的值.” 这是我做的<剑指offer>系列的第一题,好的开头就是成功的一半.然而,我提交了一次,WA!再提交,WA!Com'on! 看来我的开端并不顺利.不过我要的可不是成功的一半,这样的开端怎么能阻挡我AC之路!仔细看了一遍题目要求,看了提交格式.再提交! Finally,AC! 代码如下: 1 /** 2 * struct ListNode { 3 * int val; 4 * struct ListNode *next; 5 * Lis

【剑指offer】Q5:从尾到头打印链表

可以练习下链表的逆置. def PrintListReversingly(head): if head == None: return if head: PrintListReversingly(head.next) print head.val def reverse(head): if head == None or head.next == None: return head psuhead = ListNode(-1) while head: nexthead = head.next h

LeetCode | 面试题06. 从尾到头打印链表【剑指Offer】【Python】

LeetCode 面试题06. 从尾到头打印链表[剑指Offer][Easy][Python][链表] 问题 力扣 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 思路 解法一 reverse函数 时间复杂度: O(n),n为 head 链表长度. 空间复杂度: O(n),n为 head 链表长度. Python3代码 # Definition for si

《剑指offer》— JavaScript(3)从尾到头打印链表

从尾到头打印链表 题目描述 输入一个链表,从尾到头打印链表每个节点的值. 实现代码 /*function ListNode(x){ this.val = x; this.next = null; }*/ function printListFromTailToHead(head) { var res=[]; while(head){ res.unshift(head.val); head=head.next; } return res; } 相关知识 创建一个链表,并实现插入,删除,添加的方法