![](https://img-blog.csdnimg.cn/ef99e10139524ccca1bf9020b597eb50.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
每日一练
文章平均质量分 66
每日一练系列,每一期保底是有一道编程题目(力扣),其他我觉得很不错的题目也会上传的哦,我会尽我所能进行讲解,争取能让各位听的清楚,从中收获,每日一期尽可能每日都会去更新,放假期间是会的,上学日就会2天一更吧,望君共勉
----K1
一名大二学生,目前学习c,java和数据结构与算法等领域,共勉 争取每日一更
展开
-
牛客网 NC107 寻找峰值 (二分查找)
NC107寻找峰值描述给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于2.假设nums[-1] = nums[n] = 负无穷3.对于所有有效的 i 都有 nums[i] != nums[i + 1]2---二分查找因为题目将数组边界看成最小值,而我们只需要找到其中一个波峰,因此只要不断地往高处走,一定会有波峰。那我们可以每次找一个标杆元素,将数组分成两个区间,每次就原创 2023-08-15 22:46:32 · 44 阅读 · 1 评论 -
面试经典 150 题--80-- 删除有序数组中的重复项 II(双指针)
到慢指针的地方就可以了,只不过26是出现一次就可以了,这80题删除有序数组中的重复项 II就是出现两次了, 记住。这道题与题号26差不多的思路的,快慢指针的思路的,通过快指针去找到后面的数字,将其。删除重复出现的元素,使得出现次数超过两次的元素。并在使用 O(1) 额外空间的条件下完成。不需要考虑数组中超出新长度后面的元素。函数应返回新长度 length =, 并且原数组的前五个元素被修改为。, 并且原数组的前五个元素被修改为。不要使用额外的数组空间,你必须在。,返回删除后数组的新长度。原创 2023-08-14 22:42:55 · 45 阅读 · 1 评论 -
面试经典 150 题--力扣88. 合并两个有序数组(双指针+数组)思路讲解 C语言
首先nums1长度是m+n的,所以我们只需要从尾部进行操作就可以了的,首先设置三个指针m,n,i,m去指向nums1[m-1]的,n指向nums2[n-1],而i指向nums1[m+n-1],然后向前遍历就可以了,停止条件是m>=0以及n>=0,ok,我们开始吧。因为swap(nums1[i--], nums2[n--]);,5,6] ,其中斜体加粗标注的为 nums1 中的元素。需要合并 [1,2,3] 和 [2,5,6]。需要合并的数组是 [] 和 [1]。需要合并 [1] 和 []。原创 2023-08-13 22:49:58 · 124 阅读 · 1 评论 -
面试经典 150 题 力扣--27. 移除元素(数组,双指针) 思路+讲解
你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。这道题说了不能去使用额外的空间,要求的是原地修改,所以我们只能在nums数组上操作的,不能再暴力遍历,把不是val的值,赋值到另外一个数组的。我们可以去设置双指针(left,right)来对这个数组操作,右指针(right)是用来遍历整个数组的。你不需要考虑数组中超出新长度后面的元素。你不需要考虑数组中超出新长度后面的元素。原创 2023-08-12 12:03:05 · 50 阅读 · 1 评论 -
8.11每日一练(整形提升,左移操作符,最大连续 1 的个数,完全数计算)
等于-2147483648,取反+1获得补码1000 0001,右移31位就是1111 1111,移去的补符号位1,取反+1获得原码1000 0001 (这里为了方便,简化了一下,改成了16进制)x和y比较,它们的类型就要相等,由于y是无符号整形,所以提取x(-1)补码出来进行整型提升,而我们知道无符号整形是没有正负的,这也就意味着原码,反码,补码是相等的。我们得到,这需要去遍历这个数组,去寻找连续1的个数,所以我们呢,需要创建count来记录当前连续1的个数,还需要建立sum来记录。原创 2023-08-11 14:51:31 · 43 阅读 · 1 评论