概览 顺序查找 顺序查找的定义为:在一个已知无序(或有序)的队列中找出与给定的关键字相同的数的具体位置。 其原理是让关键字与队列中的数从开始一个一个地往后逐个比较,直到找到与给定的关键字相同的数。 当然,顺序查找绝不仅限于对数字、字符的查找,也适用于前缀、对象信息的关
牛客网高频算法题系列-BM14-链表的奇偶重排 题目描述 给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。 注意是节点的编号而非节点的数值。 原题目见:BM14 链表的奇偶重排 解法一:链表遍历(使用额外空间) 首先,判断如果链表为空或者只有1或2个
目录前言一、架构设计1. 第一次作业2. 第二次作业3. 第三次作业二、测试数据准备三、性能分析1. query_circle与query_block_sum2. query_group_value_sum3. query_least_connection4. send_indirect_message四、Network拓展五、学习体会 前言 本单元围绕JML进行规格化设计,契约式
2022 OO 第三单元总结 一、利用 JML 规格准备测试数据 首先是对于 JML 规格的理解。通过阅读 model 可以初步了解需要维护的对象,针对每个方法按照 normal_behavior 和 exceptional_behavior 进行划分,先实现异常行为判断,再按照 requires 条件分别实现正常行为。对于比较
120. 三角形最小路径和 给定一个三角形 triangle ,找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步
目录一、需求分析1、第一次作业2、第二次作业3、第三次作业二、方案实现1、第一次作业2、第二次作业3、第三次作业4、架构设计,图模型构建维护总结三、测试数据准备四、bug分析五、Network扩展六、心得体会 一、需求分析 1、第一次作业 通过实现官方的Person、Network、Group接口来
OO第三单元总结 一、架构设计 1. 第一次作业 1.1 图模型构建和维护策略: 构建: Network是图:每个Person是图上的一个结点,保存在在people列表中;每个Relation是图上的一条边,边的权值和此边两顶点的Person分别保存在此边两顶点Person的value列表中。 Group是群:类似微信群,本质上是一群
原题传送门 1. 题目描述 2. Solution 1 1、思路分析 方法一: 遍历,逐个摘下结点,头插到新链表 2、代码实现 package Q0299.Q0206ReverseLinkedList; import DataStructure.ListNode; public class Solution1 { /* 方法一: 遍历,逐个摘下结点,头插到新链表 */
描述 将一个节点数为size链表m位置到n位置之间的区间反转,要求时间复杂度O(n),空间复杂度O(1)。 例如: 给出的链表为1→2→3→4→5→NULL, m=2,n=4, 返回1→4→3→2→5→NULL. 数据范围: 链表长度0<size≤1000,0<m≤n≤size,链表中每个节点的值满足∣val∣≤1000 要求:时间复杂度O(n) ,空
牛客网高频算法题系列-BM9-删除链表的倒数第n个节点 题目描述 给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针 原题目见:BM9 删除链表的倒数第n个节点 解法一:双指针法 首先,考虑两种特殊情况: 如果原链表为空,直接返回null。 如果k不是正数,直接返回null。 否则,使用双
牛客网高频算法题系列-BM8-链表中倒数最后k个结点 题目描述 描述:输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。 原题目见:BM8 链表中倒数最后k个结点 解法一:双指针法 首先,考虑两种特殊情况: 如果
线索化二叉树 先看一个问题 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n+1=7 问题分析: 当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 } 但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上. 如果我们希望充分的利用 各个节点的左右指针, 让
之前使用PageRank提取关键结点的方法是计算每个结点的PageRank的值,然后提取top10%的结点作为关键结点。但是PageRank是从全局视角给网页排序,从而得到的每个结点的PageRank的值。 这篇文章结合复杂网络的局部特征和全局特征,通过标准化每个节点的度和中间性中心性,利用节点之
关键在于遍历链表时将结点next指针指向前一个结点。 描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。 数据范围:0≤n≤1000 要求:空间复杂度O(1),时间复杂度O(n)。 /* struct ListNode { int val; struct Lis
这道题一眼就知道是并查集,创个int型数组按步骤写就好了。 哈哈如果这样想简单了就错了。看一下题目的数据范围: 编号最大值达到了\(10^9\),但是不同的编号最多只有\(2\times 10^5\)个,问题就出在这里。如果创建一个有10亿个元素的int数组,那内存明显不够用。所以需要将数组离散化。
牛客网高频算法题系列-BM6-判断链表中是否有环 题目描述 判断给定的链表中是否有环。如果有环则返回true,否则返回false。 原题目见:BM6 判断链表中是否有环 解法一:双指针法 使用两个指针,fast 与 slow。它们起始都位于链表的头部。随后,slow 指针每次向后移动一个位置,而fast 指针
参考: https://zhuanlan.zhihu.com/p/273829162(图解什么是红黑树) https://zhuanlan.zhihu.com/p/481921783(红黑树原理以及实现) 关键概念 红黑树的本质其实也是对概念模型:2-3-4树的一种实现,因此我们先来关注2-3-4树。 2-3-4树是阶数为4的B树,B树,全名BalanceTree,平衡树。这种结构主要
Description给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。
Given two binary search trees root1 and root2, return a list containing all the integers from both trees sorted in ascending order. Example 1: Input: root1 = [2,1,4], root2 = [1,0,3] Output: [0,1,1,2,3,4] Example 2: Input: root1 = [1,null,8], root2
目录一 链表原理二 单链表的算法实现2.1 单链表的初始化2.2 单链表插入元素2.3 单链表查找 一 链表原理 链表是线性表的链式存储方式,逻辑上相邻的数据在计算机内的存储位置不必须相邻,那么 怎么表示逻辑上的相邻关系呢?可以给每个元素附加一个指针域,指向下一个元素的存储位 置。如图
class LNode(object): # 结点初始化函数, p 即模拟所存放的下一个结点的地址 # 为了方便传参, 设置 p 的默认值为 0 def __init__(self, data, p=0): self.data = data self.next = p class LinkList(object): def __init__(self): sel
牛客网高频算法题系列-BM4-合并两个排序的链表 题目描述 输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。 数据范围: 0 <= n <= 1000,-1000 <= 节点值 <= 1000 要求:空间复杂度 O(1),时间复杂度 O(n) 原题目见:BM4 合并两个排序的链表 解
图着色寄存器分配 视频地址:Bilibili 这里说说图着色,先讲解原理,同时也提供了一个java语言的实现。 图着色问题 在介绍图着色寄存器分配之前,先来说一下图着色问题。下面是一个图: 图中一共6个结点,被边相连的结点表示有相邻的关系,有相邻关系的结点不可以被染成同一种颜色,这就好像给地
BST 二叉查找树的定义: 一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; 从上述定义可以看出BST的性质: BST中序遍历的序列权值递增 查找 按
原题传送门 1. 题目描述 2. Solution 1 1、思路分析 插入排序思想,把序列分成两部分,有序部分和待排序部分,初始时有序部分就1个元素,对于链表来说就是头结点。遍历链表把待排序部分的结点逐个插入到有序部分。 2、代码实现 package Q0199.Q0147InsertionSortList; import DataStru