- 博客(4)
- 收藏
- 关注
原创 力扣题目——238. 除自身以外数组的乘积
利用前缀和的思想,分别从前 后两个方向计算各个数累乘结果并记录,这样如果我们想要在总的乘积中除以一个数nums[i],那就等价于nums[0]nums[1]...nums[i-1]和 nums[i+1]nums[i+2]...nums[n-1]的乘积,我们只需要对这些乘积有所记录,那么想要用的时候直接用就可以了。对于这道题,它在力扣中是归类在前缀和算法中的题目。下面的代码中,我定义了frontt数组和afterr数组来记录累乘结果。n-i-2其实是n-1-(i+1);之外其余各元素的乘积。
2024-07-26 16:14:35 804
原创 力扣题目——260. 只出现一次的数字 III
3. 若不足2,说明至少有一个答案位于nums数组中部,则需遍历nums数组,找到相邻连续不同的三个数,中间的数就是一个答案值,而结束遍历的条件就是当ans.size==2的时候,表明答案已全部找出。2. 定义ans数组存储两个答案值,首先要判断答案值是否位于首尾处,若在,则压入ans数组,之后要判断ans大小是否为2,若为2则表明两个值各在首尾,直接return;之后我们遍历整个nums数组,如果第k位是1,就与ans1异或,第k位是0,就与ans2异或,最终可以得到ans1和ans2的值。
2024-07-23 12:41:58 1476
原创 力扣题目——137. 只出现一次的数字 II
2、ans不符合上述情况时,ans就只能在nums中间某位置,遍历nums数组,如果遇到三个相邻的不同的数,则ans就是三个数中间的那个数。1、利用map容器记录每种数字出现的次数,为了减少时间成本,可以采用无须排序的unordered_map容器进行存储。2、对数组进行遍历,统计每种数字的个数,循环判断哪个数字的个数为1,直接返回即可。1、判断边界条件:一种是nums的大小为1,那答案ans就是nums[0];另一种是判断ans是否位于数组nums的首尾位置。请你找出并返回那个只出现了一次的元素。
2024-07-23 11:38:58 285
原创 力扣题目———1869. 哪种连续子字符串更长
首先申请大小为2的数组cnt分别用于记录0和1的字符串长度,从字符串s的起始处开始遍历,start记录了我们要对比的字符的位置,这里我们不管该位置字符是0还是1,利用while循环进行连续性的判定,最后将i-start值更新到cnt中,最后比较cnt[0]和cnt[1]的大小。首先最无脑的解法是进行暴力求解:循环遍历字符串,如果遇到目标字符‘1’或者‘0’则进行二次遍历,求解对应连续字符串的最长长度。由 1 组成的子字符串不比由 0 组成的子字符串长,故返回 false。时间复杂度: O(N²)
2024-07-21 11:05:16 1688
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人