本文共 1238 字,大约阅读时间需要 4 分钟。
本系列文章为《剑指Offer》刷题笔记。
刷题平台:
思路【python】头插法
# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] def printListFromTailToHead(self, listNode): # write code here result=[] while listNode: result.insert(0, listNode.val) listNode = listNode.next return result
【C】
通常,这种情况下,我们不希望修改原链表的结构。返回一个反序的链表,这就是经典的“后进先出”,我们可以使用栈实现这种顺序。每经过一个结点的时候,把该结点放到一个栈中。当遍历完整个链表后,再从栈顶开始逐个输出结点的值,给一个新的链表结构,这样链表就实现了反转。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution { public: vector printListFromTailToHead(ListNode* head) { stack nodes; vector result; ListNode* node = head; while(node != NULL){ nodes.push(node->val); node = node->next; } while(!nodes.empty()){ result.push_back(nodes.top()); nodes.pop(); } return result; }};
参考 https://cuijiahua.com/blog/2017/11/basis_3.html
转载地址:http://uyjii.baihongyu.com/