代码随想录移除元素二刷

news2024/9/24 17:13:07

代码随想录移除元素二刷

leetcode 27

在这里插入图片描述

这道题思路的话可以这样去理解,用两个指针,一个慢指针,一个快指针。先让快指针往前面去探路,也就是去遍历数组,遇到不为val的值再去把该值赋值给nums[slow],slow指针+1,遇到为val的值,nums[slow]不做任何操作,继续移动fast指针。具体代码如下:

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        slow,fast = 0,0
        lenth = len(nums) - 1
        while fast <= lenth:
            if nums[fast] != val:
                nums[slow] = nums[fast]
                slow += 1
            fast += 1
        return slow

因为还要返回元素的个数,所以返回slow即可。如何不理解为啥返回slow的话找个例子代入一下就可以看出来,

leetcode26

在这里插入图片描述
这道题初步分析也是移除元素,但与上道题不一样是移除数组中重复的元素,也就是跟上面一题的目标值是不一样的。但其实思路还是一样的:
仍旧是双指针。slow刚开始不动,fast往后遍历,遇到相同的值就直接pass掉。fast继续向后找。遇到跟slowB不同的。slow先加1,在把这个fast的值赋值给nums[slow],再根据新的这个nums[slow]去判断。
具体代码如下:

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        slow,fast = 0,0
        lenth = len(nums) - 1
        while fast <= lenth:
            if nums[fast] != nums[slow]:
                slow += 1
                nums[slow] = nums[fast]
            fast += 1
        return slow + 1

leetcode283

在这里插入图片描述
其实这个思路也是采用快慢指针,再来分析下这道题目,要把0都放到数组末尾。也就是把非0的挪到前面。所以判断条件就是快指针往前探路,slow指向数组中非0元素位置的索引,fast往前探路,遇到0忽略,然后将fast指向位置的值赋值给slow位置。同时原来fast指向的位置赋值为0.
如果数组不存在0的话,slow始终等于fast,此时也就不需要进一步处理数组。
只要数组存在0的话,fast就要比slow多走,多走的中间一定都是0。所以fast就一直遍历,遇到非0的就交换,直到遍历完数组。

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

leetcode844


这道题其实用堆栈的思想是更容易做出来的。遇到非#加入堆栈里面,遇到#就弹出,但是此时弹出一定要检查堆栈还有没有元素,否则就会报错。以这样的方式处理完这两个数组后。在比较两个数组是否相等即可。具体程序如下:

class Solution:
    def backspaceCompare(self, s: str, t: str) -> bool:
        del_s = []
        del_t = []
        for i in range(len(s)): 
            if s[i]!= '#':
                del_s.append(s[i])
            elif del_s:
                del_s.pop()
        for i in range(len(t)):
            if t[i]!= '#':
                del_t.append(t[i])
            elif del_t:
                del_t.pop()
        if del_s == del_t:
            return True
        return False 

leetcode977

在这里插入图片描述
这道题如何用库函数的话就一句话就完事,直接整个数组平方后排序就行。但是一般面试还是最好不要用库函数把。双指针思路就是:比较left指向和right指向的值哪个大,就放入新的数组里面,但是要倒着放,这样最后就不用再反转一遍数组了。具体代码如下:

class Solution:
    def sortedSquares(self, nums: List[int]) -> List[int]:
        left, right =0,len(nums)-1
        result = [0]*len(nums)
        lenth = len(nums) - 1
        while left <= right:
            if nums[left]**2 > nums[right]**2:
                result[lenth] = nums[left]**2
                left += 1
                lenth -= 1
            else:
                result[lenth] = nums[right]**2
                right -= 1
                lenth -= 1
        return result

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1937903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.1、matlab双目相机标定实验

1、双目相机标定原理及流程 双目相机标定是将双目相机系统的内外参数计算出来&#xff0c;从而实现双目视觉中的立体测量和深度感知。标定的目的是确定各个摄像头的内部参数&#xff08;如焦距、主点、畸变等&#xff09;和外部参数&#xff08;如相机位置、朝向等&#xff09…

