自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 问答 (2)
  • 收藏
  • 关注

原创 牛客刷题日记【二叉搜索树的最近公共祖先|在二叉树中找到两个节点的最近公共祖先】

1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x,满足x是p和q的祖先且x的深度尽可能大。2.二叉搜索树是若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值。给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。当两个节点在上述两种情况下被找到的时候,修改这个节点值。3.所有节点的值都是唯一的。

2025-06-30 13:29:23 293

原创 牛客刷题日记【滑动窗口的最大值|寻找第K大|最小的K个数】

例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。数据范围:0≤k,n≤100000≤。

2025-06-26 12:01:40 222

原创 牛客刷题日记【用两个栈实现队列|包含min函数的栈|有效括号序列】

队列中的元素为int类型。定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。输入: [“PSH-1”,“PSH2”,“MIN”,“TOP”,“POP”,“PSH1”,“TOP”,“MIN”]括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。"PSH-1"表示将-1压入栈中,栈中元素为-1。"PSH1"表示将1压入栈中,栈中元素为1,-1。

2025-06-25 11:29:31 231

原创 牛客刷题日记【合并二叉树|二叉树的镜像】

今天要面试,所以只做了两道题。

2025-06-24 13:50:40 206

原创 牛客刷题日记【比较版本号|二叉树的三序遍历|二叉树的最大深度】

二. 如果版本号没有指定某个下标处的修订号,则该修订号视为0。因为"1.1"的版本号相当于"1.1.0",第3位修订号的下标为0,小于1。版本号是由修订号组成,修订号与修订号之间由一个"."连接。1个修订号可能有多位数字组成,修订号可能包含前导0,且是合法的。例如,1.02.11,0.1,0.2都是合法的版本号。一. 比较版本号时,请按从左到右的顺序依次比较它们的修订号。比如"0.1"和"0.01"的版本号是相等的。修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此类推。

2025-06-23 11:21:31 387

原创 牛客刷题日记【寻找峰值|数组中的逆序对|旋转数组的最小数字】

有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。本题是通过归并排序进行求解逆序对数的,在归并排序中,本身就依赖于逆序对数的计算,因此只需要对其排序,就可以求出逆序对数量。每次将元素段一分为二,比较两个元素段中的最大值,通过递归算法对齐不断的划分,直到左右两侧指针指向同一个元素,或相邻元素。

2025-06-21 17:13:15 398

原创 牛客刷题日记【删除有序链表中重复的元素-I|删除有序链表中重复的元素-II|二分查找-I】

用空间换时间的思路,建一个数组,把所有出现过的数字存进去,然后遍历数组,将所有值唯一的数组下标加入链表中。给出的链表为1→2→3→3→4→4→51→2→3→3→4→4→5, 返回1→2→51→2→5.给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。给出的链表为1→1→2→3→31→1→2→3→3,返回1→2→31→2→3.给出的链表为1→1→1→2→31→1→1→2→3, 返回2→32→3.给出的链表为1→1→21→1→2,返回1→21→2.

2025-06-20 09:44:22 366

原创 牛客刷题日记【单链表的排序|判断一个链表是否为回文结构|链表的奇偶重排】

给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。遍历链表,分别将奇偶数位元素以尾插法插入至不同的链表中,然后将两个链表拼接在一起。将链表元素放置在一个数组中,对数组进行双指针双端遍历,直到两个指针相遇。≤105,链表中每个节点的值满足 ∣val∣≤107∣。≤105,节点中的值都满足 0≤val≤10000≤。给定一个节点数为n的无序单链表,对其按升序排序。数据范围: 链表节点数 0≤n≤1050≤。数据范围:节点数量满足 0≤n≤1050≤。链表转数组,然后快排,

2025-06-19 10:48:57 179

原创 牛客刷题日记【链表中倒数最后k个结点|删除链表的倒数第n个节点|两个链表的第一个公共结点】

输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。数据范围:0≤n≤1050≤na**ik≤109要求:空间复杂度 O(n)On),时间复杂度 O(n)On进阶:空间复杂度 O(1)O(1),时间复杂度 O(n)On思考:设置双指针,让第一个指针先移动k个长度,然后两个指针一起移动。当第一个指针移动到最后时,第二个指针指的就是目标节点。

2025-06-18 13:31:42 308

原创 牛客刷题日记【合并k个已排序的链表|判断链表中是否有环|链表中环的入口结点]

输入分为两部分,第一部分为链表,第二部分代表是否有环,然后将组成的head头结点传入到函数里面。对有环链表进行遍历,会陷入无限循环,因此记录链表长度,当达到最大值的时候,一定存在环。给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。因此仅需记录pre和cur节点,当出现cur<=pre时,即为环入口,返回cur。判断给定的链表中是否有环。对优先队列进行遍历,将最小的节点以尾插法的形式插入新链表中,维持升序。≤10000,链表中任意节点的值满足 ∣val∣<=100000∣。

2025-06-17 13:58:49 331

原创 牛客刷题日记【反转链表|链表内指定区间反转|合并两个排序的链表】

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 链表长度 0<size≤1000,0<m≤n≤size,链表中每个节点的值满足 ∣val∣≤1000。遍历整个链表,在指定的起始位置开始头插法,在指定的终点结束,最后返回头指针。输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。指向元素的head指针不是万能的,可能指向的元素,在链表中被调换位置,并非头指针。

2025-06-16 16:07:28 340

原创 |Boids|鸟群模型|鸟群算法|学习笔记 - 论文学习

本文基于Craig Reynolds于1986年发布的《Flocks, Herds, and Schools: A Distributed Behavioral Model》进行学习和总结通过一段原文,一段分析的方法,进行分析概述··摘要The aggregate motion of a flock of birds, a herd of land animals, or aschool of fish is a beautiful and familiar part of the nat

2021-10-11 14:29:19 9593 2

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除