
前言
哈喽,大家好,我是一条。
糊涂算法,难得糊涂
Question
283. 移动零
难度:简单
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
说明:
必须在原数组上操作,不能拷贝额外的数组。
尽量减少操作次数。
Solution
类似之前的依然采用
有序数组合并
法
双指针
- 定义两个指针,一个指向零,一个指向非零。
- 指向非零的指针先移动
- 如果当前元素不等于零,和零指针交换值,并且零指针前进一
同样的
27.移除元素,大家可以练习一下
Code
所有代码已同步至 github 欢迎
leetcode
star
/**
* @author yitiaoIT
*/
class Solution {
public void moveZeroes(int[] nums) {
int notZero=0;
int zero=0;
while(notZero<nums.length){
if (nums[notZero]!=0){
int tmp;
tmp=nums[notZero];
nums[notZero]=nums[zero];
nums[zero]=tmp;
zero++;
}
notZero++;
}
}
}
Result
复杂度分析
- 时间复杂度:O(N)
![]()
【leetcode刷题】12.移动零——Java版
🌈寻宝
⭐今天是坚持刷题更文的第12/100天
⭐各位的点赞、关注、收藏、评论、订阅就是一条创作的最大动力
⭐更多算法题欢迎关注专栏《leetcode》
为了回馈各位粉丝,礼尚往来,给大家准备了一条多年积累下来的优质资源,包括 学习视频、面试资料、珍藏电子书等
怎么领取请大家自己找,寻宝游戏现在开始。
找不到可以评论留言,一条就会注意到你。
如果还不行,请私信我。