ITPub博客

首页 > 应用开发 > C/C++ > leetcode_283. 移动零

leetcode_283. 移动零

原创 C/C++ 作者:orastar 时间:2020-04-27 16:45:52 0 删除 编辑

1、题目描述

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

示例:

输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:

1、必须在原数组上操作,不能拷贝额外的数组。
2、尽量减少操作次数。

2、解题思路


说明:
1、使用m从下标0开始到nums结束,代表待更新的值为0的下标。
2、遍历数组下标i,遇到非0值,nums[m]=nums[i];nums=0;

3、复杂度分析

时间复杂度:O(n)
空间复杂度:O(1)

4、c代码

void moveZeroes(int* nums, int numsSize) {
    int m = 0; //设置待更新下标
    for (int i = 0; i < numsSize; i++)
    {
        if (nums[i]) { 
            if (m != i) {
                nums[m] = nums[i];
                nums[i] = 0;
            }
            m++;
        }
    }
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31442014/viewspace-2688759/,如需转载,请注明出处,否则将追究法律责任。

全部评论
作者简介:惠星星,现就职于北京海天起点,持有OCP 10g、OCP 11g、OCM 11g证书,并有长达8年电力行业业务维护、数据库维护服务经验,擅长Oracle数据库性能优化、故障处理及Oracle internal研究。

注册时间:2017-03-08

  • 博文量
    91
  • 访问量
    93912