自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(145)
  • 收藏
  • 关注

转载 鞋带算法(Shoelace formula)

比较有趣

2023-10-16 10:23:44 405 2

转载 红黑树-原理

红黑树,可以说是树中的绝对大佬了,它和我们前一篇讲解的avl树一样,都属于二叉排序树,avl树中我们通过记录平衡因子以及旋转来保证一棵树的绝对平衡,而今天所讲的红黑树则是通过给各个节点添加颜色属性来保证一棵树的平衡,那么下面我们就一起揭开红黑树神奇的面纱吧~。注:三叉树的旋转操作在avl树中进行了讲解,此篇文章不再赘述,有需要的朋友可以提前了解。

2023-08-08 14:53:39 163

原创 C++ static成员函数

1、普通成员函数可以访问所有成员(包括成员变量和成员函数),而静态成员函数只能访问静态成员。静态成员函数与普通成员函数的根本区别在于:普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。2、和静态成员变量类似,静态成员函数在声明时要加 static,但在定义时不能加 static。静态成员函数一般都是通过类来调用,也可以通过对象来调用。通过静态成员函数来获得学生的总人数和总成绩:总人数 m_total 和总成绩 m

2022-06-01 13:54:26 743 1

原创 N 叉树的层序遍历

N 叉树的层序遍历给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输

2022-04-12 16:15:29 489

原创 统计各位数字都不同的数字个数

统计各位数字都不同的数字个数给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 。示例 1:输入:n = 2输出:91解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。示例 2:输入:n = 0输出:1提示:0 <= n <= 8思路:根据排列组合的知识动态规划求解当n==1时,0~9,答案为res(n=1)=10当n==

2022-04-11 23:24:05 487

转载 c++中的upper_bound()和lower_bound()的使用

c++中的upper_bound()和lower_bound()的使用STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数。ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。

2022-04-03 10:41:32 343

原创 二倍数对数组

二倍数对数组给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 “对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 * arr[2 * i]” 时,返回 true;否则,返回 false。示例 1:输入:arr = [3,1,3,6]输出:false示例 2:输入:arr = [2,1,2,6]输出:false示例 3:输入:arr = [4,-2,2,-4]输出:true解释:可以用 [-2,-4] 和

2022-04-02 16:31:41 375

转载 std::vector::reserve函数

std::vector::reserve函数函数原型/***@function 申请n个元素的内存空间*@param n 元素个数*/void reserve (size_type n);应用场景函数的作用就是申请内存空间,我们知道vector是一种可以自动扩展的容器,也即是可以根据元素个数自动申请内存,那么有什么必要去主动为它申请内存空间呢?答案是有必要的,我们来看个例子。假如要使用vector存储1000个数据:方法1:vector vec, 然后调用1000次 vec.push_b

2022-04-01 22:59:36 268

原创 Mysql----union和union all的区别

1、UNION 的语法如下:[SQL 语句 1]UNION[SQL 语句 2]2、UNION ALL 的语法如下:[SQL 语句 1]UNION ALL[SQL 语句 2]效率:UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。

2022-03-31 23:36:10 3906 1

原创 最长重复子数组

最长重复子数组给两个整数数组 nums1 和 nums2 ,返回 两个数组中 公共的 、长度最长的子数组的长度 。示例 1:输入:nums1 = [1,2,3,2,1], nums2 = [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3,2,1] 。示例 2:输入:nums1 = [0,0,0,0,0], nums2 = [0,0,0,0,0]输出:5提示:1 <= nums1.length, nums2.length <= 10000 <= nums

2022-03-31 00:21:04 169

原创 考试的最大困扰度

