玩转算法值面试-第五章 -在链表中穿针引线

5-123
数组中可以随机访问,相反链表就不行
leetcode:206
在这里插入图片描述
反转一个链表,链表如果没有特别声明,则节点的值不发生改变
在这里插入图片描述
在这里插入图片描述
一共需要三个指针:current指向当前需要处理的指针
next指向当前需要处理的元素的下一个元素的指针
pre保存修改之后链表指向的指针
在这里插入图片描述
首先实现一个节点的反转
在这里插入图片描述
然后将pre、cur、next进行更新(向后移动一个指针
pre更新为cur指针
cur更新为next指针
next由于本身的更新指向下一个元素的位置

在这里插入图片描述
然后再重复前面的操作:将cur指向pre指针,然后更新pre、cur、next指针
在这里插入图片描述
在这里插入图片描述

练习题:leetcode 92
在这里插入图片描述

using  namespace std;struct ListNode{int val;ListNode *next;ListNode(int x) :val(x), next(NULL){}
}; ListNode* creatLinkedList(int arr[], int n){if(n==0)return NULL;ListNode* head=new ListNode(arr[0]);ListNode* curNode=head;for(int i=1; i<n; i++){curNode->next=new ListNode(arr[i]);curNode=curNode->next;}return head;
}void printLinkedList(ListNode* head){ListNode* curNode=head;while(curNode != NULL){cout<< curNode->val<<"->";curNode=curNode->next;}cout<<"NULL"<<endl;return;}void deleteLinkedList(ListNode* head){ListNode* curNode=head;while(curNode!=NULL){ListNode* DelNode=curNode;curNode=curNode->next;delete delNode;}return;
}
class Solution{pulic:ListNode* reverseList(ListNode* head){ListNode* pre=NULL;ListNode* cur=head;while(cur != NULL){ListNode* next=cur->next;cur->next=pre;pre=cur;cur=next;}return pre;//pre指向该链表的头结点 }
};int main(){int arr[]={1,2,3,4,5};int n=sizeof(arr)/sizeof(int);//计算出arr数组中的长度 ListNode* head=createLinkedList(arr,n);printLinkedList(head);ListNode* head2=Solution().reverseList(head);printLinkedList(head2);deleteLinkedList(head2);return 0;
}

思考题:leetcode 83
在这里插入图片描述
leetcode86
在这里插入图片描述
leetcode 328题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

设立链表的虚拟头结点

在这里插入图片描述
举例:如删除3的元素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
该逻辑对删除最后一个元素依然使用,对删除第一个元素不适用。
在这里插入图片描述
增加一个虚拟变量
在这里插入图片描述
在这里插入图片描述
练习题:leetcode 82
在这里插入图片描述

leetcode 21
在这里插入图片描述
5-4 5 6
leetcode 24
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建几个指针去预先保留要处理的几个节点
在这里插入图片描述
思考:可不可以不用next
在这里插入图片描述
练习题:leetcode 25
在这里插入图片描述

leetcode 147 为一个链表进行插入排序

leetcode 148 SORT LIST
写一个排序算法,用O(n *logn)的时间复杂度为一个链表进行排序

自顶向上,自顶向下

在这里插入图片描述

在这里插入图片描述
双指针技术
leetcode 19题
在这里插入图片描述
在这里插入图片描述

优化之后:只遍历一遍链表,p和q之间的距离一定,p之前有多少个点不确定,当q移到NULL时停止。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480117.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记(SocialGCN: An Efficient Graph Convolutional Network based Model for Social Recommendation)

一个有效的基于图卷积神经网络的社交推荐模型 原文链接&#xff1a;SocialGCN: An Efficient Graph Convolutional Network based Model for Social Recommendation, arxiv 原理&#xff1a;在用户-项交互图上应用GNN来学习用户向量的表示&#xff0c;用户向量和项向量内积预测…

POJ 1753 Flip Game(回溯)

文章目录1. 题目1.1 题目链接1.2 题目大意1.3 解题思路2. 代码2.1 Wrong Answer代码2.2 Accepted代码1. 题目 1.1 题目链接 http://poj.org/problem?id1753 1.2 题目大意 一个黑白棋子的棋盘&#xff0c;一个反过来周围四个也跟着反过来(如果存在的话)&#xff0c;颜色取反…

他读书时挣了五十万,找工作时收获阿里腾讯快手等ssp offer

今天介绍一位dalao&#xff0c;他之前在中科院获取了计算机硕士学位&#xff0c;现在是一名大厂的算法工程师。大多数人的学生生活&#xff0c;是在枯燥的课程和任务中度过的&#xff0c;但他却有所不同&#xff0c;乐于折腾&#xff0c;收获了不一样的精彩。他喜欢去公司实习&…

Java多线程系列(三):Java线程池的使用方式,及核心运行原理

之前谈过多线程相关的4种常用Java线程锁的特点&#xff0c;性能比较、使用场景&#xff0c;今天主要分享线程池相关的内容&#xff0c;这些都是属于Java面试的必考点。 为什么需要线程池 java中为了提高并发度&#xff0c;可以使用多线程共同执行,但是如果有大量线程短时间之内…

论文浅尝 | 图神经网络综述:方法及应用

论文链接&#xff1a;https://arxiv.org/pdf/1812.08434.pdfGNN相关论文列表链接&#xff1a;https://github.com/thunlp/GNNPapers近日&#xff0c;清华刘知远老师组在arXiv上发表了一篇关于图神经网络的综述&#xff0c;本次论文浅尝在分享这篇论文的基础上&#xff0c;对图神…

论文笔记(Social Attentional Memory Network:Modeling Aspect- and Friend-level Differences in Recom-)

社交注意记忆网络&#xff1a;模拟面级别和朋友级别的区别 原文链接&#xff1a;Social Attentional Memory Network: Modeling Aspect- and Friend-Level Differences in Recommendation, WSDM’19 1. 摘要 社会中的连接有助于提升推荐系统的性能&#xff0c;但是&#xff…

玩转算法之面试-第六章(栈和队列)

leetcode 20 此时栈顶的左括号和当前遍历的右括号匹配&#xff0c;故将左括号从栈顶pop出。 leetcode 150&#xff1a; leetcode 71 栈和递归的关系 递归算法&#xff1a;二叉树中的算法 、二叉树的前序遍历&#xff0c;中序遍历&#xff0c;后序遍历 前序遍历代码&am…

POJ 1321 棋盘问题(回溯)

文章目录1. 题目1.1 题目链接1.2 题目大意1.3 解题思路2. 代码2.1 Accepted 代码1. 题目 1.1 题目链接 http://poj.org/problem?id1321 1.2 题目大意 在一个给定形状的棋盘&#xff08;只能在#号的位置摆放&#xff09;上面摆放棋子&#xff0c;棋子没有区别。要求摆放时任…

Java多线程系列(二):线程的五大状态,以及线程之间的通信与协作

在Java面试的时候&#xff0c;经常会问到Java并发编程相关的多线程、线程池、线程锁、线程通信等面试必考点&#xff0c;比如&#xff1a; Java并发编程系列&#xff1a;Java线程池的使用方式&#xff0c;核心运行原理、以及注意事项 Java并发编程系列&#xff1a;4种常用Jav…

负样本为王:评Facebook的向量召回算法

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术有人的地方就会有江湖&#xff0c;就会有鄙视链存在&#xff0c;推荐系统中也不例外。排序、召回&#xff0c;尽管只是革命分工不同&#xff0c;但是我感觉待遇还是相差蛮大的排序排序&#xff0c;特别是精排…

论文浅尝 | TEQUILA: 一种面向时间信息的知识问答方法

来源&#xff1a;CIKM’18链接&#xff1a;http://delivery.acm.org/10.1145/3270000/3269247/p1807-jia.pdf?ip223.3.116.39&id3269247&accACTIVE%20SERVICE&keyBF85BBA5741FDC6E%2EEEBE655830483280%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&__acm__15478819…

京东2020算法工程师0824笔试题整理

代码题&#xff1a; 1&#xff1a;开心消消乐&#xff1a; #include #include #include #include #include #include #include #define ll long long #define inf 0x3f3f3f3f #define Max 1001 using namespace std; int dir[4][2]{{-1,0},{1,0},{0,-1},{0,1}}; string …

论文笔记(eTrust: Understanding Trust Evolution in an Online World)

eTrust&#xff1a;理解线上信任进化 原文链接&#xff1a;eTrust: Understanding Trust Evolution in an Online World, KDD’12 原理&#xff1a;用户偏好与项的向量内积 用户与朋友相似度权重*朋友对项的时间衰减评分用户对项的评分 摘要 大部分关于线上信任的研究都假设…

技术动态 | 67 亿美金搞个图,创建知识图谱的成本有多高你知道吗?

OpenKG 祝各位读者元宵节快乐&#xff01;本文转载自公众号&#xff1a;机器之心。选自ISWC作者&#xff1a;Baptiste Rocca参与&#xff1a;思源、李亚洲我们知道强大的深度模型需要很多计算力&#xff0c;那你知道创建一个知识图谱的成本到底是多少吗&#xff1f;德国 Mannhe…

Attention模型:我的注意力跟你们人类不一样

星标/置顶小屋&#xff0c;带你解锁最萌最前沿的NLP、搜索与推荐技术文 | 小轶背景截至今日&#xff0c;Badanau Attention的原文citation已达1.34w之多。2020年几乎所有主流NLP任务都需要借助attetion来实现。在深度学习全民炼丹的时代&#xff0c;attention是为数不多具有较强…

动态规划算法(Dynamic Programming)之0-1背包问题

文章目录1. 问题引入2. 动态规划求解0-1背包3. 复杂度4. 0-1背包升级版&#xff08;带价值&#xff09;5. 0-1背包升级版&#xff08;带价值&#xff09;DP解法1. 问题引入 前面讲了0-1背包的回溯解决方法&#xff0c;它是穷举所有可能&#xff0c;复杂度是指数级别的&#xf…

Java多线程系列(一):最全面的Java多线程学习概述

Java并发编程的技能基本涵括以下5方面&#xff1a; 多线程 线程池 线程锁 并发工具类 并发容器 多线程的4种创建方式 继承Thread 实现Runnable接口 实现Callable接口 以及线程池来创建线程 Java线程的生命周期 线程的创建 线程的就绪 线程的运行 线程的阻塞 线程的死…

论文浅尝 | 基于知识库的自然语言理解 01#

本文转载自公众号&#xff1a;知识工场。罗康琦&#xff0c;上海交通大学计算机系2019届博士&#xff0c;研究方向为自然语义理解和知识图谱。2012年获得华中科技大学软件工程学士学位&#xff0c;现就职于京东数据科学实验室&#xff08;Data Science Lab&#xff09;。他曾在…

推荐系统图算法实用干货汇总(含论文、代码、样例教程)

Hello,今天为朋友们推荐一个值得学习的公众号「浅梦的学习笔记」&#xff0c;小编目前在电商公司从事推荐系统相关的工作。主要分享关于「推荐系统&#xff0c;图算法&#xff0c;NLP&CV以及求职面试」等内容&#xff0c;欢迎关注一起学习和交流&#xff5e;文末可打包下载…

动态规划应用--双11购物凑单

文章目录1. 问题描述2. 代码实现1. 问题描述 双11购物节的时候&#xff0c;某宝给你很多张满300减50的优惠券&#xff0c;你想组合各种商品的价格总和>300&#xff0c;且金额总和越接近300越好&#xff0c;这样可以多薅点羊毛。 回溯算法效率太低&#xff0c;时间复杂度指…