刷题集
文章平均质量分 80
经典题目的解答
sushang~
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
牛客网-替换空格
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。计算出替换后的字符串的长度后,我们可以在原字符串当中,从后往前进行填充。若遇到的不是空格,则将遍历到的字符从后往前进行填充。因为是‘ ’ ->“%20”,是1换3,所以可以先统计原字符串中空格的个数(设为count),然后可以计算出新字符串的长度。因为一个空格字符会被替换为三个字符,所以替换后字符串的新长度new_str=length+2*count。若遇到的是空格,则从后往前填充字符‘0’,‘2’,‘%’原创 2024-04-06 23:26:48 · 368 阅读 · 0 评论 -
牛客JZ39-数组中出现次数超过一半的数字
首先需要考虑数组是否为空的情况,然后对数组从前往后进行抵消,如果相同,计数就+1,不同计数就-1,接着计算最后剩下的数字在整个数组中出现的次数,最后判断这个数出现的次数是否大于数组长度的一半,是就返回数值,否则返回0。首先对整个数组进行排序,然后计算中间数组的值,接着遍历整个数组,对目标值进行次数的统计,最后判断目标值出现的次数是否大于数组长度的一半,是则返回数值,否则返回0.例如输入一个长度为9的数组[1,2,3,2,2,2,5,4,2]。如果不存在则输出0。输入:[1,2,3,2,2,2,5,4,2]原创 2024-04-05 16:53:44 · 532 阅读 · 0 评论 -
牛客JZ21-调整数组顺序使奇数位于偶数前面
可以通过左右下标的方法,left下标找到偶数,right下标找到奇数,然后进行交换,left是奇数就++left,right是偶数就–right,一次类推完成所有数据的交换,但是这种方式是无法保证奇数和奇数,还有偶数和偶数的相对位置不变的。首先遍历整个数组,查找数组中的奇数,找到后将它临时保存起来,然后将该奇数位置之前的所有偶数都向后移动一位,最后将该奇数放到移动后的空闲位置处,依次类推,就可以完成不改变顺序的奇数在前偶数在后的数组排序。输入:[2,4,6,5,7]输入:[1,3,5,6,7]原创 2024-03-26 14:21:29 · 813 阅读 · 0 评论 -
牛客JZ11-旋转数组的最小数字
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。这个过程会让[left,right]区间缩小,这个过程中,left永远在原数组前半部分,right永远在原数组的后半部分,而范围会一直缩小,当left和right相邻时,right指向的位置,就是最小元素的位置。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。输入:[3,4,5,1,2]原创 2024-03-25 21:43:22 · 847 阅读 · 0 评论 -
leetcode LCR121.寻找目标值-二维数组
我们可以找到行列的交界处,比如[0][2],即数字3这个位置,通过观察,我们可以发现,该数字是所在行中的最大数字,所在列中的最小数字,可以用目标数target和该交界处数字进行比较,:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,在这样的数组中查找一个数字是否存在。直接对该二维数组进行遍历,但该种方法的时间复杂度为。如果用[2][0]也是可以的,思路则反过来。这个题目和杨氏矩阵是一样的。原创 2024-03-24 13:44:45 · 897 阅读 · 0 评论