今天这道双指针题目特征非常明显,就是数据挪移。这类问题,通常需要一个指针扫描全局,确定哪个元素要被挪移,另一个指针用来维护能够接纳元素的地址。

1 举个栗子

给定一个升序排列的数组,请将其中重复的字符移除。你不能使用额外的空间。在处理完毕后,返回去重后的数组长度

  • 例子1

输入:[2, 3, 3, 3, 6, 9, 9]

输出:4

解释:去重后数组的元素是[2, 3, 6, 9]

  • 例子2 输入:[2, 2, 2, 11]

输出:2

解释:去重后数组的元素是[2, 11]

2 问题分析

这个问题中,数组是有序的。我们可以用一个指针顺序扫描整个数组,找出所有的非重复数字。判断的标准非常简单,当该元素与上一个非重复元素的值不同时,该元素就是一个新的数字。

那,将这个元素放在哪里呢?因为该元素右边还需要进行扫描,所以,我们只能将这些非重复的元素放到数组的左端,这样,我们就需要另一个指针来记录可用来存放元素的位置。并且每放一个元素,就需要移动一下该指针。

3 动画展示

下面的视频可以帮助理解。

原地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/solution/shi-ping-dong-hua-jie-xi-bao-ni-dong-by-novice2mas/

4 代码实现

def remove_duplicates(arr):# 用来记录放置非重复元素的位置# 0位置上认为是已经放好的  next_non_duplicate = 1

  i = 1while(i < len(arr)):if arr[next_non_duplicate - 1] != arr[i]:      arr[next_non_duplicate] = arr[i]      next_non_duplicate += 1    i += 1

return next_non_duplicate

next数组_【阿里面试热身题】数组去重(动画展示)相关推荐

  1. Mysql面试热身题集总结

    文章目录 前言 1.热身题实践 其他 前言 一直有个想法:把面试需要的知识点全都总结一下,包括数据库,语言,算法,数据结构等知识,形成一个面试总结笔记,这样以后面试的时候只看这些文章回顾下就行了.今天 ...

  2. 二叉树的层次遍历_【腾讯面试热身题】二叉树层次遍历(动画展示)

    二叉树的层次遍历同时涉及到树和队列两种数据结构的操作,因此大厂很喜欢用来作为面试的热身题.作者不少去腾讯的小伙伴,都反映,这种题一定要非常熟练,不然会被直接pass. 1 题目描述 给定一个二叉树,按 ...

  3. arraylist转int数组_五千字的数组拓展,面试官对我竖起大拇指喊停

    目录 为什么数组下标从0开始? 数组定义 为什么这么下定义? 定义数组的三种方式 从 ArrayList 源码看数组增删改查 初始化 增加 删除 修改 查找 数组和容器 数组时间复杂度 数组插入,删除 ...

  4. double 数组_寻找两个有序数组的中位数

    大家好,我是老皮: 题目地址:https://leetcode.com/problems/median-of-two-sorted-arrays/ 题目描述: 给定两个大小为 m 和 n 的有序数组 ...

  5. 最强阿里面试126题:数据结构+并发编程+Redis+设计模式+微服务

    BAT技术面试范围 数据结构与算法:最常见的各种排序,最好能手写 Java高级:JVM内存结构.垃圾回收器.回收算法.GC.并发编程相关(多线程.线程池等).NIO/BIO.各种集合类的比较优劣势(底 ...

  6. go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)

    前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在阿里面试的时候确实被问到了这个问题,HTTP.HTTPS.TC ...

  7. c语言把一个数组赋值给另一个数组_如何把一个固定数组的值传递给另外一个数组...

    大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解的是第34讲:数组的传递.在应用数组的时候,我们往往需要要把数组的值由一个数组传递给另外一个数组,就如同变量的传递一样: A=B '把B值赋给 ...

  8. eureka自我保护时间_阿里面试官问我:到底知不知道什么是Eureka,这次,我没沉默...

    文章首发:阿里面试官问我:到底知不知道什么是Eureka,这次,我没沉默 什么是服务注册? 首先我们来了解下,服务注册.服务发现和服务注册中心的之间的关系. 举个形象的例子,三者之间的关系就好像是供货 ...

  9. jni c向java传递数组_通过jni将jint数组从c返回到java

    我在java中创建了一个整数数组,并通过jni将数组传递给cpp程序 我的代码是: import java.util.*; class SendArray { //Native method decl ...

最新文章

  1. 2022-2028年中国科技馆行业研究及前瞻分析报告
  2. java保存不了_在使用Java写入文件时,文件不能保存在文件夹中
  3. java 打印心形图案_简单漂亮的心形礼品盒折纸手工教程
  4. SQL的各种连接(cross join、inner join、full join)的用法理解
  5. 防抖 节流_【前端面试】节流与防抖
  6. 灵芝蘑菇提取物行业调研报告 - 市场现状分析与发展前景预测
  7. 给做技术的换一道菜尝尝:一月冲皇冠?凶残级淘宝店主,无法阻挡的爆款名城!...
  8. fopen php 读取_PHP fopen读取url内容
  9. JavaBean实现简单登录功能
  10. Win10系统安装SQL2008 R2详细步骤+图片+常见问题及解决方法
  11. 【转】华为手机logcat不出日志解决方案
  12. MySQL~锁的大集合(S锁、X锁、意向锁、自增锁、元数据锁、记录锁、间隙锁、临键锁、全局锁、死锁)
  13. Android 利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)
  14. MATLAB批量改变图片大小
  15. 盛诺基科创板IPO被终止:曾拟募资20亿 IDG与启明是股东
  16. 箱线图(Boxplot)
  17. fiery服务器系统安装,fiery服务器打印设置
  18. python字典len(d)_Python-字典
  19. 店铺补单,补单技巧,补单流程及注意事项,降低被抓率
  20. 易烊千玺小网站短信验证码(小行星编号)发送和验证的实现

热门文章

  1. AV1生态系统更新:2019年6月
  2. VIPKID 张武锋:自研RTC的故事
  3. Web内核微信小程序框架实践
  4. 操作系统与存储:解析Linux内核全新异步IO引擎io_uring设计与实现
  5. debian下运行netstat失败
  6. 内网穿透工具ngrok的使用
  7. IM的扫码登录功能如何实现?一文搞懂主流的扫码登录技术原理
  8. java小编程----在排序数组中查找元素的第一个和最后一个位置
  9. leetcode 406. Queue Reconstruction by Height | 406. 根据身高重建队列(Java)
  10. 【Spring】JSP 九大内置对象、作用域复习