刷题
文章平均质量分 70
刷题
JhonKI
励志考研厦大计算机图形学or视觉,以博客记录学习过程
(互三私信下)
展开
-
【C语言】矩阵转换
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-03-05 23:17:33 · 340 阅读 · 1 评论 -
【C语言】[NOIP1999]回文数
因为至多可能会进行30次加法,所以最终的数字长度很有可能会超过int类型的最大范围,导致溢出,所以我们采用数组的方式记录数字。这道题中判断是否进行下一次加法的一句就是当前数是否为回文数,所以我们先自定义一个可以判断是否为回文数的函数。,并且通过输出来判断是否为回文数。但是这个过程中有很多点需要注意。函数,进行回文数相加操作。原创 2024-03-08 22:54:14 · 851 阅读 · 1 评论 -
【C语言】Leetcode 35. 搜索插入位置
根据if的判断条件,left左边的值一直保持小于target,right右边的值一直保持大于等于target,而且left最终一定等于right+1,这么一来,循环结束后,在left和right之间画一条竖线,恰好可以把数组分为两部分:left左边的部分和right右边的部分,而且left左边的部分全部小于target,并以right结尾;这种设置是很规范的,然后再看看你最后返回的是什么,比如说上面用按时输出ans,它是在。它的意思也很简单,就是因为要输出left,所以不能 (target。原创 2024-03-13 23:50:49 · 1250 阅读 · 2 评论 -
[C语言][回朔法+剪枝]组合总和
但是枚举的顺序是 一条路走到黑,发现黑之后,退一步,再向前尝试没走过的路。因此回朔法可以简单的理解为: 走不通就退一步的方枚举法就叫回朔法。的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。这里剪枝操作指的是: 对于有些问题,你走着走着,若某种情况发生了,你就已经直到不能继续往下走了,再走也没有用了。如果至少一个数字的被选数量不同,则两种组合是不同的。的数组的长度不一样)。原创 2024-03-02 16:22:17 · 1165 阅读 · 0 评论 -
[C语言】指针 杨氏矩阵
例如,若选择从右上角找,那么没有上边和右边,而下边一定比我大,左边一定比我小。杨氏矩阵是很有特点的,它有规律递增的特点决定了针对表中的任一元素,它的下方和右方的数一定大于我,左方和上方的数一定小于我,所以查找的时候可利用这一特点,从右上角或者左下角来找。有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。因为矩阵是采用递归的方法,所以每行每列的最末端的数一定是最大的。假设该矩阵为{{1,2,3},{4,5,6},{7,8,9}}原创 2024-02-29 21:06:54 · 501 阅读 · 0 评论 -
【C语言】【时间复杂度】Leetcode 153. 寻找旋转排序数组中的最小值
因此这里的算法复杂度只要把一些加法常数、保留最高项就行,例如在上述冒泡排序中,如果给定的数组就已经是有序的了,那么就是它的最好情况,时间复杂度为O(N).但是如果有非常多的数据很显然我们看不出它到底是否为最好情况,所以我们必须用最坏的期望来计算所以它是O(N*N).表示算法的时间复杂度与输入模 n 的对数成正比,其中对数的底数未指定,默认为2,10或e,根据具体情况而定。指数阶一般是算法题的暴力解法,一般是多层循环的嵌套,例如上面题二中,最大是两层n次循环的嵌套,因此时间复杂度为O(N^2),n的平方次。原创 2024-03-11 16:30:39 · 1019 阅读 · 1 评论 -
【C语言】75. 颜色分类(三路快排)
需要交换数组中下标为 numsSize-1 和下标为 i 的元素,此时因为把 numsSize-1 的元素提到了前面,所以需要再次判断 i 下标的元素,而 two 作为元素2的起始坐标,往前加一,即 two–由于当遇到元素2时,需要把 nums[i] 与 nums[two-1] 交换,之后就需要再次判断 nums[i] ,所以再设置for循环时,不要放入i++条件,而是通过遇到元素0或元素1时再往后判断。本题要求对原地对数组中包含红色(0)、白色(1)和蓝色(2)三种颜色进行排序,不使用库函数。原创 2024-03-10 16:59:36 · 980 阅读 · 1 评论 -
【C语言】牛牛的digit
链接: link用递归的方法从最后一位开始一位一位向上递归原创 2024-03-07 22:08:40 · 358 阅读 · 0 评论 -
【C语言】【回溯】电话号码的字母组合
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-03-04 23:34:56 · 1401 阅读 · 1 评论 -
[C语言]一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,编写一个函数找出这两个只出现一次的数字。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。原创 2024-03-01 20:54:51 · 396 阅读 · 1 评论 -
【C语言】Leetcode 66. 加一
就是元素全为9的情况,这种情况较特殊,需要进位,但是好处是,他的第一位绝对是1,后面也绝对是0,于是我们可以直接开辟一块。原创 2024-03-12 23:21:05 · 521 阅读 · 1 评论 -
【C语言】【Leetcode】2437. 有效时间的数目
由于时钟的最大值为 24,分钟的最大值为 60,在此题解中分别枚举所可能的时钟,以及所有可能分钟,时间复杂度为 O(24+60)=O(1)。这题的可以简单的看成 h1 h2 : m1 m2 的情况,其中 h1 和 h2 有关, m1 和 m2 有关,数目不多可以直接暴力枚举解决。’ 时,我们可以填入 0 - 9 任意一个数字,然后再返回去看是否合法就行。即 00原创 2024-03-31 21:11:51 · 375 阅读 · 0 评论 -
【C语言】【牛客】BC161 大吉大利,今晚吃鸡
该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。再来回看一下本题,我们可以发现本质上其实差不多,不过汉诺塔问题中A,B,C三根柱子可随意选择,但是牛客网这道题只能在相邻的两根柱子里交换。-1,可能会不便于理解,为了能使自己和别人能够更好的理解这道题的本质和处理思想,我们不妨直接用递归的方法,把这道题表现出来。原创 2024-03-18 21:41:20 · 437 阅读 · 0 评论 -
【C语言】【Leetcode】409. 最长回文串
关于这道题,比起一般的回文数题,这题的区别的在给定的字符中任意排序直至形成一个最长的回文数,而且题目中跟我们提到,这里的字符串中只会出现字母,我们只需区分大小写即可。最后判断每个数组里的元素是否为偶数,是偶数直接在回文数总长度上加上这个长度,奇数,则加上奇数后减一。需要注意的一点是,如果有单独出来的一个数,可以把它放在中间,为回文数的总长度加上一,但是仅只能一次。所以我们可以这样思考,建立一个有52个int类型大小的数组,用来记录每个大小写字母出现的次数。原创 2024-04-01 23:21:16 · 491 阅读 · 0 评论 -
【C语言】【Leetcode】【递归】22. 括号生成
递归、回溯、strcpy以0为结束,calloc全部为0原创 2024-04-04 21:37:26 · 781 阅读 · 0 评论 -
【C语言】【牛客】BC136 KiKi判断上三角矩阵
然后题目是判断该矩阵是否是上三角矩阵,那么只要判断下三角是否都为0即可,那么我们要做的是找到下三角形的下标。就行了,这样一来我们就可以通过循环判断这整个下三角矩阵,自然就通过判断他们是否全为。我们可以近似认为矩阵的情况如上,那么 纵坐标。这题很简单但是再牛客中属于中等题。,所以我们首先创建一个变量。原创 2024-03-20 23:33:28 · 700 阅读 · 0 评论 -
【C语言】【Leetcode】88. 合并两个有序数组
为了不多创建一个新的数组,我们可以利用num1数组后面多出来的那几个0做文章,我们在上一种方法中采用的是先把小的取出来,但是如果我们先把大的取出来,放进num1数组的末尾,这样再不创建新的数组的前提下,num1数组的元素也不会被覆盖了。这题属于简单题,比较粗暴的做法就是直接比较两个数组,先把第二个数组加到第一个的后面,如何冒泡排序,这种方法简单粗暴但有效,可是不适用于这题,这题要求我们控制时间复杂度在O(m+n)里所以我们可以尝试双指针的方法。,最后再把这个新创立的数组的值赋给。进行比较,小的数放入。原创 2024-03-25 22:14:43 · 424 阅读 · 0 评论 -
【C语言】【Leetcode】70. 爬楼梯
所以这里我们可以尝试使用动态规划的方法,就是说这里我们是知道目标数的,所以我们可以直接利用for循环从1和2开始一直循环下去,使 f(n) = f(n-1) + f(n-2) 下去,比上面的递归的空间复杂度就小了很多,只有O(n),同时因为没有额外创建循环空间,所以最后空间复杂度是O(1)其实这里还可以用数学的方法做,但是有带你复杂就不说了,有兴趣可以去力扣官方解题思路里看看。这题类似于斐波那契数列的算法,结果其实就是到达前一步和到达前两步的方法之和,一直递归到。原创 2024-03-26 23:01:32 · 421 阅读 · 0 评论