力扣第283. 移动零

7 篇文章 0 订阅
4 篇文章 0 订阅

首先我要说暴力解是上帝给程序员的礼物————————————————

题目内容:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。

解题过程:分析题目知道我们需要把数组中含0元素保持相对顺序移到数组末端,我们通过采取暴力法,现在内部循环依次遍历出数组元素,然后通过if条件判断是否是0,若是0则让它与后一位数组元素进行位置互换。这里会产生弊端,如果面对连续非0元素,只能使得一个0元素移到数组末端。为了解决这种情况我们采取在外层嵌套for循环,从而使得这种操作会重复多次,从而避免出现连续0元素的情况。但是还是建议大家采取双指针方法解答本题。

详细代码:

class Solution {
    int temp;//创建变量做为中间值进行数值交换
    public void moveZeroes(int[] nums) {
       for(int j=0;j<nums.length;j++){  //外层for循环,来解决出现连续0元素的问题
            for(int i=0;i<nums.length-1;i++)  //通过内置for循环来使得数组中0元素移动到数组末端
            {
                if(nums[i]==0)//判断条件为后续执行操作做准备
                {
                     nums[i]=temp;
                     nums[i]=nums[i+1];
                     nums[i+1]=temp; //使得非0元素前移0元素后移
                }
            }
       }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值