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

删除链表 M 节点之后的 N 节点

题目 给定链表 head 和两整数 m 和 n. 遍历该链表并按照如下方式删除节点: 开始时以头节点作为当前节点. 保留以当前节点开始的前 m 节点. 删除接下来的 n 节点....在删除了指定结点之后, 返回修改过后的链表的头节点. 进阶问题: 你能通过就地修改链表的方式解决这个问题吗? 示例 1: ?...输入: head = [1,2,3,4,5,6,7,8,9,10,11,12,13], m = 2, n = 3 输出: [1,2,6,7,11,12] 解析: 保留前(m = 2)结点, 也就是以黑色节点表示的从链表头结点开始的结点...删除接下来的(n = 3)结点(3 -> 4 -> 5), 在图中以红色结点表示. 继续相同的操作, 直到链表的末尾. 返回删除结点之后的链表的头结点. 示例 2: ?...[9,3,7,7,9,10,8,2], m = 1, n = 2 输出: [9,7,8] 提示: 1 <= 链表结点数 <= 10^4. [1 <= 链表的每一结点值 <=10^6]. 1 <=

80510

删除链表的倒数第n节点

题目: 思路: 由于这是一链表,所以我们一般只能获取到一头结点,然而其他信息我们不确定。所以可以采用双指针的方法。...思路二,利用一指针先走出目标数目,然后两指针一起走,那么先走的指针走完时,第二指针恰好会停在目标元素上。...n; i++) {             p2 = p2.next;         }         //当指针p2走完n步以后,让指针p2和p1同时向前走,直到p2走到最后一节点,即p2->...next=NULL         // 整个过程p2和p1之间相隔n-1节点         while (p2 !...= null) {             p1 = p1.next;             num++;         }         //判断是第几个节点         int index

37920

LeetCode - 删除链表的倒数第N节点

,删除链表的倒数第 n 节点,并且返回链表的头结点。...示例: 给定一链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。...用两指针,计算步差的方式,是最简单的。...新建两指针,n1初始化为null,n2初始化为当前链表头 然后遍历指针n2,并计算n1和n2之间的步差,如果步差超过n就移动n1 最后n2遍历完,分为3种情况: 如果n1和n2不存在步差,直接返回null...存在步差,且n1不为null,说明存在倒数第n节点,此时n1是倒数第n节点的前一节点,将n1.next指向倒数n-1节点即可 中文官网题解: https://leetcode-cn.com/problems

45530

二叉树中找到一节点的后继节点

【题目】现在有一种新的二叉树节点类型如下: public class Node { public int value; public Node left;...public Node parent; public Node(int data) { this.value = data; } } 该结构比普通二叉树节点结构多了一指向父节点的...假设有一棵该Node类型的节点组成的二叉树,树中每个节点的parent指针 都正确地指向自己的父节点,头节点的parent指向null。...只给一二叉树中的某个节点 node,请实现返回node的后继节点的函数。 在二叉树的中序遍历的序列中, node的下一节点叫作node的后继节点。node的上一节点叫作node的钱去节点....7 9,那么1的后继结点就是4,1的前驱结点是5 第一种方法 : 很简单,中序遍历整个树,把结果存起来,查一下要找的数后面的值即可.但是这种时间复杂度比较高,每次需要遍历整个树 第二种方法 :其实一结点的后继结点有这样一规律

35130

2023-06-10:给定一n 节点组成的网络,用 n x n 邻接矩阵 graph 表示 在节点网络中,只有当 gr

2023-06-10:给定一n 节点组成的网络,用 n x n 邻接矩阵 graph 表示 在节点网络中,只有当 graph[i][j] = 1 时,节点 i 能够直接连接到另一节点 j。...一些节点 initial 最初被恶意软件感染。只要两节点直接连接, 且其中至少一节点受到恶意软件的感染,那么两节点都将被恶意软件感染。...答案2023-06-10: 主要思路如下: 1.建立并查集,将感染恶意软件的节点标记出来。 2.遍历节点连接,如果两节点都没有被感染,则在并查集中合并这两节点。...4.统计在同一initial的所有节点中,连接的总节点数,找出连接数最多的initial节点。 5.返回最小索引的节点。...空间复杂度为O(n),其中n节点数,因为需要使用一并查集数组来存储节点的父节点,另外还需要使用一数组来记录每个节点是否被感染和每个initial节点的连接数量。

18110

【算法】二叉树中找到一节点的后继节点,前继节点

题目 二叉树中找到一节点的后继节点,前继节点 现在有一种新的二叉树节点类型如下: public static class Node { public Node left; public...Node parent; public int value; public Node(int data) { value = data; } } 该结构比普通二叉树节点结构多了一指向父节点...假设有一 棵Node类型的节点组成的二叉树,树中每个节点的parent指针都正确地指向自己的父节点,头节点的parent指向null。...只给一二叉树中的某个节点 node,分别实现返回node的后继,前继节点的函数。 在二叉树的中序遍历的序列中,node的下一节点叫作node的后继节点,node的上一节点叫做前节点。...// 因为中序遍历的过程是:左中右,因此打印完当前节点(zhong),下一节点就是右 // 然后下一递归过程又是左中右,因此后继节点必然是右子树中,最左边的节点 if (node.right

1.6K10

删除链表的倒数第N节点

题目描述 给定一链表,删除链表的倒数第 n 节点,并且返回链表的头结点。 示例: 给定一链表: 1->2->3->4->5, 和 n = 2....当删除了倒数第二节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗?...思路 双指针,指针A先移动n次, 指针B再开始移动。...当A到达null的时候, 指针b的位置正好是倒数n 我们可以设想假设设定了双指针p和q的话,当q指向末尾的NULL,p与q之间相隔的元素个数为n时,那么删除掉p的下一指针就完成了要求。...设置虚拟节点dummyHead指向head 设定双指针p和q,初始都指向虚拟节点dummyHead 移动q,直到p与q之间相隔的元素个数为n 同时移动p与q,直到q指向的为NULL 将p的下一节点指向下下个节点

27430

二叉树:我有多少节点

如果之前两篇二叉树:看看这些树的最大深度, 二叉树:看看这些树的最小深度都认真看了的话,这道题目可以分分钟刷掉了,愉快过节! 222.完全二叉树节点个数 给出一完全二叉树,求出该树的节点个数。...思路 这道题目其实没有必要强调是完全二叉树,就是求二叉树节点的个数。 ? 依然可以使用递归法和迭代法来解决。...这道题目的递归法和求二叉树的深度写法类似, 而迭代法:二叉树层序遍历模板稍稍修改一下,记录遍历的节点数量就可以了。 递归遍历的顺序依然是后序(左右中)。...递归 如果对求二叉树深度还不熟悉的话,看这篇:二叉树:看看这些树的最大深度。 确定递归函数的参数和返回值:参数就是传入树的根节点,返回就返回以该节点为根节点二叉树节点数量,所以返回值为int类型。...那么只要模板少做改动,加一变量result,统计节点数量就可以了 class Solution { public: int countNodes(TreeNode* root) {

1.1K20
领券