python每日一题——4移动0

题目

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]

输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]

输出: [0]

答案

这道题可以使用双指针的方法解决,一个指针用来遍历数组,一个指针用来记录0的末尾位置。

具体步骤如下:

定义两个指针,一个指向当前遍历的位置,一个指向0的末尾位置。

遍历数组,如果当前元素为0,则将其移动到0的末尾位置,并将0的末尾位置指针向前移动一位。

如果当前元素不为0,则将其移动到当前位置,并将当前位置指针向前移动一位。

重复上述步骤,直到遍历完整个数组。

代码如下:

python 复制代码
def moveZeroes(nums):  
    if not nums:  
        return []  
    left = 0  # 当前遍历位置指针  
    right = 0  # 0的末尾位置指针  
    n = len(nums)  
    while left < n:  
        if nums[left] == 0:  
            nums[left], nums[right] = nums[right], nums[left]  
            right += 1  
        else:  
            nums[left] = nums[left] + 1  # 非零元素加上一个非零值,保证相对顺序不变  
            left += 1  
    return nums

时间复杂度为O(n),空间复杂度为O(1)。

相关推荐
财经资讯数据_灵砚智能1 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年4月12日
人工智能·python·信息可视化·自然语言处理·ai编程
Lsk_Smion15 分钟前
Hot100(开刷) 之 长度最小的数组--删除倒数第N个链表--层序遍历
java·数据结构·算法·kotlin
luoganttcc16 分钟前
dim3 grid_size(2, 3, 4); dim3 block_size(4, 8, 4)算例
算法
测试秃头怪20 分钟前
python&selenium自动化测试实战项目详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
WBluuue25 分钟前
Codeforces 1088 Div1+2(ABC1C2DEF)
c++·算法
踏着七彩祥云的小丑26 分钟前
Python——字符串常用操作
开发语言·python
阿钱真强道29 分钟前
05 ComfyUI + SVD 系列(三):最小图生视频工作流拆解——节点含义、输入输出、参数作用与核心实验
python·aigc·stable-diffusion·svd·comfyui·工作流·图生视频
xcjbqd030 分钟前
Python中Pandas如何将DataFrame写入MySQL_使用to_sql函数
jvm·数据库·python
蓝色的杯子33 分钟前
Python面试30分钟突击掌握-LeetCode3-Linked list
python·leetcode·面试
像素猎人34 分钟前
map<数据类型,数据类型> mp和unordered_map<数据类型,数据类型> ump的讲解,蓝桥杯OJ4567最大数目
c++·算法·蓝桥杯·stl·map