首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

题目:将链表奇数偶数位调换组成新的链表

题目:将链表奇数偶数位调换组成新的链表 原题链接: http://oj.leetcode.com/problems/swap-nodes-in-pairs/ Given a linked list...必须重新建立一个新的链表 进行返回 采用 带头节点链表 知识补充:带头节点链表不带头节点链表有什么区别 带头结点链表好处解决了 不用判断第一个节点是否为空 不需要特殊处理 用统一方法实现就...Q2: 链表遍历操作 ptr(A)=ptr->next(B) 前提条件节点A节点B 位置关系没有发现变化 链表排序(交换位置是排序一个方法)原来位置发生改变如何处理 ?...需要临时遍历记录 下 B位置 链表交换节点 影响不是2个 而是三个 不要忘记最后 1 -2-3 A=2 B=3 2-1-3 A=2 B=1 >>A=1 B=3 解题思路如下 第一次循环处理结果...可以采用递归方式 参照历史题目: 题目:判断一个链表是否回文链表

1.7K90

链表中间节点搜索快慢指针

复盘 我们先设定单链表的长度大于等于3,这样子比较容易分析算法。先简单假设一个长度为3的链表如下: 如果我们要访问中间节点,最终搜索到的应该是n2节点,内容就是n2。...如果链表的长度为偶数,这里假设为4,那么如下: 如果我们要访问中间节点,最终搜索到的应该是n2n3节点,内容就是n2n3。...快慢指针的应用场景 快慢指针主要有如下的应用场景: 找到链表的中点。 判断链表是否存在环。 删除链表倒数第x个节点。 第一种情况已经作为复盘案例分析过,下面分析一下第二第三种场景。...判断链表是否存在环 假设链表有6个节点(head节点为n1,tail节点为n6),已经形成环(n6的下一个节点为n1): 使用快慢指针,快指针每次遍历会比慢指针多一个元素,这样子的话,如果链表已经成环...,无论快指针慢指针之间相隔多少个节点,快指针总是能够追上慢指针(快指针慢指针指向同一个节点),这个时候就可以判断链表已经成环;否则快指针进行一轮遍历之后就会跳出循环,永远不可能慢指针“重合”。

38820

链表问题】删除链表的第K个节点

【题目描述】 链表删除倒数第 K 个节点。...【要求】 如果链表的长度为 N, 时间复杂度达到 O(N), 额外空间复杂度达到 O(1) 【难度】 士 【解答】 删除的时候会出现三种情况: 1、不存在倒数第 K 个节点,此时不用删除。...2、倒数第 K 个节点就是第一个节点。 3、倒数第 K 个节点在第一个节点之后。 所以我们可以用一个变量 num 记录链表一共有多少个节点。 如果 num < K,则属于第一种情况。...如果 num == K,则属于第二情况。 如果 num > K, 则属于第三种情况,此时删除倒数第 K 个节点等价于删除第 (num - k + 1) 个节点。...代码如下: //节点 class Node{ public int value; public Node next; public Node(int data) {

1.7K10

【Leetcode -328.奇偶链表 - 725.分隔链表

Leetcode -328.奇偶链表 题目:给定单链表的头节点 head ,将所有索引为奇数节点索引为偶数节点分别组合在一起,然后返回重新排序的列表。...第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数奇数组内部的相对顺序应该与输入时保持一致。...,最后将奇数链表的尾节点连上偶数链表的头节点;开始头节点奇数链表的头节点节点,头节点的next为偶数链表的头节点节点;然后依次将奇数链表的尾节点连上偶数链表节点的next,因为偶数节点的next...就是奇数节点;而偶数链表的尾节点连上奇数链表节点的next; 先将奇数链表偶数链表划分好,奇数链表的尾节点oddtail暂时不处理,奇数链表的头节点为head: 将奇数链表的尾节点连到偶数链表的头节点...的链表一个整数 k ,请你设计一个算法将链表分隔为 k 个连续的部分。

8410

LeetCode 328:奇偶链表 Odd Even Linked List

给定一个链表,把所有的奇数节点偶数节点分别排在一起。请注意,这里的奇数节点偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。...输出: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明: 应当保持奇数节点偶数节点的相对顺序...链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。...解题思路: 这道题很简单,迭代链表,将该链表奇数节点偶数节点分别取出分隔成两个链表,然后将奇偶两个链表连接起来组成新链表,返回头节点即可。...需要记录偶数节点的第一个节点,因为这是偶数链表的头节点,最后拼接链表时要用奇数链表的尾节点连接该节点

70910

LeetCode 328:奇偶链表 Odd Even Linked List

给定一个链表,把所有的奇数节点偶数节点分别排在一起。请注意,这里的奇数节点偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。...输出: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明: 应当保持奇数节点偶数节点的相对顺序...链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。...The first node is considered odd, the second node even and so on … 解题思路: 这道题很简单,迭代链表,将该链表奇数节点偶数节点分别取出分隔成两个链表...需要记录偶数节点的第一个节点,因为这是偶数链表的头节点,最后拼接链表时要用奇数链表的尾节点连接该节点

