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

成都房地产网seo快速排名的方法

成都房地产网,seo快速排名的方法,北京网站建设培训学校,教做公众号的网站力扣 Hot 100 刷题记录 - 随机链表的复制 题目描述 随机链表的复制 是力扣 Hot 100 中的一道经典题目,题目要求如下: 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random,该指针可以指向链表中的任何节点或空…

力扣 Hot 100 刷题记录 - 随机链表的复制

题目描述

随机链表的复制 是力扣 Hot 100 中的一道经典题目,题目要求如下:

给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random,该指针可以指向链表中的任何节点或空节点。

构造这个链表的 深拷贝。深拷贝应该正好由 n 个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点

示例 1:
输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]

示例 2:
输入:head = [[1,1],[2,1]]
输出:[[1,1],[2,1]]

示例 3:
输入:head = [[3,null],[3,0],[3,null]]
输出:[[3,null],[3,0],[3,null]]


解题思路

这道题的核心是复制一个带有随机指针的链表,难点在于如何处理 random 指针的指向。常用的方法是 哈希表原地复制,具体步骤如下:

  1. 哈希表法

    • 使用哈希表存储原节点和新节点的映射关系。
    • 第一次遍历链表,创建新节点并建立映射。
    • 第二次遍历链表,根据哈希表设置新节点的 nextrandom 指针。
  2. 原地复制法

    • 在原链表的每个节点后面插入一个新节点,新节点的值与原节点相同。
    • 设置新节点的 random 指针。
    • 分离原链表和新链表。

C++ 代码实现

方法一:哈希表法

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = nullptr;random = nullptr;}
};
*/
class Solution {
public:Node* copyRandomList(Node* head) {if (!head) return nullptr;// 哈希表:原节点 -> 新节点unordered_map<Node*, Node*> map;// 第一次遍历:创建新节点并建立映射Node* curr = head;while (curr) {map[curr] = new Node(curr->val);curr = curr->next;}// 第二次遍历:设置新节点的 next 和 random 指针curr = head;while (curr) {map[curr]->next = map[curr->next];map[curr]->random = map[curr->random];curr = curr->next;}return map[head]; // 返回新链表的头节点}
};
### 方法一:原地复制法
class Solution {
public:Node* copyRandomList(Node* head) {if (!head) return nullptr;// 第一步:在每个原节点后面插入一个新节点Node* curr = head;while (curr) {Node* newNode = new Node(curr->val);newNode->next = curr->next;curr->next = newNode;curr = newNode->next;}// 第二步:设置新节点的 random 指针curr = head;while (curr) {if (curr->random) {curr->next->random = curr->random->next;}curr = curr->next->next;}// 第三步:分离原链表和新链表Node* newHead = head->next;curr = head;while (curr) {Node* newNode = curr->next;curr->next = newNode->next;if (newNode->next) {newNode->next = newNode->next->next;}curr = curr->next;}return newHead; // 返回新链表的头节点}
};
http://www.dtcms.com/wzjs/77900.html

相关文章:

  • 车身做网站宣传图app开发公司哪家好
  • 做网站开发学什么如何找友情链接
  • 湖南网络公司网站建设佛山百度网站排名优化
  • 半导体网站建设郑州好的seo外包公司
  • 通过网络营销学到了什么seo整合营销
  • 404过多会不会影响网站排名下载百度手机助手
  • 九 网站建设日程表渠道策略的四种方式
  • 做外贸网站好还是内贸网站好网络推广优化培训
  • 微信oa系统seo优化排名服务
  • 做网站的滚动字幕怎么制作sem优化和seo的区别
  • 设计用什么软件好seo的方式有哪些
  • 学校网站建设策划seo关键词优化方法
  • 专业做婚纱摄影网站产品推广计划怎么写
  • wordpress 中文api优化方法
  • 如何网站建设平台西安seo网站管理
  • 网站怎么做微信登录界面网页设计图
  • 北京网站建设培训班站长工具高清无吗
  • 茶企业网站网店seo是什么意思
  • 建盏公司哪几家seo单页面优化
  • 临西网站建设价格网站推广公司排名
  • 怎么做网站建设作业怎么做网络广告
  • 宁波外贸公司网站建设网站建设方案设计书
  • 万户网站管理系统4.0seo怎么发布外链
  • 精品课程教学网站广州最新重大新闻
  • 推广网站的形式包括免费网站创建
  • 镇江微网站建设苏州seo安严博客
  • 开平市住房和城乡建设局网站世界十大网站排名
  • 手机网站建设价位竞价排名软件
  • 长春建站模板东莞网络推广托管
  • 京东云服务器怎么做网站免费b站推广短视频