考试的最大困扰度一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是 最大化 有 连续相同 结果的题数。(也就是连续出现 true 或者连续出现 false)。给你一个字符串 answerKey ,其中 answerKey[i] 是第 i 个问题的正确结果。除此以外,还给你一个整数 k ,表示你能进行以下操作的最多次数:每次操作中,将问题的正确答案改为 ‘T’ 或者 ‘F’ (

2022-03-29 22:51:37 128

原创 交替位二进制数

交替位二进制数隔了一个多月,还是决定回来继续写这些刷题博客,中间我还是继续刷了题的,但是确实是空了好久,有些懒惰,现在再重新捡起来慢慢积累吧,万事靠积累,千里之行,始于足下,希望之前的我,戒骄戒躁,不要太急于求成,重新整理好心态就开始出发吧!给定一个正整数,检查它的二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两位的数字永不相同。示例 1:输入:n = 5输出:true解释:5 的二进制表示是:101示例 2:输入:n = 7输出:false解释:7 的二进制表示是

2022-03-28 22:38:16 472

原创 数组中只出现一次的两个数字

数组中只出现一次的两个数字描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。数据范围:数组长度2≤n≤1000,数组中每个数的大小0<val≤1000000要求:空间复杂度 O(1),时间复杂度 O(n)提示:输出时按非降序排列。示例1输入:[1,4,1,6]返回值:[4,6]说明:返回的结果中较小的数排在前面示例2输入:[1,2,3,3,2,9]返回值:[1,9]思路:一个很简单的想法就是利用set在遍历vec

2022-02-28 11:42:56 243

原创 数据流中的中位数

数据流中的中位数描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。数据范围: 数据流中数个数满足 1≤n≤1000 ,大小满足 1≤val≤1000进阶: 空间复杂度 O(n) , 时间复杂度 O(nlogn)示例1输入:[5,2,3,4,1,6,7,0,

2022-02-24 22:25:28 299

原创 最小的K个数

最小的K个数描述给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4(任意顺序皆可)。数据范围: 0≤k,n≤10000,数组中每个数的大小0≤val≤1000要求: 空间复杂度 O(n) ,时间复杂度 O(nlogn)示例1输入:[4,5,1,6,2,7,3,8],4返回值:[1,2,3,4]说明:返回最小的4个数即可,返回[1,3,2,4]也可以示例2输入:[1],

2022-02-24 20:50:36 333

原创 复杂链表的复制

复杂链表的复制描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 下图是一个含有5个结点的复杂链表。图中实线箭头表示next指针,虚线箭头表示random指针。为简单起见,指向null的指针没有画出。示例:输入:{1,2,3,4,5,3,5,#,2,#}输出:{1,2,3,4,5,3,5,#,2,#}解析:

2022-02-14 23:26:41 106

原创 字符串的排列

字符串的排列描述输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组。例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。数据范围:n<10要求:空间复杂度 O(n!),时间复杂度 O(n!)输入描述:输入一个字符串,长度不超过10,字符只包括大小写字母。示例1输入:“ab”返回值:[“ab”,“ba”]说明:返回[“ba”,“ab”]也是正确的示例2输入:“a

2022-02-13 17:45:26 280

原创 滑动窗口的最大值

滑动窗口的最大值描述给定一个长度为 n 的数组 num 和滑动窗口的大小 size ,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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

2022-02-12 18:17:36 709

原创 在二叉树中找到两个节点的最近公共祖先

在二叉树中找到两个节点的最近公共祖先描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。数据范围:1≤n≤1000,树上每个节点的val满足0<val≤100要求:时间复杂度 O(n)注:本题保证二叉树中每个节点的val值均不相同。如当输入[3,5,1,6,2,0,8,#,#,7,4],5,1时,二叉树{3,5,1,6,2,0,8,#,#,7,4}如下图所示:所以节点值为5和节点值为1的节点的最近公共祖先节点的节

2022-02-10 13:46:12 1525

原创 判断是不是平衡二叉树

判断是不是平衡二叉树描述输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。样例解释:样例二叉树如图,为一颗平衡二叉树注:我们约定空树是平衡二叉树。数据范围:n≤100,树上节点的val值满足0≤n≤1000要求:空间复杂度O(1),时间复杂度 O(n)输入描

2022-02-05 14:07:55 4261

原创 动态规划专题

动态规划专题强化动态规划的学习文章目录动态规划专题前言一、连续子数组的最大和1.题目描述:2.解析方法一(动态规划):方法二(动态规划空间优化):二、连续子数组的最大和(二)1.题目描述:2.解析方法一(动态规划):方法二(动态规划空间优化):前言动态规划专题,由简到难一、连续子数组的最大和1.题目描述:输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。数据范围:1 <= n <= 10^5-100 <= a

2022-01-13 12:04:53 279

原创 hw购物单

购物单描述王强今天很开心,公司发给N元的年终奖。王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 附件电脑 打印机,扫描仪书柜 图书书桌 台灯,文具工作椅 无如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件。王强想买的东西很多,为了不超出预算,他把每件物品规定了一个重要度,分为 5 等:用整数 1 ~ 5 表示,第 5 等最重要。他还从因特网上

2022-01-11 14:51:46 143

原创 求最大连续bit数

求最大连续bit数描述求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1本题含有多组样例输入。数据范围:数据组数:1<=t<=5,进阶:时间复杂度:O(log2n),空间复杂度:O(1)输入描述:输入一个int类型数字输出描述:输出转成二进制之后连续1的个数示例1输入:35200输出:212说明:3的二进制表示是11,最多有2个连续的1。5的二进制表示是101,最多只有1个连续的1。方法一:(利用bi

2021-12-13 17:59:17 1305

原创 字符串字符匹配

字符串字符匹配描述判断短字符串S中的所有字符是否在长字符串T中全部出现。请注意本题有多组样例输入。数据范围:1<=len(S),len(T)<=200进阶:时间复杂度:O(n),空间复杂度:O(n)输入描述:输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。输出描述:如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。示例1输入:bcabcapgmlivuembutyjmrcuneguxm

2021-12-12 18:58:35 598

原创 整型数组合并

整型数组合并描述题目标题:将两个整型数组按照升序合并,并且过滤掉重复数组元素。输出时相邻两数之间没有空格。请注意本题有多组样例。输入描述:输入说明,按下列顺序输入:1 输入第一个数组的个数2 输入第一个数组的数值3 输入第二个数组的个数4 输入第二个数组的数值输出描述:输出合并之后的数组示例1输入:31 2 54-1 0 3 2输出:-101235方法一:合并后排序具体做法:直接将输入的第二个数组接到第一个数组后面,后续对合并后的数组使用sort函数排序,然后

2021-12-12 14:26:36 1895

原创 hw火车进站

火车进站描述给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的出站了,先进站的才能出站。要求输出所有火车出站的方案,以字典序排序输出。数据范围:1<=n<=10进阶:时间复杂度:O(n!),空间复杂度:O(n)输入描述:有多组测试用例,每一组第一行输入一个正整数N(0输出描述:输出以字典序从小到大排序的火车出站序列号,每个编号以空格隔开,每个输出

2021-12-12 13:28:40 402

原创 尼科彻斯定理

尼科彻斯定理描述验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。本题含有多组输入数据。数据范围:数据组数:1<=t<=5,1<=m<=100进阶:时间复杂度:O(1),空间复杂度:O(1)输入描述:输入一个int整数输出描述:输出分解后的string示例1输入:6输出:3

2021-12-09 00:14:33 290

原创 字符串通配符

字符串通配符描述问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。要求:实现如下2个通配符:* :匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和数字0到9组成,下同)?:匹配1个字符注意:匹配时不区分大小写。输入:通配符表达式;一组字符串。输出:返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false注意:本题含有多组样例输入!数据范围:数据组数:1<=t<=10,字

2021-12-07 17:03:54 1310

原创 矩阵乘法计算量估算

矩阵乘法计算量估算描述矩阵乘法的运算量与矩阵乘法的顺序强相关。例如:A是一个50×10的矩阵,B是10×20的矩阵,C是20×5的矩阵计算ABC有两种顺序:((AB)C)或者(A(BC)),前者需要计算15000次乘法,后者只需要3500次。编写程序计算不同的计算顺序需要进行的乘法次数。本题含有多组样例输入!数据范围:数据组数:1<=t<=10,矩阵个数:1<=n<=15,行列数:1<=rowi,coli<=100进阶:时间复杂度:O(n),空间复杂度:

2021-12-05 22:07:14 3581 1

原创 hw成绩排序

成绩排序描述查找和排序题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。例示:jack 70peter 96Tom 70smith 67从高到低 成绩peter 96jack 70Tom 70smith 67从低到高smith 67jack 70Tom 70peter 96注:0代表从高到低,1

2021-12-02 23:42:14 119

原创 24点游戏算法

24点游戏算法描述给出4个1-10的数字,通过加减乘除运算,得到数字为24就算胜利,除法指实数除法运算,本题对数字选取顺序无要求,但每个数字仅允许使用一次,且不考虑括号运算此题允许数字重复,如3 3 4 4为合法输入,但是每个数字只允许使用一次,如此处一共有两个3,则运算过程中两个3都被选取计算一次,所以3被调用运算两次,但是对应读入的两个数字输入描述:本题有多组案例。对于每组案例读入一个[1,10]的整数,数字允许重复,测试用例保证无异常数字。输出描述:对于每组案例,输出一行表示能否得到24

2021-12-02 21:25:35 3154 1

原创 配置文件恢复

配置文件恢复描述有6条配置命令,它们执行的结果分别是:命 令执 行resetreset whatreset boardboard faultboard addwhere to addboard deleteno board at allreboot backplaneimpossiblebackplane abortinstall firsthe heunknown command注意:he he不是命令。为了简化

2021-11-30 23:56:43 173

原创 查找两个字符串a,b中的最长公共子串

查找两个字符串a,b中的最长公共子串描述查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!本题含有多组输入数据!数据范围:字符串长度,进阶:时间复杂度:,空间复杂度:输入描述:输入两个字符串输出描述:返回重复出现的字符示例1输入:abcdefghijklmnopabcsafjklmnopqrstuvw输出:jklmnop方法一:(暴力枚举)#incl

2021-11-30 16:54:19 1143

原创 MP3光标位置

MP3光标位置描述MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲,光标初始的位置为第1首歌。现在要实现通过上下键控制光标移动来浏览歌曲列表,控制逻辑如下:歌曲总数<=4的时候,不需要翻页,只是挪动光标位置。光标在第一首歌曲上时,按Up键光标挪到最后一首歌曲;光标在最后一首歌曲时,按Down键光标挪到第一首歌曲。其他情况下用户按Up键,光标挪到上一首歌曲;用户按Down键,光标挪到下一首歌

2021-11-30 00:40:47 128

原创 DNA序列

DNA序列描述一个 DNA 序列由 A/C/G/T 四个字母的排列组合组成。 G 和 C 的比例(定义为 GC-Ratio )是序列中 G 和 C 两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的 GC-Ratio 可能是基因的起始点。给定一个很长的 DNA 序列,以及限定的子串长度 N ,请帮助研究人员在给出的 DNA 序列中从左往右找出 GC-Ratio 最高且长度为 N 的第一个子串。DNA序列为 ACGT 的子串有: ACG , CG , C

2021-11-29 21:25:56 2129

原创 hw放苹果

放苹果描述把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。数据范围:0<=m<=10,1<=n<=10。本题含有多组样例输入。输入描述:输入两个int整数输出描述:输出结果,int型示例1输入:7 3输出:8方法一:递归具体做法:因为不区分顺序,所以只考虑苹果分了几份,每份多少个,很容易知道当苹果为0个的时候或者盘子只有1个的时候,只有1种分法。那这个问题子问题就是苹

2021-11-29 17:49:35 213

原创 查找组成一个偶数最接近的两个素数

查找组成一个偶数最接近的两个素数描述任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。本题含有多组样例输入。数据范围:输入的数据满足输入描述:输入一个偶数输出描述:输出两个素数示例1输入:20输出:713示例2输入:2输出:11#include<iostream>#include<math.h>using namespace std;bool IsPrim

2021-11-29 01:16:12 319

原创 找出字符串中第一个只出现一次的字符

找出字符串中第一个只出现一次的字符描述找出字符串中第一个只出现一次的字符数据范围:输入的字符串长度满足输入描述:输入几个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入:asdfasdfoaabb输出:o-1#include<iostream>#include<string>using namespace std;int main(){ string str; while(getline(cin, st

2021-11-29 00:44:29 480

原创 高精度整数加法

高精度整数加法描述输入两个用字符串 str 表示的整数,求它们所表示的数之和。本题含有多组样例输入。数据范围: 1<=len(str)<=10000输入描述:输入两个字符串。保证字符串只含有’0’~'9’字符输出描述:输出求和后的结果示例1输入:98765432101234567890输出:11111111100#include<iostream>#include<string>#include<stack>#include

2021-11-28 18:15:21 441

原创 完全数计算

完全数计算描述完全数(Perfect number),又称完美数或完备数,是一些特殊的自然数。它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。例如:28,它有约数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。输入n,请输出n以内(含n)完全数的个数。数据范围:1<=n<=5×10^5本题输入含有多组样例。输入描述:输入一个数字n输出描述:输出不超过n的完全数的个数示例1输入:10007100输

2021-11-28 17:32:36 587

空空如也

空空如也

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

TA关注的人

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