[剑指offer] 反转链表
题目描述 输入一个链表,反转链表后,输出新链表的表头。 解题思路 设置三个指针,head为当前节点,pre为当前节点的前一个节点,next为当前节点的下一个节点,需要pre和next的目的是让当前节点从pre->head->next1->next2变成pre<-head next1->next2的过程中,用pre让节点反转所指方向,next节点保存next1节点防止....
[剑指offer] 链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点。 解题思路 经典的双指针法。定义两个指针,第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动,从第k步开始,第二个指针也开始从链表的头指针开始遍历,由于两个指针的距离保持在k-1,当第一个指针到达链表的尾节点时,第二个指针刚好指向倒数第k个节点。 关注要点 链表头指针是否为空,若为空则直接返回回null k是否为0,k为0也就.....
(4)剑指Offer之链表相关编程题
一 链表中倒数第k个节点 题目描述: 输入一个链表,输出该链表中倒数第k个结点 问题分析: 一句话概括:两个指针一个指针p1先开始跑,指针p1跑到k-1个节点后,另一个节点p2开始跑,当p1跑到最后时,p2所指的指针就是倒数第k个节点。 思想的简单理解:前提假设:链表的结点个数(长度)为n。规律一:要找到倒数第k个结点,需要向前走多少步呢?比如倒数第一个结点,需要走n步,那倒数第二个结点呢?很明....
剑指Offer_6_从尾到头打印链表
题目描述 输入应该链表的头节点 , 从尾到头反过来打印出每个节点的值。链表定义如下 : 1 typedef struct ListNode 2 { 3 int m_nKey ; 4 ListNode * m_pNext ; 5 }ListNode; 分析: 可能有人的第一反应是将链表中的节点指针翻转过来。但是改变原有的链表结构可能在...
剑指Offer之从尾到头打印链表(题5)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 1 /****************************************  ...
剑指Offer之链表中倒数第k个节点(题15)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 1 /**************************************** &n...
《剑指offer》-二叉搜索树与双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 题目的描述不是很习惯。题目的意思是把二叉树从左到右遍历,相当于双向链表的遍历。 其实就是让二叉树在x方向上的投影点,顺序输出。那么其实就是中序遍历。递归版本如下: struct TreeNode{ int val; struct TreeNode* left; ...
《剑指offer》-合并两个排序的链表
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 class Solution{ public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2){ ListNode* result = NULL; ListNode* current = NULL; ...
《剑指offer》-反转链表
输入一个链表,反转链表后,输出链表的所有元素。 题目考察链表反转,但是挖坑不是反转本身,而是题目的描述再次不清晰:什么叫“反转链表后输出链表所有元素”?给的代码框架只有一个函数ReverseList,返回值类型是ListNode*,输出不输出和我有什么关系? class Solution{ public: ListNode* ReverseList(ListNode* pHead){ ...
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
数据库
分享数据库前沿,解构实战干货,推动数据库技术变革
+关注