首页
学习
活动
专区
工具
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,那么如下: 如果我们要访问中间节点,最终搜索到的应该是n2和n3节点,内容就是n2和n3。...快慢指针的应用场景 快慢指针主要有如下的应用场景: 找到链表的中点。 判断链表中是否存在环。 删除链表中倒数第x个节点。 第一种情况已经作为复盘案例分析过,下面分析一下第二和第三种场景。...判断链表中是否存在环 假设链表有6个节点(head节点为n1,tail节点为n6),已经形成环(n6的下一个节点为n1): 使用快慢指针,快指针每次遍历会比慢指针多一个元素,这样子的话,如果链表已经成环...,无论快指针和慢指针之间相隔多少个节点,快指针总是能够追上慢指针(快指针和慢指针指向同一个节点),这个时候就可以判断链表已经成环;否则快指针进行一轮遍历之后就会跳出循环,永远不可能和慢指针“重合”。

    42420

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

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

    10010

    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 说明: 应当保持奇数节点和偶数节点的相对顺序...链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。...解题思路: 这道题很简单,迭代链表,将该链表奇数位节点和偶数位节点分别取出分隔成两个链表,然后将奇偶两个链表连接起来组成新链表,返回头节点即可。...需要记录偶数位节点的第一个节点,因为这是偶数链表的头节点,最后拼接链表时要用奇数链表的尾节点连接该节点。

    72610

    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 … 解题思路: 这道题很简单,迭代链表,将该链表奇数位节点和偶数位节点分别取出分隔成两个链表...需要记录偶数位节点的第一个节点,因为这是偶数链表的头节点,最后拼接链表时要用奇数链表的尾节点连接该节点。

    62740

    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...注意:间隔遍历很重要,如果按照顺序遍历,会出现one和two指针在奇偶长度的指向不一样,即one和two在快到链表末尾时候,可能指向的奇数链表也可能指向的偶数链表,这样就无法进行最后指针拼接的判断了,

    28510

    【一天一大 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) ?

    36730

    单链表的实现,判断是否有环和环的入口,找到链表的中间节点和倒数第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

    47830

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

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

    44130

    【初阶数据结构篇】链表算法的进阶修炼:破解复杂链表问题的奥秘

    单链表算法题进阶篇 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。...奇数-奇数 由step1中(1)得出的结论,如果N是偶数,则第⼀圈快慢指针就相遇了。...由step1中(2)得出的结论,如果N是奇数,则fast指针和slow指针在第⼀轮的时候套圈了,开始进⾏下⼀轮的追逐;当N是奇数,要满⾜以上的公式,则 (x+1)C 必须也要为奇数,即C为奇数,满⾜ (...新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。...例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。 返回复制链表的头节点。

    15610

    每天一算: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

    60630
    领券