题目详情
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].这道题的意思就是将一个数组里面的所有0移到数组的最后,同时要保持数组的非零元素顺序不变
同时这道题也有额外的要求:不能声明一个新的拷贝的数组以及尽量减少操作的次数
因为题目不允许我们新声明一个数组,而且非零元素都排在新数组的最前面。
因此我们有这样一个想法:用一个值保存当前遍历到的非零元素数量,并将第i个元素赋值给数组下标为i-1的元素。这样后面剩下的位置,都赋值为0即可满足题目的要求。
解法public void moveZeroes(int[] nums) { if(nums != null && nums.length == 0) return; int insertPost = 0; for(int num : nums){ if(num != 0){ nums[insertPost++] = num; } } while(insertPost < nums.length){ nums[insertPost++] = 0; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/68388.html
摘要:题目链接题目分析给定一个整数数组,将值为的元素移动到数组末尾,而不改动其他元素出现的顺序。再在去后的元素末尾填充到计算出的数组长度。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D68 283. Move Zeroes 题目链接 283. Move Zeroes 题目分析 给定一个整数数组,将值为0的元素移动到数组末尾,而不改动其他元素出现的顺序。 思路 计算总共有多少个元素。 再...
摘要:给定一个数组,编写一个函数将所有移动到数组的末尾,同时保持非零元素的相对顺序。尽量减少操作次数。换个思路,把非数字前移,不去管数字。这样遍历完之后,数组索引从到之间的数值即为所求得保持非零元素的相对顺序,而之后的数值只需要全部赋值即可。 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 Given an array nums, write ...
摘要:给定一个数组,编写一个函数将所有移动到数组的末尾,同时保持非零元素的相对顺序。尽量减少操作次数。换个思路,把非数字前移,不去管数字。这样遍历完之后,数组索引从到之间的数值即为所求得保持非零元素的相对顺序,而之后的数值只需要全部赋值即可。 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 Given an array nums, write ...
摘要:解法目的就是把一个数组中所有为的数移动到数组的尾部,并保证其他元素相对位置不变。要求是在原数组上修改,不要额外引入其他的数组尽量减少操作次数。在小游戏中,设置了和界面一致的二维数组,数组的每一位记录了一个数字。 地址:https://leetcode.com/problems/move-zeroes/ 应用场景说明 这个题是很Easy的一道题,它的应用场景是在我尝试写小游戏2048时,...
摘要:双指针压缩法复杂度时间空间思路实际上就是将所有的非数向前尽可能的压缩,最后把没压缩的那部分全置就行了。比如,先压缩成,剩余的为全置为。过程中需要一个指针记录压缩到的位置。 Move Zeroes Given an array nums, write a function to move all 0s to the end of it while maintaining the rel...
阅读 3874·2021-11-24 09:38
阅读 2994·2021-11-17 09:33
阅读 3829·2021-11-10 11:48
阅读 1204·2021-10-14 09:48
阅读 3079·2019-08-30 13:14
阅读 2522·2019-08-29 18:37
阅读 3362·2019-08-29 12:38
阅读 1385·2019-08-29 12:30