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

class Solution {
public:vector<int> reversePrint(ListNode* head) {vector<int>vec1;//从头到尾接收链表vector<int>vec2;//存储逆序链表的值while(head){vec1.push_back(head->val);head=head->next;}for(int i=vec1.size()-1;i>=0;i--){vec2.push_back(vec1[i]);}return vec2;}
};

剑指 Offer 24. 反转链表

class Solution {
public:ListNode* reverseList(ListNode* head) {//处理边界情况if(!head||head->next==NULL){//如果无节点或只有一个节点,直接返回head即可return head;}ListNode*reverseNode=new ListNode(-1);//前驱节点,防止头指针丢失reverseNode->next=NULL;ListNode*cur=head;//遍历链表while(cur){ListNode*next=cur->next;//提前储存好cur在链表中的下一个节点,不然会丢失cur->next=reverseNode->next;reverseNode->next=cur;cur=next;//后移一个节点}return reverseNode->next;//注意是返回反转链表头节点的下一个节点}
};

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

方法一:哈希表
class Solution {
public:Node* copyRandomList(Node* head) {if(!head)return head;//如果是空指针,直接返回unordered_map<Node*,Node*>dic;//创建哈希表Node*cur=head;//cur用于遍历链表while(cur){dic[cur]=new Node(cur->val);cur=cur->next;}cur=head;//回溯while(cur){dic[cur]->next=dic[cur->next];dic[cur]->random=dic[cur->random];cur=cur->next;}return dic[head];}
};方法二:拼接+拆分
class Solution {
public:Node* copyRandomList(Node* head) {if(!head)return head;Node*cur=head;while(cur){Node*next=cur->next;cur->next=new Node(cur->val);cur->next->next=next;cur=next;}cur=head;while(cur){if(cur->random){//注意random指针可能指向NULLcur->next->random=cur->random->next;//复制节点的任何指针都要指向复制节点,而不能指向原节点}cur=cur->next->next;}cur=head->next;Node*pre=head;Node*res=head->next;//记录合成链表中的head->next,因为分开后的链表中head指针指的是原链表了while(cur->next){pre->next=pre->next->next;cur->next=cur->next->next;pre=pre->next;cur=cur->next;}pre->next=NULL;//单独处理原链表尾部,因为此时还未指向NULL,因为不能修改原链表,所以置空return res;}
};

剑指Offer:第二天相关推荐

  1. 剑指Offer第二版Java代码实现

    剑指Offer第二版Java代码实现 A.单例模式 面试题 2:实现Singleton模式 B.面试需要的基础知识 面试题 3:数组中重复的数字 面试题 4:二维数组的查找 面试题 5:替换空格 面试 ...

  2. 剑指offer第二版答案详细版(带详细解题思路)

    1.滑动窗口的最大值(剑指offer原59题) 解题思路:其实是一个队列的问题,用一个队列去维护当前窗口中的所有元素:首先将超出窗口中的队头元素先删掉,然后将新的元素插入当前窗口中,插入时要判断新插入 ...

  3. 剑指offer第二版(leetcode)Java题解(不断更新)

    1 数组中的重复数字 题目 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一 ...

  4. python数据结构与算法刷题——剑指offer第二版加部分leetcode题

    说不清楚,只能看代码理解的用红色标出 查找算法:查找较排序来说较简单,不外乎顺序查找和二分查找.哈希表查找和二叉排序树查找.(很多面试官喜欢让应聘者写出二分查找(如test53)的代码)[注意:二分查 ...

  5. 剑指offer 第二版(101——119)(全部完结)

    剑指 Offer II 101. 分割等和子集 bool canPartition(vector<int>& nums) {int sum=0;for(int i=0;i<n ...

  6. 剑指offer第二版-9.用两个栈实现队列

    描述:使用两个栈实现一个队列.队列中实现尾部插入和头部删除函数. 思路:stack1负责插入,stack2负责弹出,如果stack2为空了,将stack1的元素依次弹出并存放到stack2中,之后对s ...

  7. JAVA实现 剑指offer第二版 2

    面试题16:数值的整数次方 需要考虑底数为0的情况,指数为正或负的情况:在计算次方时,应注意到4次方为2次方的2次方,可以进行递归调用减少复杂度:也要主要到double类型的比较不能直接使用==: p ...

  8. 剑指offer第二版——面试题9(java)

    面试题9:用两个栈实现队列 题目描述:  用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能. ...

  9. 牛客网-剑指offer 第二题(字符替换)

    //请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. <?php f ...

  10. 剑指offer第二版(150M超清分享PDF+源码)(转)

    链接:https://pan.baidu.com/s/1b6ZxVIBvjPfKifToh_h26Q 密码:6t76 https://github.com/zhedahht/ChineseCoding ...

最新文章

  1. 刚刚,“达摩院2020十大科技趋势”正式发布!
  2. 用 Java 写一个植物大战僵尸简易版!
  3. 图解Linux系统启动流程
  4. http长/短轮询和WebSocket 的介绍和比较
  5. 炸窝(Java)拼接
  6. JVM(六)为什么新生代有两个Survivor分区? 1
  7. 路痴福音!高德地图上线真AR步行导航,可实景指引
  8. SpringBoot 开启关闭自动任务配置(EnableScheduling )
  9. 什么是计算机嵌套分类汇总,excel嵌套分类汇总 Excel表格中创建嵌套分类汇总和查看嵌套分类汇总明细的方法...
  10. [2019杭电多校第八场][hdu6667]Roundgod and Milk Tea
  11. nodejs 中的 commonjs 模块化使用
  12. 廖雪峰Python练习题
  13. Visio2002、2003、2007下载地址整理 以及 相关网址链接
  14. Visual C++ 微软常用运行库合集
  15. “7天”连锁酒店郑南雁
  16. 【IoT】STM32 启动代码汇编指令详解
  17. 域权限维持—黄金票据和白金票据
  18. esp8266之红外报警
  19. [Linux]命令查找一个文件
  20. 【亲测有效】解决 Ubuntu 虚拟机无法共享文件夹的问题

热门文章

  1. 名画380 齐白石《借山图册二十二开》
  2. 第四章 LTI系统的变换域分析
  3. 乞力马扎罗的雪 - 笔记
  4. sqlite下载安装
  5. 【程序思考】从歇洛克·福尔摩斯的学识范围看程序员的知识结构
  6. 很难写但好玩的html打地鼠游戏代码
  7. Understanding Diffusion Models
  8. Mysql学习笔记(基础)基础sql语句详细记录
  9. DDV_MaxChars() 函数
  10. 云效代码安全揭秘,全方位为代码安全保驾护航