当前位置: 首页 > article >正文

leetcode(hot100)4

解题思路:双指针思想 利用两个for循环,第一个for循环把所有非0的全部移到前面,第二个for循环将指针放在非0的末尾全部加上0。

还有一种解法就是利用while循环双指针条件,当不为0就两个指针一起移动 ,为0就只移动右指针。不为0时交换左右数值,为0就不交换了。

(如果数组没有0,那么快慢指针始终指向同一个位置,每个位置自己和自己交换;如果数组有0,快指针先走一步,此时慢指针对应的就是0,所以要交换。)

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int j= 0;
        for(int i = 0;i<nums.size();i++){
            if(nums[i]){
                nums[j++] = nums[i];
            }
        }
        for(int i = j; i<nums.size();i++){
            nums[i] = 0;
        }
    }
};
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int n = nums.size(), left = 0, right = 0;
        while (right < n) {
            if (nums[right]) {
                swap(nums[left], nums[right]);
                left++;
            }
            right++;
        }
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/move-zeroes/solutions/489622/yi-dong-ling-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://www.kler.cn/a/468631.html

相关文章:

  • js复制数据到剪切板
  • 鸿蒙操作系统(HarmonyOS)
  • 场馆预定平台高并发时间段预定实现V1
  • 软件工程大复习之(四)——面向对象与UML
  • 百度贴吧的ip属地什么意思?怎么看ip属地
  • 《数据结构》期末考试测试题【中】
  • C++编程等级认证学习计划
  • 一种可复用的AI提效方案:AI点灯
  • Springboot项目部署以及jar包属性配置
  • 分类、聚类与回归的评价指标
  • 【NLP高频面题 - 分布式训练篇】ZeRO主要为了解决什么问题?
  • CSS——10.类选择器
  • 【Go学习】-01-6-数据库泛型新特性
  • 如何处理外在关系以及内在关系,思维冲突和纠结
  • 挑战20天刷完leecode100
  • C语言程序设计(第5版)习题解答-第4章
  • stm32HAL库使LED闪烁
  • ArcGIS中怎么把数据提取到指定范围(裁剪、掩膜提取)
  • RabbitMQ-基本使用
  • ChatGPT 主流模型GPT-4/GPT-4o mini的参数规模是多大?
  • 学习扩散模型的完整指南(前提知识、DDPM、稳定扩散、DreamBooth等)
  • php有两个数组map比较 通过id关联,number可能数量变化 比较他们之间增加修改删除
  • 【机器学习:二、线性回归模型】
  • 前端(API)学习笔记(CLASS 4):进阶
  • Unity3D 如何做好项目性能优化详解
  • 面试题 2024/12 28 29