力扣(Leetcode)练习 -- 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序
要求:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
两种方法,第一种符合原要求和说明;第二种不符合原说明中的【不能拷贝额外的数组】,利用了两个数组,但是可以输出正确结果。
方法一:
主要思路:在原数组中进行循环,循环到非 0 数字,赋值给数组第一位,循环到第二个非 0 数字,赋值给数组第二位,以此类推,循环结束后,将其与位置用 0 填充。
复制代码
方法二:
主要思路:利用一个新数组,在原数组中循环,循环到非 0 数字,依次赋值给新数组。
复制代码
1)C++在线编译器结果:
在线编译器地址:http://www.dooccn.com/cpp/
2)力扣(Leetcode)运行结果:
ps.尚未找到输出数组(带格式)的好方法,如果有合适方法,希望能告知~
版权声明: 本文为 InfoQ 作者【Wynne】的原创文章。
原文链接:【http://xie.infoq.cn/article/b43068ed9a0672b631a012ec9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)