
算法与数据结构
文章平均质量分 66
OceanStar的学习笔记
这个作者很懒,什么都没留下…
展开
-
leetcode刷题目录总结
leetcode刷题目录总结二原创 2022-07-04 08:55:11 · 3118 阅读 · 1 评论 -
leetcode刷题目录
刷题参考模拟leetcode:1. 两数之和leetcode:2. 两数相加leetcode:6. Z 字形变换leetcode:7. 整数反转leetcode:8. 字符串转换整数 (atoi)dpleetcode:5. 最长回文子串排序交换类排序 – 冒泡排序 鸡尾酒排序 奇偶排序 梳子排序 侏儒排序 快速排序 臭皮匠排序 Bogo 排序选择类排序 – 选择排序 堆排序 Smooth 排序 笛卡尔树排序 锦标赛排序 圈排序插入类排序 – 插入排序 希尔排序 二叉查找原创 2020-06-28 09:30:33 · 3289 阅读 · 2 评论 -
leetcode:611. 有效三角形的个数
为了防止统计重复的三元组,我们可以先对数组进行排序,然后采取「先枚举较大数;在下标不超过较大数下标范围内,找次大数;在下标不超过次大数下标范围内,找较小数」的策略。简单来说,我们需要统计所有符合nums[k] + nums[j] > nums[i] 条件的(i, j, k)的个数。转载 2020-01-20 17:58:32 · 265 阅读 · 1 评论 -
leetcode:739. 每日温度
对于输入 75,它经过 1 天后发现温度是 71,没有超过它,继续等,一直 等了四天,在第七天才等到温度的升高,温度升高到 76 ,所以对应的结果是 4。对于输入 71,它经过 1 天后发现温度是 69,没有超过它,继续等,一直 等了两天,在第六天才等到温度的升高,温度升高到 72 ,所以对应的结果是 2。对于输入 73,它需要 经过一天 才能等到温度的升高,也就是在第二天的时候,温度升高到 74 ,所以对应的结果是 1。遍历的时候,每个数都需要往后数,直到找到比它大的数,数的个数就是对应的值。转载 2020-01-21 20:16:27 · 316 阅读 · 0 评论 -
leetcode:1638. 统计只差一个字符的子串数目
枚举子串在s中的起始位置i,t中的起始位置j。随后同时遍历两个字符串,统计对应位置不同的字符的数量。转载 2019-10-27 13:54:47 · 198 阅读 · 0 评论 -
leetcode:1626. 无矛盾的最佳球队
由于球员在数组中的下标不重要,所以可以按照分数或者年龄排序。这里按照分数从小到大排序,分数相同的按照年龄从小到大排序。我们定义f[i]表示以age[i]结尾的递增子序列的最大得分。因此,问题转换位,从ages中找到一个得分之和最大的。转载 2019-11-12 09:57:25 · 290 阅读 · 0 评论 -
leetcode:1616. 分割两个字符串得到回文串
【代码】leetcode:1616. 分割两个字符串得到回文串。转载 2019-10-27 13:59:54 · 197 阅读 · 0 评论 -
leetcode:1615.最大网络秩
【代码】leetcode:1615.最大网络秩。转载 2019-10-29 15:42:27 · 1307 阅读 · 0 评论 -
leetcode:1605. 给定行和列的和求可行矩阵
【代码】leetcode:1605. 给定行和列的和求可行矩阵。转载 2020-10-15 11:42:09 · 636 阅读 · 1 评论 -
leetcode:2389. 和有限的最长子序列
【代码】leetcode:2389. 和有限的最长子序列。转载 2019-09-16 10:43:02 · 305 阅读 · 0 评论 -
leetcode:707. 设计链表
【代码】leetcode:707. 设计链表。转载 2018-07-07 21:04:08 · 262 阅读 · 0 评论 -
leetcode: 2383. 赢得比赛需要的最少训练时长
遍历 energy 和 experience,如果不如对手,那么增加自己的精力和经验,补到刚好超过对手即可。把这些增加的量加起来,在开始比赛前训练,就可以击败所有对手了。你可能会问,题目不是要求在开始比赛前训练吗,怎么到比赛中去训练了?转载 2022-01-09 22:40:13 · 245 阅读 · 0 评论 -
leetcode:747. 至少是其他数字两倍的最大数
根据题意进行模拟即可,遍历过程中维护最大值和次大值的下标,最后判断最大值是否至少为次大值两倍。转载 2022-01-12 16:34:38 · 473 阅读 · 0 评论 -
leetcode:717. 1 比特与 2 比特字符
find_package(OpenCV PATHS /opt/opencv NO_DEFAULT_PATH REQUIRED)if (OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) message( ${OpenCV_LIBS})else() message("OpenCV not found, so we won't build the project.")en转载 2021-03-25 14:08:06 · 16998 阅读 · 0 评论 -
leetcode:665. 非递减数列
改变拐点(nums[i] > nums[i + 1])的方法也就两种:要么将nums[i]缩小,要么将nums[i+1]放大。的过程,如果存在,那么看能不能。转载 2019-04-02 10:12:02 · 1624 阅读 · 1 评论 -
leetcode:450. 删除二叉搜索树中的节点
我们需要把二叉搜索树中删除节点中遇到大的所有情况都搞清楚。转载 2019-07-23 10:05:06 · 1473 阅读 · 1 评论 -
数学:atan2
C++提供了两个求反正切的函数atan(y/x),atan2(y,x)转载 2023-03-03 18:30:00 · 795 阅读 · 0 评论 -
算法:牛客网输入输出练习
C++语言并未定义任何输入输出(IO)语句,而是使用了一个全面的标准库提供IO机制。一般我们只需要了解IO库中一部分基本概念和操作就可以满足需求了最基本的库是iostream。两个基础类型iostream包含了两个基础类型istream和ostream,分别表示输入流和输出流一个流就是一个字符序列,是从IO设备读出或者写入IO设备的术语“流”可以理解为:随着时间的推移,字符是顺序生成或者消耗的四个标准输入输出对象标准库定义了4个IO对象。标准输入cin:用来处理输入标准输出cout:转载 2021-02-01 16:34:32 · 953 阅读 · 2 评论 -
算法:根据题意保留节点,没有保留的节点删掉
给定一颗多叉树节点,按照图理解题意,并返回处理后的头结点。转载 2023-01-03 23:22:00 · 144 阅读 · 0 评论 -
leetcode:797. 所有可能的路径
搜索过程中不会反复遍历同一个点,因此我们无需判断是否当前是否已经遍历过了。唯一需要注意的是,本题为。深度优先搜索的模板题。转载 2022-11-30 20:34:27 · 365 阅读 · 3 评论 -
leetcode:1091. 二进制矩阵中的最短路径
典型的BFS最短路径问题,用DFS也可以求解,但是容易超时。什么时候用BFS,什么时候DFS。转载 2022-11-05 22:17:20 · 701 阅读 · 0 评论 -
leetcode:995. 连续K位翻转的最小次数
题意:给定一个只有0和1的数组,有给定一个数字k,每次可以翻转任意连续的k个位置的数字,至少需要多少步可以将0全部变成1。转载 2022-11-02 22:41:03 · 376 阅读 · 0 评论 -
leetcode:684. 冗余连接(无向图)
如果两个顶点属于相同的连通分量,则说明在遍历到当前的边之前,这两个顶点之间已经连通,因此当前的边导致环出现,为附加的边,将当前的边作为答案返回。如果两个顶点属于不同的连通分量,则说明在遍历到当前的边之前,这两个顶点之间不连通,因此当前的边不会导致环出现,合并这两个顶点的连通分量。题目要求:给出一个无向图,要我们找出一条可以删去的边,使得剩余部分是一个树,如果有多个答案,则返回二维数组中最后出现的边。树是一个连通且无环的无向图,在树中多了一条附加的边之后就会出现环,因此附加的边即为导致环出现的边。转载 2022-10-30 22:14:11 · 510 阅读 · 0 评论 -
leetcode:721. 账户合并
题意:给出一堆账户和对应的邮箱。要求合并同一个人的多个邮箱账户。所以我们只能通过邮箱是否相同来判断是否是同一个人。转载 2021-10-06 20:56:28 · 604 阅读 · 0 评论 -
leetcode:765. 情侣牵手
取出前两个数字3和1,其群组号分别为1和0,带入 find 函数返回不同值,则此时将群组0和群组1链接起来,变成一个群组,则此时只有两个群组了,res 自增1,变为了1。此时取出最后两个数2和5,其群组号分别为1和2,因为此时都是一个大组内的了,带入 find 函数返回相同的值,不做任何处理。此时取出4和0,其群组号分别为2和0,带入 find 函数返回不同值,则此时将群组 0&1 和群组2链接起来,变成一个超大群组,res 自增1,变为了2。举个例子:[3 1 4 0 2 5]转载 2021-10-17 19:57:31 · 450 阅读 · 0 评论 -
leetcode:839. 相似字符串组
那么,什么叫做“相似字符串组呢”?即相似字符串组中的每个字符串都有另外至少一个字符串和它相似。比如对于 {“tars”, “rats”, “arts”} 这个相似字符串组而言,相似关系是 “tars” “rats” “arts”。,只要按位置对比字符,若不相等则 diff 自增1,若 diff 大于2了直接返回 false,因为只有 diff 正好等于2或者0的时候才相似。题目大意:给出一个字符串数组,要求找出这个数组中,“不相似”的字符串有多少种?怎么判断字符串A和字符串B是否相似呢?转载 2022-10-29 18:35:48 · 520 阅读 · 0 评论 -
leetcode:399. 除法求值
其中 parent[a] = b 表示:结点 a 的(直接)父亲结点是 b,与之对应的有向边的权重,记为 weight[a] = 2.0,即 weight[a] 表示结点 a 到它的 直接父亲结点 的有向边的权重。通过示例1的分析,我们知道了,题目给出的equations 和 values可以表示成一个图,equations 中出现的变量就是图的顶点,[分子]于「分母」的比值可以表示成一个有向关系(因为「分子」和「分母」是有序的,不可以对换),并且这个图是一个带权图,values 就是对应的有向边的权值。转载 2022-10-29 16:21:24 · 559 阅读 · 0 评论 -
leetcode:672. 灯泡开关 Ⅱ
即先找出每个开关影响的灯。观察上面的数组,我们可以发现以6个为1组,都是重复的pattern,所以我们可以把重复的pattern去掉而不会影响结果。如果n大于6,我们则对其取余再加上6,新的n跟使用原来的n会得到同样的结果。第一个,我们需要明确的是,我们无需考虑按钮的顺序,只需要考虑每个按钮被按了几次,在按钮次数一样的情况下,顺序并不会影响最后的状态。更进一步的,不需要考虑每个按钮具体被按了几次,而只需要考虑被按了奇数次还是偶数次即可。转载 2022-10-26 18:55:21 · 308 阅读 · 0 评论 -
leetcode:990. 等式方程的可满足性
【代码】leetcode:990. 等式方程的可满足性。转载 2022-10-25 21:46:23 · 345 阅读 · 0 评论 -
leetcode:1353. 最多可以参加的会议数目
(3) 接下来队列里的所有会议都是今天可以去参加的,按道理说,先把[ 早结束的会议] 参加完要好一些,因为像这样,还能在未来的某一天,在其他会议结束再前去参加 [ 后结束的会议]。综上,使用升序的优先队列,队列的值即为会议的结束时间,再此之前根据会议的开始时间进行排序,因为会议是越早开始越好安排。(1) 为了保证能参加最多的会议,所以每一天都尽量选择一个会议参加,首先要在已经开始的会议里面挑选,先把所有开始的会议入队。(2) 检查队列中的会议,若会议结束时间已经超过今天了,则出队,说明已经来不及参加了。转载 2022-10-21 14:51:47 · 499 阅读 · 0 评论 -
LintCode 1546. 零钱问题
小明是一个销售员,客人在他的地方买了东西,付给了小明一定面值的钱之后,小明需要把多余的钱退给客人。客人付给了小明n,小明的东西的售价为m,小明能退回给客人的面额只能为[100,50,20,10,5,2,1]的组合。现在小明想要使纸币数量之和最小,请返回这个最小值。转载 2022-10-21 11:08:31 · 497 阅读 · 0 评论 -
华为机试:求符合要求的结对方式
【代码】华为机试:求符合要求的结对方式。转载 2022-09-30 13:34:36 · 522 阅读 · 0 评论 -
华为机试:计算最大乘积
【代码】华为机试:计算最大乘积。转载 2022-09-30 13:21:47 · 568 阅读 · 0 评论 -
华为机试:快递运输
思路:排序,然后尽可能的装小的。转载 2022-09-30 13:11:30 · 495 阅读 · 0 评论 -
华为机试:乱序整数序列两数之和绝对值最小
【代码】华为机试:乱序整数序列两数之和绝对值最小。转载 2022-09-30 12:56:45 · 919 阅读 · 0 评论 -
华为机试:磁盘容量排序
【代码】华为机试:磁盘容量排序。转载 2022-09-30 12:35:40 · 443 阅读 · 0 评论 -
华为机试:太阳能板最大面积
也就是说对于两根柱子而言,即使一个是1,一个是9,那么这个太阳能板能安装的最大面积也只是取决于最短柱子的长度,因此我们在获取这两根柱子高度时,应该选择Math.min(arr[i],arr[j])来作为太阳能板的高度。可以使用双指针的解法,初始化双指针分列水槽左右两端,循环每轮将短板向内移动一格,并更新面积最大值,直到两指针相遇时跳出;而如果移动长板,则这个太阳板的短板不变或者变小,下一个太阳板的面积必然变小。因为每次移动短板,这个太阳板的最短板可能变大,下一个太阳板的面积可能增大。转载 2022-09-30 12:18:22 · 1081 阅读 · 0 评论 -
算法:挑选出100瓶药水中有且仅有1瓶毒药水所需的最少老鼠数量?
有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?100 瓶水其中有一瓶有毒,用老鼠试毒老鼠试后 7 天会死掉,需要多少只老鼠才能试出哪瓶水有毒?转载 2021-10-17 18:19:48 · 3639 阅读 · 0 评论 -
算法:100盏灯问题
有100盏灯,编号依次为1,2,3.100,电灯全部关着。现在来了100个人,第一个人把所有的灯开关按下;第二个人隔一个灯按下(2,4,6…);第三个人每隔两个灯按下(3,6,9…).第100个人隔99个灯按下(100),最后还有几盏灯,那几盏灯亮着?转载 2021-10-11 22:56:39 · 1338 阅读 · 0 评论 -
华为机试:最大时间
【代码】华为机试:最大时间。转载 2021-10-08 17:01:50 · 427 阅读 · 0 评论