力扣每日一练(24-1-13)

如果用列表生成式,可以满足输出的型式,但是不满足题意:

python 复制代码
 nums[:] = [i for i in nums if i != val]
        return len(nums)

题意要求是:

你需要原地修改数组,并且只使用O(1)的额外空间。这意味着我们不能创建新的列表,而需要在原始列表上进行操作。

题解:

python 复制代码
left, right = 0, len(nums) - 1
        while left <= right:
            if nums[left] == val:
                nums[left], nums[right] = nums[right], nums[left]
                right -= 1
            else:
                left += 1
        return left

这个解决方案使用了两个指针,一个从左边开始,一个从右边开始。当左边的指针找到一个等于val的元素,而右边的指针找到一个不等于val的元素时,我们就交换这两个元素。这样,我们就可以将所有等于val的元素移到数组的右边。

这个解决方案的优点是,它只需要一次遍历,时间复杂度是O(n),其中n是数组的长度。同时,它只使用了常数级别的额外空间,空间复杂度是O(1)。此外,这个解决方案还考虑到了val在数组中出现的频率。如果val很少出现,那么元素交换的次数就会减少,这可以提高算法的效率。

相关推荐
AndrewHZ1 小时前
【图像处理基石】什么是油画感?
图像处理·人工智能·算法·图像压缩·视频处理·超分辨率·去噪算法
.格子衫.1 小时前
015枚举之滑动窗口——算法备赛
数据结构·算法
J先生x2 小时前
【IP101】图像处理进阶:从直方图均衡化到伽马变换,全面掌握图像增强技术
图像处理·人工智能·学习·算法·计算机视觉
爱coding的橙子4 小时前
每日算法刷题 Day3 5.11:leetcode数组2道题,用时1h(有点慢)
算法·leetcode
Dream it possible!8 小时前
LeetCode 热题 100_只出现一次的数字(96_136_简单_C++)(哈希表;哈希集合;排序+遍历;位运算)
c++·leetcode·位运算·哈希表·哈希集合
?abc!9 小时前
缓存(5):常见 缓存数据淘汰算法/缓存清空策略
java·算法·缓存
BioRunYiXue9 小时前
一文了解氨基酸的分类、代谢和应用
人工智能·深度学习·算法·机器学习·分类·数据挖掘·代谢组学
jiunian_cn10 小时前
【c++】异常详解
java·开发语言·数据结构·c++·算法·visual studio
工藤新一¹11 小时前
蓝桥杯算法题 -蛇形矩阵(方向向量)
c++·算法·矩阵·蓝桥杯·方向向量
Levin__NLP_CV_AIGC11 小时前
解决pip安装PyPI默认源速度慢
算法·pip