首页 > 其他分享 >LeetCode-283移动0

LeetCode-283移动0

时间:2023-11-13 11:32:15浏览次数:34  
标签:nums ++ int length 数组 283 移动 LeetCode 指针

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

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

题解双指针:



LeetCode-283移动零_双指针

  1. 初始化双指针i、j;
  2. 当前指针 j 所指位置为0时,i不动,j++;
  3. 指针 j 所指位置不为0时,将 j 所指位置指向 i 指针位置,i++,j++;
  4. 当指针 j 跳出数组,记录当前i;

题解一:

  1. 得到循环完毕的数组和指针i;
  2. 对后续数组进行循环,后续值直接赋值0;
public void moveZeroes(int[] nums) {
        if (null == nums) {
            return;
        }
        int j = 0;
        for (int i = 0; i < nums.length; i++) {
            if (0 != nums[i]) {
                nums[j++] = nums[i];
            }
        }
        for (int i = j; i < nums.length; i++) {
            nums[i] = 0;
        }

    }

LeetCode-283移动零_双指针_02


题解二:

  1. 当指针 j 超过数组长度,不跳出循环;
  2. 对指针 i 后续的数组直接赋值0,i 等于数组长度时,跳出循环。
public void moveZeroes(int[] nums) {
        if (nums == null) {
            return ;
        }
        for (int i = 0,j = 0; j < nums.length; i++) {
            if (i < nums.length && nums[i] != 0) {
                nums[j++] = nums[i];
            }
            if (i >= nums.length) {
                nums[j++] = 0;
            }
        }
    }

LeetCode-283移动零_双指针_03

标签:nums,++,int,length,数组,283,移动,LeetCode,指针
From: https://blog.51cto.com/u_16280730/8340032

相关文章

  • [Leetcode] 0836. 矩形重叠
    836.矩形重叠EnglishVersion题目描述矩形以列表[x1,y1,x2,y2]的形式表示,其中(x1,y1)为左下角的坐标,(x2,y2)是右上角的坐标。矩形的上下边平行于x轴,左右边平行于y轴。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。......
  • LeetCode 第 115 场双周赛
    2899.上一个遍历的整数感觉读题比较困难classSolution{public:vector<int>lastVisitedIntegers(vector<string>&words){vector<int>res,a;for(inti=0,cnt=0,x;i<words.size();i++){if(words[i......
  • 移动办公系统--数据库设计心得
    前言小组名称:赛博朋克数据库设计:苏晨阳、潘胜蓝PowerDesign绘制:熊偲彤、党郑骅霖一、设计背景移动办公系统是为员工和领导提供线上服务的移动端APP和WebAPP,提供任务完成和任务管理,审批等功能服务的移动系统。通过本应用,期望能够方便并且优化员工和领导办公的体验和流程.二......
  • [LeetCode] 715. Range 模块
    题目Range模块是跟踪数字范围的模块。设计一个数据结构来跟踪表示为半开区间的范围并查询它们。半开区间[left,right)表示所有left<=x<right的实数x。实现RangeModule类:RangeModule()初始化数据结构的对象。voidaddRange(intleft,intright)添加半开区......
  • leetcode hot100-02 字母异位词分组
    题目:字母异位词分组难度:中等地址:https://leetcode.cn/classic/problems/group-anagrams/description/描述:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。过程:1、首先啥叫......
  • leetcode hot 100-01 两数之和
    题目:两数之和难度:简单题目地址:https://leetcode.cn/classic/problems/two-sum/description/过程一,因为难度是简单,就没有仔细审题,以为返回两个数就好,使用双指针,逻辑如下:对数组排序双指针分别指向头和尾两数之和大于target,尾部指针-1两数之......
  • 在移动电话上点击网页链接时如何触发电话呼叫。
    内容来自DOChttps://q.houxu6.top/?s=在移动电话上点击网页链接时如何触发电话呼叫。我需要为移动设备构建一个网页。只有一件事我还没有弄清楚:如何通过点击文本来触发电话呼叫?是否有一个特殊的URL可以像mailto:标签用于电子邮件那样使用?不希望使用特定于设备的解决方......
  • 一个很漂亮的鼠标移动特效,Javascript 脚本,可惜复制到博客园配置适配效果不好
    一个很漂亮的鼠标移动特效,Javascript脚本,可惜复制到博客园配置适配效果不好,暂时记录一下<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>小白教程(json.cn)</title></head><body><script>varStats=function(){var......
  • 重新学习算法_Day3-哈希表&2283&str与list转换
    HashTable 感觉从原理上说会用但是实际应用感觉不知道有什么用或者不知道怎么用例如:给你一个下标从 0 开始长度为 n 的字符串 num ,它只包含数字。如果对于 每个 0<=i<n 的下标 i ,都满足数位 i 在 num 中出现了 num[i]次,那么请你返回 true ,否则返回......
  • iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤
    ​目录iOS移动应用安全加固:保护您的App免受恶意攻击的重要步骤摘要引言一、APP加固的概念二、APP加固方案的比较三、保护iOS应用的安全四、总结参考资料 摘要本文介绍了移动应用程序(App)加固的概念和流程,以及市场上几家知名的APP加固公司。同时提供了对iOSipa文件进......