`

Move Zeroes

阅读更多
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].

Note:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.

给定一个数组,将所有的0放到数组的后面,元素之间的相对位置保持不变。我们用双指针来解决。从数组第一个元素开始,如果不为0,就用index指针记录这个值,index++, 直到遍历完数组,这样index的值就是数组中不为0的元素的个数,然后从index开始,将后面的元素变为0。代码如下:
public class Solution {
    public void moveZeroes(int[] nums) {
        if(nums == null || nums.length == 0) return;
        int index = 0;
        for(int i = 0; i < nums.length; i++) {
            if(nums[i] != 0) {
                nums[index++] = nums[i];
            }
        }
        for(int i = index; i < nums.length; i++) {
            nums[i] = 0;
        }
    }
}
分享到:
评论

相关推荐

    leetcode分类-Data_Structures_Practice:记录自己学习数据结构的一些内容(Python/Java)

    283_moveZeros.py MoveZeros.java 两数之和 twoSum.py 三数之和 15_threeSum.py 多数元素 169_majorityElement.py 删除排序数组中的重复项 26_removeDuplicate.py 移除元素 27_removeElement.py string 28. 实现 ...

    leetcode338-MyLeetCode:我对LeetCode问题的解答

    第 338 章力码 王一飞的LeetCode题解 算法: | 问题 | 解决方案 | -----|---------------- ...(./solutions/MoveZeros.cc) | 第349话| [IntersectionOfTwoArrays.cc] (./solutions/IntersectionOfTwoArray

    Leetcode经典01背包-algo:一些记录

    Leetcode经典01背包 ...Zeros | | | 27 Remove Element | | | 26 Remove Duplicates from Sorted Array | | | 80 Remove Duplicates from Sorted Array II | | | 75 Sort Colors 计数排序 | | | 88 Merge So

    leetcode530-Play-with-Algorithms:基本的算法和数据结构

    Zeros 283 [无] 728 747 3-4 即使简单的问题,也有很多优化的思路 283 27 26 80 3-5 三路快排partition思路的应用 Sort Color 75 88 215 3-6 对撞指针 Two Sum II - Input Array is Sorted 167 125 344 345 11 3-7 ...

    word源码java-Play-with-Algorithm-Interview-Learningnotes:Play-with-Algori

    Zeros 3-4 即使简单的问题,也有很多优化的思路 3-5 三路快排partition思路的应用 Sort Color 3-6 对撞指针 Two Sum II - Input Array is Sorted 3-7 滑动窗口 Minimum Size Subarray Sum 3-8 在滑动窗口中做记

    MATLAB图像平移

    I_move=uint8(zeros(s(1),s(2),3)); % 创建空白图像 I_move(1:s(1)-100,1:s(2)-100,:)=I(100+1:s(1),100+1:s(2),:); % 复制平移后的像素值 subplot(2,2,1); % 创建子图 imshow(I_move); % 显示平移后的图像 title('...

    2048游戏matlab代码.pdf

    set(move_right, 'Callback', 'g2048right'); set(move_left, 'Callback', 'g2048left'); set(move_up, 'Callback', 'g2048up'); set(move_down, 'Callback', 'g2048down'); % 设置游戏的初始状态 flag = 0; ...

    matlab移动平均算法

    y = zeros(size(X)); % 计算移动平均 for i = 1:N:length(X) - N + 1 y(i:i+N-1) = mean(X(i:i+N-1)); end end ``` 在上述代码中,我们首先检查输入数据X是否为向量,以及N是否为正整数。然后,我们创建一个...

    基于MATLAB的KMEANS 聚类程序(函数)和(程序数据一起下)

    while iter &lt; maxiter & move ~= 0 move = 0; for i = 1:n dist = sum((repmat(x(i,:), k, 1) - nc).^2, 2); radj = nr ./ (nr + 1) .* dist'; [m, ind] = min(radj); if ind ~= r cid(i) = ind; ic = find...

    python中的高阶函数的定义及内置高阶函数

    Python中的高阶函数是那些能够接受函数作为参数或者返回函数的函数,它们是函数式...这段代码首先通过 `move_zeros_to_end` 函数为每个元素分配一个优先级,然后使用 `sorted()` 对数组进行排序,使得0项被排到后面。

    js代码-给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

    function move_zeros(nums) { let nonZeroCount = 0; for (let i = 0, lastNonZero = 0; i ; i++) { if (nums[i] !== 0) { [nums[i], nums[lastNonZero]] = [nums[lastNonZero], nums[i]]; lastNonZero++; ...

    实验6 机器人控制(1).pdf

    # Reassign new joint angles (all zeros) which we will later command to the limb angles['right_s0'] = 0.0 angles['right_s1'] = 0.0 angles['right_e0'] = 0.0 angles['right_e1'] = 0.0 angles['right_w0'] =...

    基于dijkstra的低耗路由matlab仿真

    C is a NxN cost (perhaps distance) matrix, where C(I,J) contains the value of the cost to move from point I to point J NOTE: only valid with A as the first input E is a Px2 matrix containing a ...

    图像平移、缩放、旋转、插值_Matlab实现

    ImageNew = zeros(round(Xnew), round(Ynew)) + 255; % 计算原图像各像素的新坐标 for indexX = 0:(X-1) for indexY = 0:(Y-1) ImageNew(round(indexX * cos(Angle) - indexY * sin(Angle)) + round(abs(min([Left...

    matlab开发-连接五个字旗

    board = zeros(15); ``` 接着,我们需要编写下棋功能。这包括选择颜色(黑棋或白棋),输入坐标,并检查该位置是否合法(在棋盘范围内且为空)。下棋后,更新棋盘状态。 ```matlab function [isValid, board] = ...

    RAIKIRI-control:迷你四驱车AI比赛的控制程序

    RAIKIRI控制程序 机载传感器为Akizuki规格的LIS3DH(3轴加速度传感器模块)和Akizuki规格的AE-L3GD20(3轴陀螺仪传感器模块)。 输出规格 加速度通过i2c通信(Aruduino Uno A4...通过ENABLE_MOVEAVG为true ENABLE_MOVE

    用Python绘制高级爱心图形.docx

    img = np.zeros((480, 640, 3), dtype=np.uint8) for i in range(0, 360, 15): x, y = heart_curve(t + i / 180 * pi, 100) cv2.circle(img, (320 + x, 240 + y), 5, (0, 0, 255), -1) out.write(img) out....

    MIPS32汇编指令官方速查表 ver:01.01

    - **CLZ (Count Leading Zeros)** `CLZ RD, RS` 功能:计算源寄存器中最高有效位前连续0的数量。 示例:`CLZ $t0, $s0` 特点:用于位操作。 - **LA (Load Address)** `LA RD, LABEL` 功能:加载符号...

Global site tag (gtag.js) - Google Analytics