当前位置: 首页 > news >正文

微信小程序建站一键网站建站系统

微信小程序建站,一键网站建站系统,dw做网站怎么跳转,注册公司不经营一年费用目录剑指 Offer 06. 从尾到头打印链表剑指 Offer 24. 反转链表剑指 Offer 35. 复杂链表的复制剑指 Offer 06. 从尾到头打印链表 原题链接:06. 从尾到头打印链表 最容易想到的思路就是先从头到尾打印下来,然后 reverse 一下,但这里我们使用递归…

目录

  • 剑指 Offer 06. 从尾到头打印链表
  • 剑指 Offer 24. 反转链表
  • 剑指 Offer 35. 复杂链表的复制

剑指 Offer 06. 从尾到头打印链表

原题链接:06. 从尾到头打印链表

最容易想到的思路就是先从头到尾打印下来,然后 reverse 一下,但这里我们使用递归。

class Solution {
public:vector<int> reversePrint(ListNode *head) {if (head == nullptr) return {};auto res = reversePrint(head->next);res.push_back(head->val);return res;}
};

递归的缺点是元素一多容易爆栈,我们还可以利用栈的特性来完成这道题。

剑指 Offer 24. 反转链表

原题链接:24. 反转链表

递归解法(清晰易懂):

class Solution {
public:ListNode *reverseList(ListNode *head) {if (!head || !head->next) return head;auto newHead = reverseList(head->next);head->next->next = head;head->next = nullptr;return newHead;}
};

当链表长度为 000111 时,无需反转。

考虑链表 1→2→3→4→∅1\to2\to3\to4\to\varnothing1234,当调用 reverseList(1->next) 后,链表变成 1→2←3←41\to2\leftarrow3\leftarrow41234,此时需要让 222 指向 111,即 2->next = 1,相当于 1->next->next = 1,之后还需要让 111 指向 ∅\varnothing,即 1->next = nullptr

迭代解法:

class Solution {
public:ListNode *reverseList(ListNode *head) {ListNode *pre = nullptr;ListNode *cur = head;while (cur) {ListNode *tmp = cur->next;cur->next = pre;pre = cur;cur = tmp;}return pre;}
};

设置两个指针,每次让后一个节点指向前一个节点,然后两个指针同时右移一位。

剑指 Offer 35. 复杂链表的复制

原题链接:35. 复杂链表的复制

我们先来看一下普通链表是如何复制的。

class Node {
public:int val;Node *next;Node() : val(0), next(nullptr) {}Node(int _val) : val(_val), next(nullptr) {}Node(int _val, Node *_next) : val(_val), next(_next) {}
};class Solution {
public:Node *copyList(Node *head) {Node *cur = head;Node *dummy = new Node(-1), *pre = dummy;while (cur) {Node *newNode = new Node(cur->val);pre->next = newNode;cur = cur->next, pre = pre->next;  // cur在原链表上移动,pre在新链表上移动}return dummy->next;}
};

因为普通链表只有一个 next 指针且指向下一个节点,所以我们可以用迭代的方法复制一个普通链表(当然也可以递归)。但是复杂链表还有一个 random 指针指向随机一个节点,所以迭代方法失效。

我们可以通过哈希表来建立原链表和新链表之间的对应关系,具体来说,map[原链表中的某个节点] = 新链表中相应的节点,这样就可以随机访问新链表中的节点了。

class Solution {
public:Node *copyRandomList(Node *head) {if (!head) return head;unordered_map<Node *, Node *> map;Node *cur = head;while (cur) {map[cur] = new Node(cur->val);cur = cur->next;}cur = head;while (cur) {map[cur]->next = map[cur->next];map[cur]->random = map[cur->random];cur = cur->next;}return map[head];}
};
http://www.yayakq.cn/news/367122/

相关文章:

  • 大型门户网站建设是什么什么专业会制作网站
  • 外管局网站做延期收款报告学做网站要代码
  • 网站建设与实践全新的手机网站设计
  • 网站建设怎么翻译郑州seo哪家专业
  • 云南省建设厅网站地址前端响应式网站
  • 站长素材免费下载企业域名怎么填写
  • 石狮网站建设费用外贸平台有哪些?
  • php电商网站开发流程小程序首页模板
  • 一站式服务就像一个什么wordpress小工具文件
  • 内蒙古集宁建设厅官方网站微信建设网站哪家好
  • 北沙滩网站建设搜索引擎优化关键词选择的方法有哪些
  • 微网站开发技术微信小程序开发费用一览表
  • 工商局网站做年报网站如何发布到网上
  • 深圳网站做的好的公司名称响应式网站样式图怎么做
  • 苏州市建设培训网站安全员C类查询免费个人网站制作在线
  • 上海专业网站建设咨询新浪网网站的建设费用预算
  • seo免费优化网站郑州网站建设规划
  • 网站导航网站可以做吗平顶山公司做网站
  • 0317网站建设网站怎么做微信支付功能
  • 深圳网站制作公司深圳app开发wordpress导入淘宝
  • 里水网站开发公众号怎么转wordpress
  • 湛江网站建站建设南京建站公司哪家好
  • 怎么增加网站的外链软件开发行业发展前景
  • 江苏省建设工程管理局网站wordpress 做的人多吗
  • 国外购物网站排行榜上海崇明林业建设有限公司 网站
  • 医院网站怎么做运营网站改版制作
  • seo是什么的seoaoo
  • 南沙免费网站建设简单的个人主页网站制作
  • 手机网站和微信网站的区别云南红舰工贸有限公司的网站建设
  • 备案网站管理系统观察者网wordpress