238_移动零

简介: 238_移动零

移动零

给定一个数组 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

【思路】

使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。

右指针不断向后移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。

注意到一下性质:

1、左指针左边均为非零数;

2、右指针左边直到左指针处均为零。

因此每次交换,都是将左指针的零与右指针的非零数交换,且非零数的相对顺序并未改变。

class Solution {
    public void moveZeroes(int[] nums) {
        int n = nums.length, left = 0, right = 0;
        while (right < n) {
            if (nums[right] != 0) {
                swap(nums, left, right);
                left++;
            }
            right++;
        }
    }
    public void swap(int[] nums, int left, int right) {
        int temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    }    
}

我的想法是直接用暴力解法计算的,虽然可以算但是这样会超时!

相关文章
|
4天前
|
网络协议 Windows
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
这篇文章提供了解决IDEA插件下载慢或超时问题的方案,通过查找国内插件节点IP地址并修改本地hosts文件来加速下载。
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
|
2天前
|
Java
01_斐波那契数列
01_斐波那契数列
09_分割等和子集
09_分割等和子集
|
5天前
|
存储 Cloud Native 安全
阿里云优惠券有哪些?四种优惠券的金额、领取及使用规则及区别介绍
阿里云为用户提供了多种优惠券,以帮助用户节省云产品的购买成本,目前阿里云为用户推出了无门槛优惠券,上云抵扣金、算力补贴优惠券、满减优惠券等不同种类的优惠券,本文将详细这四种优惠券的金额、领取及使用规则,以及区别,以供了解和选择参考,提升使用体验。
|
8天前
怎样制作网站,制作网站规划。
在建设网站前,需明确网站目的,如商业展示、教育互动或个人博客等;定义目标受众及需求,如年龄段、兴趣及信息获取等;规划页面框架与布局,包括栏目、导航等;选择建设方式,如自行开发或使用成熟CMS系统(如PageAdmin CMS);完善内容并上传素材;最后部署至服务器上线。
|
16天前
|
架构师 前端开发 Java
Java开发工程师的职业规划应该是什么样的?
Java开发工程师的职业规划涵盖多个阶段,包括初入行业(0-1年)、技能提升(1-3年)、技术专家(3-5年)及管理或专家路线选择(5年以上)。各阶段设定了明确的技能要求与职业目标,从掌握Java基础、常用框架到深入研究高级技术、微服务架构乃至担任管理职务或成为技术专家。通过持续学习与实践,结合个人兴趣,Java工程师可在技术或管理领域找到合适的发展方向,最终实现职业成功。
237 83
|
16天前
|
存储 索引
Lua 中有 8 个基本类型
Lua 中有 8 个基本类型
|
4天前
|
存储 关系型数据库 Serverless
PostgreSQL计算两个点之间的距离
PostgreSQL计算两个点之间的距离
94 60
26_二叉搜索树的最小绝对差
26_二叉搜索树的最小绝对差
31_修剪二叉搜索树
31_修剪二叉搜索树