LeetCode283. Move ZeroesC语言

Given an array nums, write a function to move all 0‘s to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].
Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations

题意:给一个数组,把其中的0放到最后。注意不要创建新的数组和最小化所有操作的数量

void moveZeroes(int* nums, int numsSize) {
    //选择排序变一下。。。。。n*2
    // int i,j;
    // for(i=0;i<numsSize;i++)
    //   for(j=i+1;j<numsSize;j++){
    //       if(nums[i]==0){
    //           int temp=nums[i];
    //           nums[i]=nums[j];
    //           nums[j]=temp;
    //       }
    //   }
    
    //网上的做法1.简单粗暴容易理解。只不过是分了两步而已。。。
    int i;
    int index=0;
    for(i=0;i<numsSize;i++){
        if(nums[i]!=0){
            nums[index]=nums[i];
            index++;
    }
    }
    // printf("%d",index);
    for(i=index;i<numsSize;i++){
        nums[i]=0;
    }
    
    ///还有做法2.不太容易理解,
}

PS:维持俩指针。。。。。

一开始想到的事排序。。。。。。把0排到最后,虽然过了,但是复杂度n*2.操作数量也挺多的。

看了网上的做法1.容易理解简单粗暴。

还有一个做法理解起来有点障碍。。。。。。

时间: 2024-10-13 22:47:41

LeetCode283. Move ZeroesC语言的相关文章

[LeetCode283]Move Zeros将一个数组中为0的元素移至数组末尾

题目: Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]. Note:

LeetCode283:Move Zeros

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]. Note: You

move和转发

总的来说C++09跟C++98相比的变化是极其重大的.这个变化体现在三个方面,一个是形式上的变化,即在编码形式层面的支持,也就是对应我们所谓的编程范式(paradigm).C++09不会引入新的编程范式,但在对泛型编程(GP)这个范式的支持上会得到质的提高:concepts.variadic-templates.auto/decltype.template-aliases.initializer-lists皆属于这类特性.另一个是内在的变化,即并非代码组织表达方面的,memory-model.G

Facebook币Libra学习-4.新的智能合约语言Move入门

Move是一种新的编程语言,旨在为Libra Blockchain提供安全可编程的基础.Libra Blockchain中的帐户是任意数量的Move资源和Move模块的容器.提交给Libra Blockchain的每个事务都使用Move中编写的事务脚本来编码其逻辑.事务脚本可以调用模块声明的过程来更新区块链的全局状态. 在本指南的第一部分中,我们将对Move语言的主要功能进行高级介绍: 移动事务脚本启用可编程事务 移动模块允许可组合智能合约 移动有一流的资源 对于好奇的读者,Move技术论文包含

数据结构算法C语言实现(十)--- 3.3栈与递归的实现

一.简介 汉诺塔问题是递归的一个典型例子,而且书上的讲解很详细,对理解C语言函数及函数传参的工作机制很有帮助,值得一看.而且,递归在我看来和分治.DP.贪心等一样是十分优美的思想,值得学习!!! 二.CPP文件 1 //3_3.cpp 2 /** 3 author:zhaoyu 4 email:[email protected] 5 date:2016-6-8 6 note:realize my textbook <<数据结构(C语言版)>> 7 */ 8 //Page 54 9

C语言小游戏设计报告

课程设计名称:贪吃蛇小游戏 专业班级:计科15-2 学号:150809229 姓名:XXX 一.设计目标 通过设计,培养学生对电脑的动手能力,使学生巩固<C语言程序设计>课程学习的内容,掌握编写程序的基本方法,强化对其的动手能力,可以独自完成程序的编写. 二.设计内容和要求 设计内容 编写贪吃蛇的小游戏,使其可以成功运行并且操作玩耍. 设计要求 1)源程序要有适当的注释,使程序便于阅读. 2)要有程序运行结果作为依据 三.程序流程 1.编写地图 运用函数,数组编写地图 2.相同的方法把蛇添加进

关系数据库元组关系演算语言ALPHA

关系演算 :以数理逻辑中的谓词演算为基础 按谓词变元不同分类 1.元组关系演算:以元组变量作为谓词变元的基本对象元组关系演算语言ALPHA2.域关系演算:以域变量作为谓词变元的基本对象域关系演算语言QBE 元组关系演算语言ALPHA (1) 简单检索(即不带条件的检索) 格式: GET 工作空间名 (表达式1) 查询所有被选修的课程号码.GET W (SC.Cno) (2) 限定的检索(即带条件的检索) 格式: GET 工作空间名(表达式1) : 操作条件 查询信息系(IS)中年龄小于20岁的学

pascal语言中学版整理

P1:主菜单File中的Command shell选项,可以暂时退出Pascal,进入DOS提示符状态,但Pascal仍然驻留在内存中.输入命令exit即可返回Pascal. P3:Edit菜单中Undo是撤销最近的一次操作,Redo是撤销Undo操作:        F8——单步执行程序,遇到函数.过程时不跟踪其内部:         F7——单步执行程序,遇到函数和过程调用,跟踪到内部: P4:Goto cursor-F4——运行程序到光标所在行:        Program reset-

[转]100个经典C语言程序(益智类问题)

目录: 1.绘制余弦曲线 2.绘制余弦曲线和直线 3.绘制圆 4.歌星大奖赛 5.求最大数 6.高次方数的尾数 8.借书方案知多少 9.杨辉三角形 10.数制转换 11.打鱼还是晒网 12.抓交通肇事犯 13.该存多少钱 14.怎样存钱利最大 15.捕鱼和分鱼 16.出售金鱼 1.7 分数四则运算 17.平分七筐鱼 18.有限5位数 19. 8 除不尽的数 21.4位反序数 22.求车速 23.阿姆斯特朗数 24.完全数 26.亲密数 27.自守数 28.回文数 29.求具有abcd=(ab+c