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

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

前言

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

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

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

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

算法题:移动零

从本道题的描述来看,是想将一个数组中的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

总结

目录
相关文章
|
1月前
|
存储 消息中间件 NoSQL
大厂面试题含答案(一)
大厂面试题含答案(一)
|
7月前
|
存储 安全 C#
C#常见面试题含答案版
C#常见面试题含答案版
|
7月前
|
前端开发
2023Web前端开发八股文&面试题(万字系列)——这篇就够了!
2023Web前端开发八股文&面试题(万字系列)——这篇就够了!
661 2
|
4月前
|
存储 算法 NoSQL
1.数据结构与算法开篇
1.数据结构与算法开篇
38 0
|
1月前
|
存储 算法 网络协议
大厂面试题含答案(二)
大厂面试题含答案(二)
|
8月前
|
NoSQL Java 关系型数据库
面经开篇手册《面试官都问些啥问题》,一文讲透,值得收藏
面经开篇手册《面试官都问些啥问题》,一文讲透,值得收藏
|
5月前
|
存储 算法
刷题专栏(二十七): 找不同
刷题专栏(二十七): 找不同
97 2
|
7月前
|
Cloud Native 算法 程序员
程序员面试宝典专栏简介
程序员面试宝典专栏简介
38 0
|
7月前
|
算法 C语言
[笔记]计算机基础前言
[笔记]计算机基础前言
|
8月前
|
存储 算法 NoSQL
python技术面试题(十六)--数据结构与算法
python技术面试题(十六)--数据结构与算法