uni-app 影视类小程序开发从零到一 | 开源项目分享

引言 在数字娱乐时代&#xff0c;移动设备已成为我们生活中不可或缺的一部分&#xff0c;尤其是对于电影爱好者而言&#xff0c;随时随地享受精彩影片成为一种日常需求。爱影家&#xff0c;一款基于 uni-app 开发的影视类小程序&#xff0c;正是为此而生。它不仅提供了丰富的影…

北京交通大学《深度学习》专业课,实验3卷积、空洞卷积、残差神经网络实验

一、实验要求 1. 二维卷积实验&#xff08;平台课与专业课要求相同&#xff09; ⚫ 手写二维卷积的实现&#xff0c;并在至少一个数据集上进行实验&#xff0c;从训练时间、预测精 度、Loss变化等角度分析实验结果&#xff08;最好使用图表展示&#xff09; ⚫ 使用torch.nn…

基于ffmepg的视频剪辑

1.ffmpeg命令实现视频剪辑 FFmpeg是一个非常强大的视频处理工具&#xff0c;可以用来剪辑视频。以下是一个基本的FFmpeg命令行示例&#xff0c;用于剪辑视频&#xff1a; $ ffmpeg -i ./最后一滴水.mp4 -ss 0:0:20 -t 50 -c copy output.mp4-i ./最后一滴水.mp4 输入文件  …

利用PyTorch进行模型量化

利用PyTorch进行模型量化 目录 利用PyTorch进行模型量化 一、模型量化概述 1.为什么需要模型量化&#xff1f; 2.模型量化的挑战 二、使用PyTorch进行模型量化 1.PyTorch的量化优势 2.准备工作 3.选择要量化的模型 4.量化前的准备工作 三、PyTorch的量化工具包 1.介…

Linux复习02

一、什么是操作系统 操作系统是一款做软硬件管理的软件&#xff01; 一个好的操作系统&#xff0c;衡量的指标是&#xff1a;稳定、快、安全 操作系统的核心工作&#xff1a; 通过对下管理好软硬件资源的手段&#xff0c;达到对上提供良好的&#xff08;稳定&#xff0c;快…

【MindSpore学习打卡】应用实践-LLM原理和实践-文本解码原理 —— 以MindNLP为例

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;文本生成是一项重要且具有挑战性的任务。从对话系统到自动文本补全&#xff0c;文本生成技术无处不在。本文将深入探讨自回归语言模型的文本解码原理&#xff0c;使用MindNLP工具进行示例演示&#xff0c;并详细分析…

240719_图像二分类任务中图像像素值的转换-[0,255]-[0,1]

240719_图像二分类任务中图像像素值的转换-[0,255]-[0,1] 在做语义分割二分类任务时&#xff0c;有时下载到的数据集或者我们自己制作的数据集&#xff0c;标签像素值会是[0,255]&#xff08;或者含有一些杂乱像素&#xff09;&#xff0c;但在该类任务中&#xff0c;往往0代表…

androidkiller重编译apk失败的问题

androidkiller重编译apk失败 参考&#xff1a; https://blog.csdn.net/qq_38393271/article/details/127057187 https://blog.csdn.net/hkz0704/article/details/132855098 已解决&#xff1a;“apktool” W: invalid resource directory name:XXX\res navigation 关键是编译…

脑肿瘤有哪些分类? 哪些人会得脑肿瘤?

脑肿瘤&#xff0c;作为一类严重的脑部疾病&#xff0c;其分类复杂多样&#xff0c;主要分为原发性脑肿瘤和脑转移瘤两大类。原发性脑肿瘤起源于颅内组织&#xff0c;常见的有胶质瘤、脑膜瘤、生殖细胞瘤、颅内表皮样囊肿及鞍区肿瘤等。其中&#xff0c;胶质瘤作为最常见的脑神…

