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

做玻璃钢的企业网站如何修改百度上面的门店号码

做玻璃钢的企业网站,如何修改百度上面的门店号码,广州市政府门户网站建设的缺点,日照网站设计公司目录 题目描述 方法一、使用哈希表 方法二、不使用哈希表 题目描述 问题的关键是,random指针指向的是原链表的结点,这个原链表的结点对应哪一个新链表的结点呢?有两种办法。一是用哈希表。另一种是复制原链表的每一个结点,并将…

目录

题目描述

方法一、使用哈希表

方法二、不使用哈希表


题目描述

 

问题的关键是,random指针指向的是原链表的结点,这个原链表的结点对应哪一个新链表的结点呢?有两种办法。一是用哈希表。另一种是复制原链表的每一个结点,并将新结点接在原结点的后面组成一个长度加倍的链表,这样原结点的直接后继就是该原结点对应的新结点。

方法一、使用哈希表

unordered_map<Node*,Node*> new_table;//键是原链表中的旧结点,值是新链表中的新结点

unordered_map<Node*,Node*> random_table;//键是原链表中的旧结点,值是该旧结点的random指针指向的结点

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:Node* copyRandomList(Node* head) {if(head == nullptr)return nullptr;unordered_map<Node*,Node*> new_table;//键是原链表中的旧结点,值是新链表中的新结点unordered_map<Node*,Node*> random_table;//键是原链表中的旧结点,值是该旧结点的random指针指向的结点Node* newHead = nullptr;Node* newTail = nullptr;Node* cur = head;//第一步,建立新链表while(cur){Node* node = new Node(cur->val);new_table.insert({cur,node});random_table.insert({cur,cur->random});if(newHead == nullptr){newHead = node;newTail = node;}else{newTail->next = node;newTail = node;}cur = cur->next;}//第二步,设置新链表结点的random指针for(const auto& [old_node,new_node] : new_table){if(random_table[old_node]){new_node->random = new_table[random_table[old_node]];}}return newHead;}
};

实际上前面做法中的random_table是可以不需要的。

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:Node* copyRandomList(Node* head) {if(head == nullptr)return nullptr;unordered_map<Node*,Node*> new_table;//键是原链表中的旧结点,值是新链表中的新结点Node* newHead = nullptr;Node* newTail = nullptr;Node* cur = head;//第一步,建立新链表while(cur){Node* node = new Node(cur->val);new_table.insert({cur,node});if(newHead == nullptr){newHead = node;newTail = node;}else{newTail->next = node;newTail = node;}cur = cur->next;}cur = head;Node* new_cur = newHead;//第二步,设置新链表结点的random指针while(cur){if(cur->random){new_cur->random = new_table[cur->random];}cur = cur->next;new_cur = new_cur->next;}return newHead;}
};

方法二、不使用哈希表

第一步,复制每一个旧结点,并将新结点接在旧结点的后面组成新旧结点交替出现的长度翻倍的大链表。

第二步,设置新结点的random指针。

第三步,从大链表中提取出新结点组成新链表,并将原链表复原。

需要着重强调的是,第二步和第三步必须分开来做。

/*
// Definition for a Node.
class Node {
public:int val;Node* next;Node* random;Node(int _val) {val = _val;next = NULL;random = NULL;}
};
*/class Solution {
public:Node* copyRandomList(Node* head) {if(head == nullptr)return nullptr;Node* cur = head;//复制每一个旧结点,并将新结点接在旧结点的后面while(cur){Node* node = new Node(cur->val);Node* temp = cur->next;node->next = cur->next;cur->next = node;cur = temp;}cur = head;//设置新结点的random指针while(cur){if(cur->random)cur->next->random = cur->random->next;cur = cur->next->next;//原链表向前走一位}Node* new_head = nullptr;Node* new_tail = nullptr;cur = head;//提取出新结点组成新链表,并将原链表复原while(cur){if(new_head == nullptr){new_head = cur->next;new_tail = cur->next;}else{new_tail->next = cur->next;new_tail = cur->next;}cur->next = cur->next->next;//复原原链表cur = cur->next;//原链表向前走一步}return new_head;}
};
http://www.dtcms.com/wzjs/150711.html

相关文章:

  • 比较好的网站开发公司电话如何推销产品给客户
  • 智能家居网站建设方案四年级写一小段新闻
  • WordPress查看用户密码网站搜索优化
  • 济南建网站送400电话哈尔滨网络公司
  • 网站中图片中间是加号怎么做口碑营销案例有哪些
  • 培训机构倒闭seo推广方案
  • 网站掉权重是怎么回事如何网页优化
  • 网站开发页面布局百度识图在线识别
  • 河南郑州网站建设公司短视频营销策划方案
  • 网站建设 网页设计 网站制作宁波网络推广seo软件
  • wordpress连接微博插件哈尔滨seo优化软件
  • 两学一做网站 新闻百度app免费下载安装最新版
  • html静态网站开发实验报告长尾关键词排名工具
  • 3d动画制作设计公司重庆seo整站优化外包服务
  • 东莞做棋牌网站建设网站运营方案
  • 政府网站设计方案企业网站建设步骤
  • 网站建设专业术语现在有什么推广平台
  • 平面设计做画册用网站百度应用app下载
  • 网站建设公司的性质会员卡营销策划方案
  • 成都手机网站制作会计培训班多少钱
  • 做网站所需要的代码网络营销推广机构
  • 10g网站流量天津seo关键词排名优化
  • 病情最新动态全国最新疫情广州seo诊断
  • 河南省建设厅门户网站网站设计方案
  • p2p贷款网站建设舆情管理
  • 网站开发有什么点子google play下载
  • 阜宁县住房和城乡建设局网站网店推广方法有哪些
  • 建手机端网站北京网站优化指导
  • 现代简约风格设计方案ppt贴吧aso优化贴吧
  • 优品ppt模板免费下载厦门seo关键词排名