- 博客(30)
- 收藏
- 关注
原创 leetcode: 2397. 被列覆盖的最多行数 二进制枚举 c语言
举个例子 我选取第一列和第三列,第二列不选取,即二进制为101.我要判断的当前行对应的二进制为111.111&101=101 不等于111,所以这行不满足条件。只需要i++一直增加,然后判断i的二进制中1的个数是否和要求的列数相等,相等就进入下一步。- 第 2 行未被覆盖,因为 matrix[2][1] == 1 但是 1 未存在于 s 中。然后把选择的列也看成二进制总共三列,示例1要求选2列就有,011,101,110这三种选择;选择唯一的一列,两行都被覆盖了,因为整个矩阵都被覆盖了。
2024-01-04 13:54:15
750
原创 leetcode: 3无重复字符的最长子串。滑动窗口,c语言
思路:双指针,右指针每前进一次,就从左指针开始检查一次,看从左指针开始到右指针前一个数(左闭右开区间)有没有和右指针相等的。如果没有,这就是一个无重复字符的子串,如果有就让左指针跳到这个字符的下一个位置,因为这个字符和右指针所在字符重复了。检查结束之后,记录下长度。,请你找出其中不含有重复字符的。请注意,你的答案必须是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。因为无重复字符的最长子串是。,所以其长度为 3。,所以其长度为 1。,所以其长度为 3。时间复杂度O(n);空间复杂度O(1);
2024-01-02 22:52:35
460
原创 每日一题 leetcode1599:经营摩天轮的最大利润 模拟 c语言
2. 9 位游客抵达,4 位登舱,11 位等待(2 位是先前就在等待的,9 位新加入等待的),摩天轮轮转。2. 3 位游客抵达,4 位在等待的游客登舱,其他 3 位等待,摩天轮轮转。3. 最后 6 位游客抵达,4 位登舱,13 位等待,摩天轮轮转。1. 10 位游客抵达,4 位登舱,6 位等待下一舱,摩天轮轮转。4. 5 位游客抵达,4 位登舱,1 位等待,摩天轮轮转。1. 8 位游客抵达,4 位登舱,4 位等待下一舱,摩天轮轮转。2. 4 位游客抵达,4 位登舱,0 位等待,摩天轮轮转。
2024-01-01 21:47:00
419
原创 leetcode:6 N字形变换 c语言 找下标规律
还是以上面的为例,第二行中,A和L和S之间总的间隔为6,第三行中,Y和A和H之间的间隔也为6.这是 numRows=4的情况,将等于3,5,6的情况列出来找规律就能发现,和为2*numRows-2,第一个数和第二个数之间的距离为2 * numRows - 2 - 2 * j。j是N字形中的所在行的下标。现在就是中间有所不同,一个完整的N里面第一行和最后一行都只有两个字符,其它位置则有三个字符,可以将同一行相邻之间的距离加起来,然后找规律。P的下标为0加上2*4-2之后也就是6,下标为6的位置就是I;
2023-12-24 15:31:41
384
原创 leetcode:151反转字符串中的单词 c语言,双指针
中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用。反转后的字符串中不能存在前导空格和尾随空格。第一步之后变成" dlrow olleh "第二步之后变成"dlrow olleh"中使用至少一个空格将字符串中的。之间用单个空格连接的结果字符串。是由非空格字符组成的字符串。三个步骤可以随意交换。
2023-12-24 11:11:14
460
原创 leetcode:162寻找峰值 1901寻找峰值II c语言,二分查找
原理:以行为例,由于周围有一圈-1,矩阵里面都为正,那就像一座山,中间高,四周低,按照思路来,比如已知第一行的最大值,如果它不是峰值,证明同列的第二行比它大就往大的那个方向走,找到第二行的最大值再比较,以此类推。我的讲解是顺序的,二分也一样,从中间开始,往大的方向走,因为是二分,跳的很大,可能走过头,回头就行。必定能找到峰值,因为外圈为-1,假设没有峰值,那第一行最大值必定小于第二行的一个数,那第二行的最大值肯定大于第一行的所有数,上一句话说了。3 是峰值元素,你的函数应该返回其索引 2。
2023-12-19 21:48:13
879
原创 leetcode:12,13罗马数字转数字和数字转罗马数字。c语言
罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给定一个罗马数字,将其转换成整数。
2023-12-17 22:54:32
820
原创 每日一题,746使用最小花费爬楼梯。c语言,很简单的动态规划
一旦你支付此费用,即可选择向上爬一个或者两个台阶。- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 4 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。- 支付 1 ,向上爬一个台阶,到达下标为 7 的台阶。- 支付 1 ,向上爬两个台阶,到达下标为 9 的台阶。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。- 支付 1 ,向上爬一个台阶,到达楼梯顶部。你将从下标为 1 的台阶开始。你将从下标为 0 的台阶开始。
2023-12-17 21:36:20
39
原创 leetcode:42接雨水 .c语言,双指针
思路:双指针,第一个指针指向第一根柱子,第二个指针从第二根柱子往后遍历,直到找到一根比第一个指针指向的柱子高或者等高的柱子。然后计算空位,用矮的柱子高度乘以他们两个之间的距离减一,然后减去他们中间的其它更矮的柱子占的空间(用一个循环来遍历他们之间的矮柱子),就是接的雨水。通过上述例子的图可以看到我们目前之完成了一半的雨水计算,即最高的柱子的左边接的雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
2023-12-15 22:43:03
66
原创 leetcode:134 加油站 前缀和 贪心 c语言
你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 4 号加油站,此时油箱有 4 - 1 + 5 = 8 升汽油。开往 1 号加油站,此时油箱有 7 - 3 + 2 = 6 升汽油。开往 2 号加油站,此时油箱有 6 - 4 + 3 = 5 升汽油。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。
2023-12-14 22:25:59
115
原创 leetcode238:除自身以外数组的乘积。c语言,双指针
思路:头指针和尾指针同时开始,遍历答案数组,头指针所在的位置的值的意义是该位置左边的所有的数的乘积,尾指针所在的位置的值的意义是该位置右边的数的乘积。第三次1,1*(3*4(右边数字乘积为3*4)),(2*1)(左边乘积)*4(右边乘积),1。第一次 1(左边没数字所以为1),1,1,1(右边没数字所以为1)第二次1,1(左边数字乘积1),4(右边数字乘积为4),1。第四次2*3*4,1*3*4,1*2*4,1*2*3。答案数组初始为1,1,1,1。时间复杂度内完成此题。举例 1,2,3,4。
2023-12-13 23:05:55
42
原创 leetcode每日一题 2697 字典序最小回文串,c语言。双指针
将 "egcfe" 变成回文字符串的最小操作次数为 1 ,修改 1 次得到的字典序最小回文字符串是 "efcfe",只需将 'g' 改为 'f'。将 "seven" 变成回文字符串的最小操作次数为 1 ,修改 1 次得到的字典序最小回文字符串是 "neven"。将 "abcd" 变成回文字符串的最小操作次数为 2 ,修改 2 次得到的字典序最小回文字符串是 "abba"。,你可以对其执行一些操作。操作次数的方案不止一种,则只需选取。出现不同的第一个位置,如果该位置上。返回最终的回文字符串。
2023-12-13 21:49:04
67
原创 刷题记录:leetcode:274 H指数。二分查找 c语言
如果继续下去,mid又变成1,count又变成3,就死循环了。所以用一个判别变量flag,mid增的时候就置1,mid减的时候判断,flag是否为1,如果为1则mid已经增加过了,已经回过头了,那么就返回当前mid为答案。如果mid一开始一直减,然后又增了一次flag=1,然后肯定又减,这时也能判断回过头了。可以从数组大小的一半开始查找,统计大于mid的数的数量,mid只可能一直加,或者一直减,也就是朝一个方向前进,如果回头了,那肯定是不满足条件了。篇论文被引用的次数。篇论文,每篇论文相应的被引用了。
2023-12-11 21:01:11
64
1
原创 刷题记录:leetode:2048下一个更大的数值平衡数 .c语言。暴力
注意,1022 不能作为本输入的答案,因为数字 0 的出现次数超过了 0。方法二:利用方法一找出来的范围内的平衡数构造一个表,然后二分查找。这也是严格大于 1000 的最小数值平衡数。这也是严格大于 3000 的最小数值平衡数。这也是严格大于 1 的最小数值平衡数。- 数字 3 出现 3 次。- 数字 3 出现 3 次。- 数字 2 出现 2 次。- 数字 1 出现 1 次。- 数字 1 出现 1 次。
2023-12-09 10:24:49
85
1
原创 刷题记录:leetcode: 122买卖股票的最佳时机|| 动态规划。c语言
思路:每天有两种可能,一种是持有股票,一种是不持有股票,如果持有股票,可能是因为前一天就持有股票,也可能是前一天没有股票,今天刚买的。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。另一种同样的道理,不持有股票,可能是前一天就不持有股票,也可能是前一天持有股票,今天才卖出,然后比较,选出大的,赋值给今天不持有股票的状态。我们只需要前一天的状态来确定今天的状态,利润一直是取最大的,所以不用创建数组。
2023-12-07 22:33:27
35
原创 刷题记录:LeetCode:54螺旋矩阵。c语言。逐层模拟
逐层遍历,一圈一圈的,设行为n,列为m。首先确定圈数选取可以找到规律,选取n和m里面较小的数加1,然后除2就是圈数了。因为有些圈并不是完整的,甚至只有一行,如果不及时退出会导致重复遍历。因为第一次是左到右,第二次是上到下。注意:从上往下应该设置好起点,起点是上次从左到右的终点往上移一格,即行数加1。先是从左到右,然后是上到下,然后是右到左,最后是下到上,一圈就结束了。假设边用i表示,我遍历从左到右,int j=i;然后是下一圈,下一圈明显,左右两边,或者上下两边都。因为随着圈数增加,圈会缩小。
2023-12-06 23:57:38
73
1
原创 刷题记录:leetcode:64最小路径和 动态规划,c语言
请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。因为路径 1→3→1→1→1 的总和最小。每次只能向下或者向右移动一步。给定一个包含非负整数的。
2023-12-05 14:13:59
35
原创 刷题记录:leetcode:169多数元素。双指针。C语言
遇到相同的数字慢指针就往前走一步,并且赋值,遇到不同的也赋值,慢指针再往后,如果用if判断,为0就退不了。拿1,3,1,1,5举例。low=1,fast=4,1和5不同,所以赋值,变成,1,5,1,1,5。low=0,fast=2,然后3和1比较不同,所以变成1,3,1,1,5。low=0,fast=1.1和3比较,不同所以变成3,3,1,1,5。low=0,fast=3,1和1相同,所以low前进再赋值,1,1,1,1,5.快慢指针,抵消不相同的,最后返回数组第一个。空间复杂度: O(1)
2023-12-05 13:45:38
32
原创 软件工程4月19日作业
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
2023-04-24 19:31:16
33
原创 软件工程3月13日作业
结对编程(Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作,是极限编程的组成部分。一个人输入代码,称作驾驶员;另一个人负责审查工作,称作观察员(或导航员)。在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案。结对编程能编写出质量更高的代码。可以促进程序员自身的提高。
2023-03-15 09:14:53
36
原创 软件工程3月8日作业
拆分部署催生出DEVOPS,在这种开发模式下,运维需要做的上线工作,主要就是将代码部署到对应的机器里面,微服务有那么多的服务,每个大点的公司几百个服务不算多,而且还可能随时搞一个服务出来,如果还按照原始的脚本部署方式,可能最后连是哪个脚本都找不到。(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。即人(People)、流程(Process)和平台(Platform)。人 + 流程 = 文化。
2023-03-15 09:04:39
33
原创 软件工程3月6日作业
通过学习软件工程方法论,能够学到系统的科学的理论框架,吸取前人的经验,避开错误的道路,提高我们软件开发的速度和质量。《有人负责,才有质量:写给在集市中迷失的一代》这篇文章看的不是太懂,“集市”上大多数人只会写代码,不会设计和规划,代码散乱,效率低。为了追求所谓的方便,反而让代码变得更加繁琐,虽然方便了,但是代码质量低,运行速度慢。为了避免重蹈覆辙我们就应该学习软件工程方法论,它能够提高我的设计和规划能力,以便软件开发流程有条不紊的进行,最后软件能达到我们预期效果的同时,代码质量也高,软
2023-03-08 11:53:03
35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人