60540

LeetCode-328-奇偶链表

# LeetCode-328-奇偶链表 给定一个链表,把所有的奇数节点偶数节点分别排在一起。请注意,这里的奇数节点偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。...: 1->3->5->2->4->NULL 示例2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明: 应当保持奇数节点偶数节点的相对顺序...链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。...# 解题思路 双指针: 一个指针指向奇数节点,一个指针指向偶数节点 间隔遍历,奇数指针只能指向奇数节点偶数指针只能指向偶数节点 对于链表长度为奇数时,奇数指针one能够指向之后一个数字,此时偶数指针two...注意:间隔遍历很重要,如果按照顺序遍历,会出现onetwo指针奇偶长度的指向不一样,即onetwo快到链表末尾时候,可能指向的奇数链表也可能指向的偶数链表,这样就无法进行最后指针拼接的判断了,

26610

【一天一大 lee】奇偶链表 (难度:中等) - Day20201113

题目: 给定一个链表,把所有的奇数节点偶数节点分别排在一起。请注意,这里的奇数节点偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。...示例2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明: 应当保持奇数节点偶数节点的相对顺序。...链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。...抛砖引玉 题目限制了空间复杂度 O(1),则不能使用遍历链表取出节点然后重组的逻辑,只能借助使用双指针+更新next指向来修改原链表: odd、even奇偶指针遍历链表:odd只遍历链表奇数节点、even...只遍历链表偶数节点 奇数节点指针指向后一个偶数位指针的下一个位(next) 偶数指针指向后一个奇数位的下一个位(next) ?

35030

链表的实现,判断是否有环环的入口,找到链表的中间节点倒数第k个节点

链表的核心是头节点,定义一个next指针指向下一个节点的位置 package cn.chinotan.linkedList; public class LinkList { private Node...= null) { cNode = cNode.next; } cNode.next = node; } } // 遍历当前链表 public void printLink...); } // 查找倒数第k节点(采用快慢指针,快指针一下走一步,慢指针一下走一步,快指针先走k步,之后慢指针快指针一起走,当快指针到终点时,满指针的位置即所求点) public void findElem...); } // 判断链表是否有环(采用快慢指针,快指针一下走两步,慢指针一下走一步,当没有遍历完时,快指针慢指针遇到后就说明链表有环) public Boolean isLoop() {...(采用快慢指针,记住头节点到环的入口所走过的路快慢指针相遇点到环的入口所走过的路是一样的) public void findLoopPort() { Node slow = head; Node

46230

【Day28】力扣算法(超详细思路+注释)

奇偶链表 原题链接:328. 奇偶链表 题目描述: 给定单链表的头节点 head ,将所有索引为奇数节点索引为偶数节点分别组合在一起,然后返回重新排序的列表。...第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数奇数组内部的相对顺序应该与输入时保持一致。...题目要求我们将所有奇数节点连在一块,所有偶数节点连在一块,且奇数链表偶数链表拼接。 必须在 O(1) 的额外空间复杂度 O(n) 的时间复杂度下解决这个问题。...我们可以创建两个新的链表,分别代表奇数链表偶数链表,第一个节点奇数,作为奇数链表的头节点;第二个节点偶数,作为偶数链表的头节点。...当我们遍历完原始链表,也就完成了奇数链表偶数链表节点连接,这时候将奇数链表末尾节点指向偶数链表节点即可。

41930

每天一算:Odd Even Linked List

LeetCode上第328号问题:Odd Even Linked List 题目 给定一个链表,把所有的奇数节点偶数节点分别排在一起。...请注意,这里的奇数节点偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。...->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明: 应当保持奇数节点偶数节点的相对顺序...链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。 解题思路 这道题给了我们一个链表,让我们分开奇偶节点,所有奇节点在前,偶节点在后。...设定两个虚拟节点,dummyHead1用来保存奇节点,dummyHead2来保存偶节点; 遍历整个原始链表,将奇节点放于dummyHead1,其余的放置dummyHead2 遍历结束后,将dummyHead2

58130

​LeetCode刷题实战328:奇偶链表

给定一个链表,把所有的奇数节点偶数节点分别排在一起。请注意,这里的奇数节点偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。...: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明: 应当保持奇数节点偶数节点的相对顺序...链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。...2、接下来,分别以odd开头“删除”偶数链表,以even 开头删除奇数链表。这样一来将整个链表拆分为两个链表。...同时保留了三个节点,分别是odd(奇数链表的最后一个节点),even(偶数链表最后一个节点),evenhead(偶数链表第一个节点)。 3、最后只需将奇偶链表连接起来即可。

26130
领券