刷题专栏(十九):移动零

简介: 刷题专栏(十九):移动零

前言

刷题专栏到目前已经是第十九篇了,欢迎大家来关注我的刷题专栏,一起来刷题。

今天的这道题,依然是数组相关的题目,主要是数组元素的位置移动。

在很多的排序算法中会有相关的位置移动,大家如果没有思路可以去看一下。

下面我们就一起来看一下具体的题目解读吧。

算法题:移动零

从本道题的描述来看,是想将一个数组中的0,后移到尾部位置。

比如示例中的nums = [0,1,0,3,12], 然后最后的预期结果变成[1,3,12,0,0]

一般要处理这种情况,只需要利用排序算法来进行元素的移动即可。

但是这里有一个特殊的情况,那就是只是将0后移到最后,我们就可以不用置换元素了。

可以直接去覆盖0即可。

在每次遍历到0的时候,只需要去通过二重循环来获取下一个不为0的数字元素即可。

然后将不为0的数字元素赋值到当前索引值下。

然后在将原有数字赋值为0。

以此就能达到预期的效果了,接下来看一下具体代码吧。

代码展示

代码没有选择直接移动,而是直接去获取了0后面的非0元素。

代码如下,大家可以自行去试一下。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] nums = new int[]{0,1,0,3,12};
        solution.moveZeroes(nums);
        System.out.println(Arrays.toString(nums));
    }
    public void moveZeroes(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            if(nums[i] == 0){
                int index = i + 1;
                while (index < nums.length){
                    int n = nums[index];
                    if(n == 0){
                        index++;
                    }else{
                        nums[i] = n;
                        nums[index] = 0;
                        break;
                    }
                }
            }
        }
    }
}

代码执行结果

执行结果好惨,但总归是通过提交了。

image.png

总结

目录
相关文章
|
10月前
|
存储 数据管理 程序员
第1章 绪论——复习笔记
第1章 绪论——复习笔记
|
2月前
|
前端开发 JavaScript
Web前端开发之面试题全解析 一,2024年最新面经牛客
Web前端开发之面试题全解析 一,2024年最新面经牛客
|
2月前
|
存储 算法
刷题专栏(二十七): 找不同
刷题专栏(二十七): 找不同
106 2
|
9月前
|
Cloud Native 算法 程序员
程序员面试宝典专栏简介
程序员面试宝典专栏简介
45 0
|
9月前
|
算法 C语言
[笔记]计算机基础前言
[笔记]计算机基础前言
|
11月前
|
存储 算法 NoSQL
[数据结构与算法]第1章 绪论(考研复习笔记)
[数据结构与算法]第1章 绪论(考研复习笔记)
|
11月前
|
存储 算法 C语言
|
11月前
|
C语言
|
12月前
日常刷题篇(入门)
我从简单到难,一起走上漫漫刷题路! 我会持续在我的博客中更新我每天刷题的内容! 相互交流!