首页 > 编程语言 >leetcod算法热题--移动零

leetcod算法热题--移动零

时间:2024-05-04 15:45:13浏览次数:26  
标签:遍历 nums -- 复杂度 初始值 示例 数组 leetcod 热题

题目

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

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

示例 1:

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

示例 2:

输入: nums = [0]
输出: [0]

提示:

1 <= nums.length <= 10^4
-2^31 <= nums[i] <= 2^31 - 1

题目链接:https://leetcode.cn/problems/move-zeroes/

解答

思路与方法
我们使用双指针来解决这个问题,我们定义i,j两个变量初始值设置为0,1,然后遍历nums数组,当nums[i]0nums[j]不为0时我们就交换它两的值,直到j遍历完这个数组。

代码
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int i=0,j=1;
        //设置初始值
        while(j<nums.size())
        {
            //数不为0后移
            if(nums[i])
                i++;
            //数为0交换
            if(nums[i]==0&&nums[j])
            {
                swap(nums[i],nums[j]);
                i++;
            }
            j++;
        }
    }
};
复杂度分析

时间复杂度:O(n)。n为数组长度,每个位置最多被遍历两次。
空间复杂度:O(1)。只使用了有限个变量来记录数据。

标签:遍历,nums,--,复杂度,初始值,示例,数组,leetcod,热题
From: https://www.cnblogs.com/oyoy/p/18172301

相关文章

  • Flink调优初次笔记
    资源配置优化从1.11开始,增加了一个通用客户端模式,(-tyarn-job)TaskManager内存模型Flink既使用堆内存,又使用堆外内存。指定进程内存JVMmetaspace:JVM元空间,默认256MJVM执行内存:执行开销。有最小值和最大值。计算公式为:进程内存*0.1框架内存:堆内和堆外。不计入Slot的资......
  • 联想RQ940更换主板电池+重新设置BIOS
    RQ940服务器告警灯闪烁,连接管理口查看日志,判断问题为主板纽扣电池电压低,纽扣电池型号为CR2032停业务,关机,下架,拆机  电池位于图片所示位置,可以先将左边RAID卡拆下来,方便更换电池。    2、重新设置BIOS:更换电池后,由于BIOS默认配置为UEFI,而该系统原本安装在Legacy模......
  • C# String.Split 将字符串按照指定的分隔符分割成一个字符串数组
    以下两种方式都可以分割字符串string[]arr=s.Split('\n');string[]arr=s.Split(newchar[]{'\n'},StringSplitOptions.RemoveEmptyEntries);区别:string[]arr=s.Split('\n');:这种方式使用单个字符作为分隔符,将字符串s按照换行符('\n')进行分割。但是,此......
  • MQTT上报阿里云
    1.代码实现1.主函数代码段#include<stdio.h>#include<string.h>#include<errno.h>#include<sys/types.h>#include<dirent.h>#include<fcntl.h>#include<unistd.h>#include<stdlib.h>#include<time.h>#includ......
  • 窗口程序的框架
    #include<windows.h>//步骤//1.创建WinMain()主函数//2.设计窗口//3.注册窗口//4.创建窗口//5.显示窗口//回调函数,消息处理函数LRESULTCALLBACKWndProc(HWNDhwnd,//窗口句柄 UINTMessage,//消息 WPARAMwParam,//消息参数 LPARAMlParam)......
  • HUAWEI USG6000系列面板状态说明
    前面板USG6310,USG6320前面板如图2-22所示。图2-22 USG6310,USG6320前面板表2-32 接口说明名称描述USB2.0接口插接U盘,通过U盘升级设备的系统软件等。有关U盘升级的相关介绍,请参见随版本配套发布的《升级指导书》。插接4GLTE数据卡,具体支持的型号请......
  • 2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。 要进行分割操作,直到字
    2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。要进行分割操作,直到字符串s为空:选择s的最长前缀,该前缀最多包含k个不同字符;删除该前缀,递增分割计数。如果有剩余字符,它们保持原来的顺序。在操作之前,可以修改字符串s中的一个字符为另一个小写英文字母。在最佳情......
  • Promethues (普罗米修斯)详细介绍
    Promethues(普罗米修斯)详细介绍引言zabbix是传统的监控系统,出现比云原生早,使用的是SQL关系型数据库;而Prometheus基于谷歌的borgemon使用go语言开发,使用TSDB数据库,所以支持云原生。zabbix最新发布的6.0版本,知道自己处于生死存亡时刻,也支持了Prometheus使用的TSDB数据库。一、......
  • 窗口程序框架示例代码
    #include<windows.h>//创建窗口程序的步骤://1.创建WinMain()主函数//2.设计窗口//3.注册窗口//4.创建窗口//5.显示窗口//回调函数,消息处理函数LRESULTCALLBACKWndProc(HWNDhwnd,//窗口句柄 UINTMessage,//消息 WPARAMwParam,//消息参数 ......
  • 从零搭建Prometheus监控报警系统
    从零开始搭建Prometheus自动监控报警系统 从零搭建Prometheus监控报警系统什么是Prometheus?Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是GoogleBorgMon监控系统的开源版本。2016年由Google发起Linux基金会旗......