# Redis 入门到精通(九)-- 主从复制

Redis 入门到精通&#xff08;九&#xff09;-- 主从复制&#xff08;1&#xff09; 一、redis 主从复制 – 主从复制简介 1、互联网“三高”架构 高并发高性能高可用 2、你的“Redis”是否高可用&#xff1f; 1&#xff09;单机 redis 的风险与问题 问题1.机器故障  现…

WeTest 海外本地化测试的全生命周期服务 第一期

伴随全球化和数字化的加速推进&#xff0c;越来越多的国内企业希望将其产品服务推向国际&#xff0c;以便在全球数字市场中占有一席之地。除去传统的欧美市场&#xff0c;国内企业也积极开拓东南亚、南亚、拉美、中东和非洲等新兴市场。这些地区的互联网普及率和数字化需求正在…

vue+watermark-dom实现页面水印效果

前言 页面水印大家应该都不陌生&#xff0c;它可以用于验证数字媒体的来源和完整性&#xff0c;还可以用于版权保护和信息识别&#xff0c;这些信息可以在不影响媒体质量的情况下嵌入&#xff0c;‌并在需要时进行提取。‌本文将通过 vue 结合 watermark-dom 库&#xff0c;教大…

《AIGC 实战宝典》(2024版) 正式发布!

2024 新年伊始&#xff0c;OpenAI 推出文生视频 Sora&#xff0c;风靡整个科技圈。 最近又发布了 ChatGPT-4o&#xff0c;这是一个全新模型&#xff0c;不仅能处理文本&#xff0c;还能实时理解和生成音频和图像。OpenAI 用实际行动给全世界的科技公司又上了一课。 如何从0到1…

零基础STM32单片机编程入门(十五) DHT11温湿度传感器模块实战含源码

文章目录 一.概要二.DHT11主要性能参数三.DHT11温度传感器内部框图四.DTH11模块原理图五.DHT11模块跟单片机板子接线和通讯时序1.单片机跟DHT11模块连接示意图2.单片机跟DHT11模块通讯流程与时序 六.STM32单片机DHT11温度传感器实验七.CubeMX工程源代码下载八.小结 一.概要 DH…

offer题目51:数组中的逆序对

题目描述&#xff1a;在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。例如&#xff0c;在数组{7,5,6,4}中&#xff0c;一共存在5个逆序对&#xff0c;分别是(7…

[Vulnhub] TORMENT IRC+FTP+CUPS+SMTP+apache配置文件权限提升+pkexec权限提升

信息收集 IP AddressOpening Ports192.168.101.152TCP:21,22,25,80,111,139,143,445,631 $ nmap -p- 192.168.101.152 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later | ftp-anon: Anonymous FTP login a…

新建一个git仓库并且把已有项目推送到git远程仓库

总贴 1. 创建一个空项目&#xff0c;不会看新建仓库 2. 克隆这个项目到某个文件夹去&#xff0c;比如我想克隆到我的E盘的code下面 3. 我的这个文件夹下面是有东西的&#xff0c;一点都不影响 . 4. 用命令行进入这个文件夹 命令行已经显示了已经在E盘下面code文件夹, 不会…

【linux】报错解决:配置RAIDA1之后系统识别不到

【linux】报错解决&#xff1a;配置RAIDA1之后系统识别不到 一、问题描述&#xff1a; 我的主板是华南金牌X99-F8D PLUS&#xff0c;安装了ubuntu20.04&#xff0c;通过BIOS创建了RAID1数组&#xff0c;进入系统之后识别不到我创建的RAID1数组。 二、原因分析&#xff1a; 可…

【算法】算法模板

算法模板 文章目录 算法模板简介数组字符串列表数学树图动态规划 简介 博主在LeetCode网站中学习算法的过程中使用到并总结的算法模板&#xff0c;在算法方面算是刚过初学者阶段&#xff0c;竞赛分数仅2000。 为了节省读者的宝贵时间&#xff0c;部分基础的算法与模板未列出。…