wordpress手机pc分开模板,南京seo域名,中国wordpress,江西省网站备案给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。
请注意 #xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1:
输入: nums [0,1,0,3,12]
输出: [1,3,12,0,0]示例 2:
输入: nums [0]
输出: […给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。 示例 1:
输入: nums [0,1,0,3,12]
输出: [1,3,12,0,0]示例 2:
输入: nums [0]
输出: [0] 提示:
1 nums.length 104-231 nums[i] 231 - 1 进阶你能尽量减少完成的操作次数吗
题目比较简单直接上代码了思路都在代码注释里不懂的话私信或者留言看到第一时间解答
class Solution {/**本题思路是先把非零最右侧的指针nonZeroRightBound设置为-1然后从零开始遍历元素如果发现了就把它和nonZeroRightBound下一个元素交换同时nonZeroRightBound*/public void moveZeroes(int[] nums) {if(nums.length 1) {return;}/**非零元素的右边界目前还没有*/int nonZeroRightBound -1;/**cur是我们目前遍历的指针 */int cur 0;while(cur nums.length) {/**如果遇到非0就把它和非零右边界交换*/if(nums[cur] ! 0) {swap(nums, cur, nonZeroRightBound);}/**不管右没有交换都要移动到下一个即使是存在交换也是和前面的进行交换因为nonZeroRightBound是我们确定的非0区域右边界我们肯定看过这个位置才确定它是非0的 */cur ;}}/**最普通的交换位置的方法 */public void swap(int[] nums, int i, int j) {int temp nums[i];nums[i] nums[j];nums[j] temp;}
}
打败这么点人也是没想到不过这已经最后时间复杂度了常数时间这么小的题不想改了大家自己改把