首页 > 其他分享 >【hot100】刷题记录(1)-移动零

【hot100】刷题记录(1)-移动零

时间:2025-01-17 17:56:52浏览次数:3  
标签:slow nums 元素 len range hot100 数组 移动 刷题

题目描述:

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

 

 

我的作答:

果然脱离了教程自己想方法就明白什么是“纸上得来终觉浅”了,一道简单题自己写得和垃圾一样。。

我的有点像两两交换,被快慢指针限制了思路。。陷进去了。。又冗长又容易出错。。

class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        for slow in range(len(nums)-1):
            if nums[slow]==0:
                fast = slow+1
                while fast<len(nums)-1 and nums[fast]==0:
                    fast += 1
                nums[slow] = nums[fast]
                nums[fast] = 0
        return nums

 

参考:

只要将非零元素逐个拎出来就行了。。我。。。好。。傻。。

class Solution(object):
    def moveZeroes(self, nums):
        """
        :type nums: List[int]
        :rtype: None Do not return anything, modify nums in-place instead.
        """
        j = 0  # 记录非零元素应该放置的位置
        
        # 遍历数组,将非零元素移动到前面
        for i in range(len(nums)):
            if nums[i] != 0:
                nums[j] = nums[i]
                j += 1
        
        # 将剩余的位置设置为0
        for i in range(j, len(nums)):
            nums[i] = 0

 

标签:slow,nums,元素,len,range,hot100,数组,移动,刷题
From: https://blog.csdn.net/Aerochacha/article/details/145212041

相关文章

  • 【无人机】模拟一群配备向下摄像头的移动空中代理覆盖平面区域(Matlab代码实现)
     ......
  • 2025毕设springboot 基于Android的“课堂管理助手”移动应用开发论文+源码
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着深刻的变革。传统课堂管理模式逐渐暴露出效率低下、信息孤岛等问题,无法满足现代教育对于高效、互动和个性化的需求。特别是在高等教育和职业教育中,师生间的信息交流、课程管理、作业提交与批改......
  • 【LeetCode】力扣刷题热题100道(31-35题)附源码 搜索二维矩阵 岛屿数量 腐烂的橙子 课程
    一、搜索二维矩阵编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。可以使用从右上角开始搜索的方法来有效地找到目标值。选择起始位置:从矩阵的右上角开始。......
  • 番外-rust基础move_semantics-移动语义
    Rust中的movesemantics(移动语义)是其所有权系统的核心特性之一。它决定了数据的所有权如何在程序中转移以及如何在程序执行过程中确保内存安全。1.基本概念:所有权(Ownership)Rust的所有权系统要求每个值都有一个所有者,并且该值在同一时间只能有一个所有者。这就引入了所有权......
  • 说说你对移动端和web前端开发的主要区别是什么?
    移动端开发和Web前端开发的主要区别体现在以下几个方面:运行平台:Web前端开发主要指传统的PC端网页开发,页面主要是运行在PC端浏览器中。移动前端开发则专注于移动设备,如手机和平板,其页面主要在这些设备的浏览器或应用中运行。技术适配性:Web前端在某些场景下需要兼容老版......
  • 计算机毕业设计Springboot运动健康APP 基于Spring Boot框架的健身与健康管理移动应用
    计算机毕业设计Springboot运动健康APPu8mr9vrk(配套有源码程序mysql数据库论文)本套源码可以先看具体功能演示视频领取,文末有联xi可分享随着科技的飞速发展和人们对健康生活方式的追求,运动健康APP应运而生,成为现代生活中不可或缺的健康管理工具。这类APP不仅能够帮助用户记......
  • C语言二级刷题---程序设计01
     请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):程序运行后,如果输入精度0.0005,则程序输出为3.140578。#include<stdio.h>#include<math.h>doublefun(doubleeps){}main(){doublex;voidNONO();......
  • 构造刷题记录
    [AGC001D]ArraysandPalindrome首先观察发现奇数的个数看起来很重要,然后手玩一会发现最多只能有两个奇数,然后再分讨构造就可以了。[AT_hitachi2020_c]ThREE观察到\(3\mida\timesb\)要求\(a,b\)中至少一个3的倍数。发现如果两个点的距离为3的话他们的深度的奇......
  • 【LeetCode 刷题】数组-模拟-螺旋矩阵
    此博客为《代码随想录》数组章节的学习笔记,主要内容为数组模拟的相关题目解析。文章目录59.螺旋矩阵II54.螺旋矩阵59.螺旋矩阵II题目链接classSolution:defgenerateMatrix(self,n:int)->List[List[int]]:l,r,t,b=0,n-1,0,n-......
  • 【LeetCode 刷题】数组-滑动窗口
    此博客为《代码随想录》数组章节的学习笔记,主要内容为滑动窗口知识点的相关题目解析。文章目录209.长度最小的子数组904.水果成篮76.最小覆盖子串209.长度最小的子数组题目链接classSolution:defminSubArrayLen(self,target:int,nums:List[int])->......