class3专题

左神算法基础class3—题目13复制含有随机指针节点的链表

左神算法基础class3—题目13复制含有随机指针节点的链表 1.题目:复制含有随机指针节点的链表2.分析3.核心代码(1)生成题设链表(2)加入新节点(3)复制新节点的值及rand指针(4)分离拷贝的部分 4.完整代码 1.题目:复制含有随机指针节点的链表 【题目】 一种特殊的链表节点类描述如下: public class Node { public int value; pu

左神算法基础class3—题目12单向链表按某值划分成左边小、中间相等、右边大的形式

左神算法基础class3—题目12单向链表按某值划分成左边小、中间相等、右边大的形式 普通版:单向链表按某值划分成左边小、中间相等、右边大的形式(不用考虑稳定性且额外空间复杂度为O(n))1.分析2.核心代码(1)链表的生成及添加元素(2)把链表放入数组中(3)荷兰国旗排序(4)把数组放回链表中 3.完整代码4.输出结果 进阶版:单向链表按某值划分成左边小、中间相等、右边大的形式(考虑稳定性

左神算法基础class3—题目11判断一个链表是否为回文结构(不同额外空间复杂度的三种方法)

左神算法基础class3—题目11三种方法判断一个链表是否为回文结构 题目:判断一个链表是否为回文结构方法一:利用堆栈结构(额外空间复杂度O(n))(1)分析(2)核心代码①头节点初始化②初始化链表数据③比较栈和链表是否相同 (3)完整代码 方法二:利用快慢指针和堆栈结构(额外空间复杂度O(n/2))(1)分析(2)核心代码快慢指针 (3)完整代码 方法三:利用快慢指针和逆序一半链表(额外空

左神算法基础class3—题目10打印两个有序链表的公共部分

左神算法基础class3—题目10打印两个有序链表的公共部分 1.题目2.分析3.核心代码(1)链表的建立(2)外排过程 4.完整代码5.输出结果 1.题目 【题目】 给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。 2.分析 打印链表的公共部分类似外排方式(外排不了解的请点击查看算法流程3),原理如下:设置两个指针分别指向链表1和链表2的第一个数,比

左神算法基础class3—题目9在行列都排好序的矩阵中找数

左神算法基础class3—题目9在行列都排好序的矩阵中找数 1.题目2.分析3.核心代码4.完整代码5.输出结果 1.题目 【题目】 给定一个有M*N的整型矩阵matrix和一个整数num,matrix的每一行和每一 列都是排好序的。实现一个函数,判断K是否在matrix中。 例如:{{1,3,5,6},{2,5,7,9},{4,6,8,10}} 如果num为7,返回true;如

左神算法基础class3—题目7反转单向和双向链表

左神算法基础class3—题目7反转单向和双向链表 题目1:反转单向链表1.分析2.核心代码3.完整代码4.输出结果 题目2:反转双向链表1.分析2.核心代码3.完整代码4.输出结果 题目1:反转单向链表 【要求】 如果链表长度为N,时间复杂度要求为O(N),额外空间 复杂度要求为O(1) 1.分析 反转单向链表可以使用迭代法,需要三个指针分别记录前一个节点,当前节点和后一

左神算法基础class3—题目8之字形打印矩阵c++实现

左神算法基础class3—题目8之字形打印矩阵c++实现 1.题目2.分析3.核心代码(1)A、B点的更新(2)打印A、B之间的数字 4.完整代码5.输出结果 1.题目 给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,例如:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16。“之”字形打印的结果为:1 2 5 9 6 3 4 7 10 13

左神算法基础class3—题目6旋转正方形矩阵

左神算法基础class3—题目6旋转正方形矩阵 1.题目2.分析3.核心代码4.完整代码5.输出结果 1.题目 【题目】 给定一个整型正方形矩阵matrix,请把该矩阵调整成 顺时针旋转90度的样子。 【要求】 额外空间复杂度为O(1),不使用辅助数组。 2.分析 分析:题目给定的是正方形矩阵,考虑把矩阵看成回字形结构,由外到内按层进行旋转,先外层后内层。与题目5思路相同

左神算法基础class3—题目5转圈打印矩阵

左神算法基础class3—题目5转圈打印矩阵 1.题目2.分析3.核心代码4.完整代码5.输出结果 1.题目 给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11, 10 【要求】 额外空间复杂度为O(1)。

左神算法基础class3-2—题目3仅用栈结构实现队列结构

左神算法基础class3-2—题目3仅用栈结构实现队列结构 1.题目2.分析3.核心代码4.完整代码5.输出结果 1.题目 如何仅用栈结构实现队列结构? 2.分析 栈本身是先进后出的结构,要想实现先进先出队列的作用就需要两个栈,把一个栈先倒到另一个栈内再pop出来。 (1)设计两个栈,一个命名为push、一个为pop。把数据输入push栈,把从pop栈输出的数据作为队列的输出