算法(移动零)

5. 给定一个数组 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
java 复制代码
//双指针法
class Solution {
    public void moveZeroes(int[] nums) {
        //记录非0元素应该放的位置
        int noZeroIndex=0;
        //第一步先把非0的元素放到前面
        for(int i=0; i<nums.length; i++){
            if(nums[i]!=0){
                nums[noZeroIndex]=nums[i];
                noZeroIndex++;
            }
        }
        //第二步把剩下的位置全部补成0
        for(int i=noZeroIndex; i<nums.length;i++){
        nums[i]=0;
    }  
  }
}
相关推荐
小江的记录本5 小时前
【Java基础】Java 8-21新特性 :JDK17:密封类、模式匹配、Record类(附《思维导图》+《面试高频考点清单》)
java·数据结构·后端·python·mysql·面试·职场和发展
重生之我是Java开发战士5 小时前
【贪心算法】柠檬水找零,将数组和减半的最少操作次数,最大数,摆动序列, 最长递增子序列,递增的三元子序列
算法·贪心算法
Godspeed Zhao5 小时前
从零开始学AI17——SVM的数学支撑知识
算法·机器学习·支持向量机
我爱cope5 小时前
【力扣hot100:53. 最大子数组和】
算法·leetcode·职场和发展
枕星而眠5 小时前
数据结构哈希表(散列表)超详细总结
c语言·数据结构·后端·散列表
一条泥憨鱼5 小时前
【Java 进阶】LinkedHashMap 与 TreeMap
java·开发语言·数据结构·笔记·后端·学习
Dlrb121114 小时前
C语言-指针三
c语言·算法·指针·const·命令行参数
Tisfy14 小时前
LeetCode 2540.最小公共值:双指针(O(m+n))
算法·leetcode·题解·双指针
IronMurphy14 小时前
【算法四十七】152. 乘积最大子数组
算法