day4数组之 删除排序数组中的重复项

2023-05-16

26删除排序数组中的重复项

给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。

 

示例 1:

给定数组 nums = [1,1,2], 

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 

你不需要考虑数组中超出新长度后面的元素。
示例 2:

给定 nums = [0,0,1,1,1,2,2,3,3,4],

函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。

你不需要考虑数组中超出新长度后面的元素。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

方法:双指针法

def removeDuplicates(nums):
    n=len(nums)
    if(not nums ):
        return 0
    index=0
    for i in range(1,n):
        if(nums[index]!=nums[i]):
            index+=1
            nums[index]=nums[i]
    return index+1
#nums = [0,0,1,1,1,2,2,3,3,4]
nums = [1,1,2]
out = removeDuplicates(nums)
print('结果:',out)

 

27 移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

示例 1:

输入:nums = [3,2,2,3], val = 3
输出:2, nums = [2,2]
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。
示例 2:

输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5, nums = [0,1,4,0,3]
解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。注意这五个元素可为任意顺序。你不需要考虑数组中超出新长度后面的元素。
 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-element
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

def removeElement(nums,val):
    if(not nums ): return 0
    n=len(nums)
    index=0
    for i in range(n):
        if(nums[i]!=val):
            nums[index]=nums[i]
            index += 1
    return index
nums = [3,2,2,3]
#nums =[0,1,2,2,3,0,4,2]
out = removeElement(nums,2)
print('结果:',out)

 

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
            if (not nums): return 0
            i, n = 0, len(nums)
            while (i < n):
                if (nums[i] == val):
                    nums[i] = nums[n - 1]
                    n -= 1
                else:
                    i += 1
            return n

双指针前后扫描:

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        if (not nums): return 0
        l,r=0,len(nums)-1
        while l<r:
            while(l<r and nums[l]!=val):
                l+=1
            while(l<r and nums[r]==val):   
                r-=1
            nums[l], nums[r] = nums[r], nums[l] 
        return l if nums[l]==val else l+1

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

day4数组之 删除排序数组中的重复项 的相关文章

随机推荐

  • 高维数据可视化之t-SNE算法

    https blog csdn net hustqb article details 78144384 t sne数学原理https zhuanlan zhihu com p 57937096 什么是t SNE xff1f t SNE的主要
  • Dynamic Key-Value Memory Networks for Knowledge Tracing论文阅读

    DKVMN模型效果不是很好 xff0c 但提供了很多新颖的方法思路 xff0c 最近看几篇文章都重点提到了这个模型并对这个模型进行改进 xff0c 回头仔细看一下这篇论文 动机 将KT公式化为监督序列学习问题 BKT和DKT 本文模型 本文
  • 记忆网络外部存储器

    结构化的外部记忆 记忆网络通常由四个模块构成 xff1a 主网络 外部记忆单元 读取模块 以及写入模块 主网络 也叫做控制器 xff0c 任务是解决内容和外界的交互 外部记忆单元负责存储信 息 xff0c 由很多记忆片段组成 xff0c 它
  • 简单爬虫入门

    来源莫烦爬虫 https mofanpy com tutorials data manipulation scraping understand website 爬网页流程 选着要爬的网址 url 使用 python 登录上这个网址 url
  • 正则表达式

    正则表达式这一篇就够了 xff0c 记录学习方便回来查找 文章来源https mofanpy com tutorials python basic basic regular expression https www cnblogs com
  • 数据可视化之 Matplotlib

    可参考 https mofanpy com tutorials data manipulation plt 基本用法 set new sticks new ticks 61 np linspace 1 2 5 print new ticks
  • 爬虫学习之下载图片

    首先找到网页的图片地址如 网址为 xff1a https i0 hdslb com bfs face 03525d094e0e2a142d08181532d729615c18ec92 jpg 找到了这个网址 我们就能开始下载了 为了下载到一
  • Python刷题之两数之和

    刷题之旅开始 day1 给定一个整数数组 nums 和一个整数目标值 target xff0c 请你在该数组中找出 和为目标值 的那 两个 整数 xff0c 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 xff0c 数组中
  • day2两数相加

    给你两个 非空 的链表 xff0c 表示两个非负的整数 它们每位数字都是按照 逆序 的方式存储的 xff0c 并且每个节点只能存储 一位 数字 请你将两个数相加 xff0c 并以相同形式返回一个表示和的链表 你可以假设除了数字 0 之外 x
  • day3三数之和

    给你一个包含 n 个整数的数组 nums xff0c 判断 nums 中是否存在三个元素 a xff0c b xff0c c xff0c 使得 a 43 b 43 c 61 0 xff1f 请你找出所有和为 0 且不重复的三元组 注意 xf
  • Nginx常见日志分析

    日志格式 39 remote addr remote user time local 34 request 34 status body bytes sent 34 http referer 34 34 http user agent 34
  • python爬虫入门之http协议和 Chrome 浏览器抓包工具

    在浏览器中发送一个http请求的过程 1 当用户在浏览器的地址栏中输入一个URL并按回车键之后 xff0c 浏览器会向HTTP服务器发送HTTP请求 HTTP请求主要分为 Get 34 和 Post 34 两种方法 当我们在浏览器输入URL
  • python爬虫之urllib库学习

    urllib库 urllib库是Python中一个最基本的网络请求库 可以模拟浏览器的行为 xff0c 向指定的服务器发送一个请求 xff0c 并可以保存服务器返 回的数据 urllib库是python内置的一个http请求库 xff0c
  • 爬虫练习之了解反爬虫机制

    没学习之前我理解字面意思就是你爬虫网站 xff0c 然后该网站顺着你的ip等会对你的网络电脑等造成损失 爬虫 使用任何技术手段批量获取网站信息的一种方式 xff0c 关键在批量 反爬虫 使用任何技术手段 xff0c 阻止别人批量获取自己网站
  • python爬虫之cookie

    python爬虫之cookie 什么是cookie 在网站中 xff0c http请求是无状态的 也就是说即使第一次和服务器连接后并且登录成功后 xff0c 第二次请求服务器依然不能知道当前请求是哪个用户 cookie的出现就是为了解决这个
  • python爬虫之request库

    发送get请求 1 最简单的发送get请求就是通过requests get来调用 response 61 requests get 34 URL 34 构造一个向服务器请求资源的Request对象 xff0c 返回一个包含服务器资源的Res
  • 爬虫之数据的提取 使用XPath 及lxml 初学者必备

    一 XPATH是什么 xff1f 干什么用的 xff1f xpath xff08 XML Path Language xff09 是一门在XML和HTML文档中查找信息的语言 xff0c 可用来在XML和HTML文档中对元素和属性进行遍历
  • 刷题之sum-closest

    给定一个包括 n 个整数的数组 nums 和 一个目标值 target 找出 nums 中的三个整数 xff0c 使得它们的和与 target 最接近 返回这三个数的和 假定每组输入只存在唯一答案 示例 xff1a 输入 xff1a num
  • 使用requests和xpath爬取电影天堂

    import requests from lxml import etree from openpyxl import Workbook URL 61 39 https dytt8 net html gndy dyzz list 23 1
  • day4数组之 删除排序数组中的重复项

    26删除排序数组中的重复项 给定一个排序数组 xff0c 你需要在 原地 删除重复出现的元素 xff0c 使得每个元素只出现一次 xff0c 返回移除后数组的新长度 不要使用额外的数组空间 xff0c 你必须在 原地 修改输入数组 并在使用