
题解
文章平均质量分 58
收集自己做的题
英雄不问出处~
爱情不敌坚持泪
展开
-
牛客的一道题(C)变种水仙花
变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。例如:求出 5位数中的所有 Lily Number。原创 2024-03-23 17:11:13 · 338 阅读 · 1 评论 -
C语言的青蛙跳台阶问题
/主要就是后一项b的值赋值给前一项a。但是用递归来写,会出现递推的深度太深的情况。c = a + b;//首先要使a,b为1。递归的方式:从第三项开始为前两项的和。//然后以此等到各项的值。青蛙跳台阶问题类似斐波那契数列。非递归其实就是用三个变量来写。所以推荐用非递归的方式来写。递归的终止条件:n<=2。原创 2024-02-26 22:08:14 · 361 阅读 · 1 评论 -
C语言中求自幂数(水仙花数)
水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1。求出0~100000之间的所有“水仙花数”并输出。3+3^3,则153是一个“水仙花数”。原创 2024-02-01 21:04:35 · 397 阅读 · 1 评论 -
牛客的一道题(C)序列中删除指定数字
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。数据范围:序列长度和序列中的值都满足1<=n<=50。原创 2024-03-23 16:42:00 · 395 阅读 · 2 评论 -
C语言中换汽水喝的问题
*你有20块钱,一块钱可以换一瓶汽水,两个空瓶可以换一瓶汽水,问20块钱可以换几瓶汽水?这个是总结的规律:total = 2 * money - 1。empty:空瓶数大于1才能够换汽水。total:总的能喝的汽水数。原创 2024-02-01 19:30:56 · 389 阅读 · 1 评论 -
C语言的汉诺塔问题
【代码】C语言的汉诺塔问题。原创 2024-02-26 21:01:01 · 432 阅读 · 1 评论 -
leetcode刷题--长度最小的子数组
只要sum加到大于等于target就进来循环,每次都减去起始位置的数,count是每次的长度,让i滑动起来,i++终止条件就是sum < target,就拿到最终的长度了。用滑动窗口不会超出时间限制。普通的暴力解法过不了了。j : 终止位置。原创 2024-05-23 11:41:59 · 295 阅读 · 0 评论 -
LeetCode刷题 -- 经典题目,相交链表
望博友们多多支持,祝福我们题题AC。原创 2024-04-28 20:43:13 · 316 阅读 · 0 评论 -
C语言递归刷题(一)
递归最重要的就是去思考它的结束条件如果有不足之处,还望博友们指出最后祝福我们题题AC。原创 2024-04-27 20:43:49 · 660 阅读 · 1 评论 -
Leetcode刷题——链表的中间节点
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。给你单链表的头结点 head ,请你找出并返回链表的中间结点。输入:head = [1,2,3,4,5,6]如果有两个中间结点,则返回第二个中间结点。输入:head = [1,2,3,4,5]解释:链表只有一个中间结点,值为 3。所以慢指针走一个节点,快指针走两个节点。2*慢指针 = 快指针。输出:[3,4,5]输出:[4,5,6]偶数个数据有两个节点。奇数个数据有1个节点。原创 2024-04-15 18:34:33 · 309 阅读 · 1 评论 -
LeetCode刷题 -- 贪心(一)
因为5块钱是最有用的,比如[20,10] 你现在有三个5块,1个10块,第一种后面不需要用到10块钱,可以把最优解的两个5块替换为10块钱。第二种后面需要用到10块钱,可以把后面的10块钱和两个5块钱交换。比如20块钱,10和5 5,5,5 两种处理思路。2. 给10块钱 ,找5块钱或者没有5块钱可找。柠檬水5块一杯(如果顾客给你5块你就收下)第二种找10,5第二次还可以找5块钱。第一种找5,5,5第二次就没法找了。最优解:5 + 5 + 5 …1. 给5块钱,收下。再考虑5,5,5这种。原创 2024-12-07 17:03:29 · 420 阅读 · 17 评论 -
LeetCode刷题 -- 分治快排
2.如果nums[i] == 2,- -right,i下标对应元素交换,先- -right,对应元素是未知的未扫描的,和2交换,i下标对应元素是未知的,1.如果nums[i] == 0,++left, i++下标对应元素交换,先++left后元素对应是1,和0元素交换,再i++第K大的元素一定落在第一次数组分成三份的某一个区间内,所以只要去其中一个区间用快排可以解决,要注意的是。,传k时要传k-b-c,a,b,c都表示区间中元素的个数,k-b-c表示在第一个区间内找第K大的。快排的选择跟上一题的逻辑很像。原创 2024-12-03 20:43:57 · 1113 阅读 · 16 评论 -
LeetCode刷题 -- 贪心(二)
y可以和后面的x交换,不影响最小操作数,可以转为贪心解,即使y/4,y/2,y,y是未知的,排下序,y,y/2,y/4,y已知。每次将数组中最大的数减半直到数组的和小于等于原始数组的一半,求最小操作数。,y比x小,最优解y/2可以是最小操作数,那么x/2就一定是最小操作数。在x > y的前提下。原创 2024-12-16 17:00:07 · 623 阅读 · 40 评论 -
LeetCode刷题 -- 模拟
1.left == right 时,right一直加加直到right不等于left(这里指的是下标对应的值哈)2.count = right - left,加到tmp中,ret[left]也加到tmp中。寻找青蛙出现的蛙鸣最少,连续的完整蛙鸣可以是一个青蛙叫的,正确叫完返回青蛙数,错误返回-1。,当前- -,0位置++,表是有青蛙走完了完整的蛙鸣,可以分一个青蛙去走另一个蛙鸣,用来存映射0到4出现的次数,最后返回最后一个数字的下标对应的值即可。,就不是完整的蛙鸣,返回-1。,前驱- -,当前++原创 2024-11-29 16:47:53 · 384 阅读 · 4 评论 -
LeetCode刷题 -- 字符串
解法二:从中间开始向两边扩展,固定一个中点,i遍历n次,第一种情况left和right都从i位置向两边扩展(字符串是奇数个字符),第二种情况,left从i位置,right从i+1位置向两边扩展(字符串是偶数个字符),这样字符串是奇数和偶数的情况都覆盖到了,两种情况遍历字符串2*n次,时间复杂度是O(N*N)法一:模拟,固定一个字符和其他字符串相乘,两个for循环,注意要先逆置后计算,先要加入前导零,,表示逆序,加完后就是逆序的结果了。只需找出字符串中的公共的最长字符串即可。原创 2024-12-12 23:28:06 · 1016 阅读 · 37 评论 -
LeetCode刷题 -- 哈希表
比如[1,3,4,5] target = 8 固定的数是4,哈希表中的数也是4,这样要判断 nums[i] == x&&hash[nums[i]]!,先把字符串1丢入哈希表中,再遍历字符串2,如果字符串2中存在字符串1中的字符,哈希表就减减,如果哈希中的值小于0则为假。只需要从前往后遍历,把前面的数都加入哈希表中,固定到某个数时,诺某个数出现了第二次就返回true,否则返回false。:在法一的基础上,加入一个哈希表,先把所有的数丢入哈希表中,在判断固定的数和表中的数相加是否为target,但是要。原创 2024-12-08 13:53:05 · 1190 阅读 · 23 评论 -
LeetCode刷题--位运算
用int hash[26]哈希表去遍历整个字符串,如果谋个字符出现的次数 > 1次,那么返回true,否则返回false。把所有数第0位的比特位的值相加然后%3,有三个相同的数,得到的最终结果是唯一的那个数的比特位。0表示字符未出现过,1表示这个字符已经出现过一次了。只要字符的长度超过了26表示一定出现了重复字符。空间复杂度:O(N) 开了一个哈希表。:用位图的思想,因为字符不超过32个。时间复杂度:O(N) 遍历一遍数组。位图的下标是0到31。原创 2024-11-24 19:44:11 · 447 阅读 · 1 评论