100. Remove Duplicates from Sorted Array && 101. Remove Duplicates from Sorted Array II [easy]
这两题类似,所以放在一起,先看第一题:
Description
Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this in place with constant memory.
Example
Given input array A = [1,1,2],
Your function should return length = 2, and A is now [1,2].
给一个有序数组,去掉重复的部分,并返回不重复的数组长度。详细思路见代码中的注释,代码如下:
public class Solution {
    /*
     * @param nums: An ineger array
     * @return: An integer
     */
    public int removeDuplicates(int[] nums) {
        // write your code here
        if(nums.length==0)
        return 0;
        int cur=0;
        int pre=0;
        int n=nums.length;
        while(cur<n){
            if(nums[cur]==nums[pre]) cur++;//重复了就忽略
            else nums[++pre]=nums[cur++];//没重复,则添加到pre序列中
        }
        return pre+1;//pre即新数组的最后元素的下标,因为返回长度,所以加一
    }
}
再看另一题,有区别,个别细节不一样,但整体思路一样。代码如下:
public class Solution {
    /**
     * @param A: a array of integers
     * @return : return an integer
     */
    public int removeDuplicates(int[] nums) {
        // write your code here
        if(nums.length==0){
            return 0;
        }
        if(nums.length==1){
            return 1;
        }
        //区别于前一题,确保元素大于等于两个时,cur=1
        int pre=0;
        int cur=1;
        int n=nums.length;
        while(cur<n){
              //和前一题思路一样,什么时候忽略这个元素呢?只有等下标为pre和pre-1的元素都等于cur所指的元素时,说明队列中已经有两个该元素了,所以这个元素应该被忽略并覆盖,cur++
              //当数组下标有减号时 例如 pre-1时,格外注意一下,数组下标不能小于0,否则会出错,即pre必须大于0
            if(pre!=0&&nums[cur]==nums[pre]&&nums[cur]==nums[pre-1]){
                   cur++;
            }else{
               //如果不满足if条件,说明cur所指的元素是有价值的,添加到pre队列中。
                nums[++pre]=nums[cur++];
            }
        }
        return pre+1;
    }
}
100. Remove Duplicates from Sorted Array && 101. Remove Duplicates from Sorted Array II [easy]的更多相关文章
- js 扩展Array支持remove方法
		/* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove = function ... 
- 33. Search in Rotated Sorted Array & 81. Search in Rotated Sorted Array II
		33. Search in Rotated Sorted Array Suppose an array sorted in ascending order is rotated at some piv ... 
- Day07_39_集合中的remove()方法 与 迭代器中的remove()方法
		集合中的remove()方法 与 迭代器中的remove()方法 深入remove()方法 iterator 中的remove()方法 collection 中的remove(Object)方法 注意 ... 
- Array.apply(null, {length: 20})和Array(20)的理解
		话说今晚在学习Vue.js教程里:Render函数,这一章节是发现了一个问题,就是利用下面的这个render函数可以渲染20个重复的段落: render: function (createElemen ... 
- 选择排序是外面循环的array[i]与内循环的array[j]比较。冒泡排序是内循环的相邻两个值做比较修改
		选择排序是外面循环的array[i]与内循环的array[j]比较.冒泡排序是内循环的相邻两个值做比较修改 
- [array] leetCode-26. Remove Duplicates from Sorted Array - Easy
		26. Remove Duplicates from Sorted Array - Easy descrition Given a sorted array, remove the duplicate ... 
- leetcode 203. Remove Linked List Elements 、83. Remove Duplicates from Sorted List 、82. Remove Duplicates from Sorted List II(剑指offer57 删除链表中重复的结点)
		203题是在链表中删除一个固定的值,83题是在链表中删除重复的数值,但要保留一个:82也是删除重复的数值,但重复的都删除,不保留. 比如[1.2.2.3],83题要求的结果是[1.2.3],82题要求 ... 
- 83. Remove Duplicates from Sorted List + 82. Remove Duplicates from Sorted List II
		▶ 删除单链表中的重复元素. ▶ 83. 把重复元素删得只剩一个,如 1 → 1 → 2 → 3 → 3 → 3 → 4 → 5 → 5 变成 1 → 2 → 3 → 4 → 5.注意要点:第一个元素 ... 
- [array] leetCode-27. Remove Element - Easy
		27. Remove Element - Easy descrition Given an array and a value, remove all instances of that value ... 
随机推荐
- STC12LE5620AD RAM问题
			1.此款单片机内部有 sram:768B=512B(aux)+256B(Internal) 2.内部RAM解析 2. 3.内部扩展RAM 4.keil中可以选择内存类型 5. 网上摘抄的一段话: 在S ... 
- careercup-扩展性和存储限制10.3
			题目 给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用. 如果你只有10MB的内存呢? 解答 我们先来做个算术题,40亿个整数大概有多大? * ^ ... 
- IE下内容居中
			ie8下调了很长时间的居中问题,加一个body {text-align:center;},居然解决了.. 参考解决答案:*html * {margin:0px; padding:0;} 然后在盒子里b ... 
- Java日期类题目
			每类题都有各种各样解决的方式,大家随意发散 分析以下需求,并用代码实现 1.已知日期字符串:"2015-10-20",将该日期字符串转换为日期对象 2.将(1)中的日期对象转换为日 ... 
- http://imgbase64.duoshitong.com/     图片转换 base64
			base64图片工具介绍: 1.支持 PNG.GIF.JPG.BMP.ICO 格式. 2.将图片转换为Base64编码,可以让你很方便地在没有上传文件的条件下将图片插入其它的网页.编辑器中. 这对于一 ... 
- About Me - 关于
			0x00 简介 97年生 计算机相关专业,无线电安全攻防方向. 涉猎较多,喜欢研究无线.硬件.软件.网络.攻击.检测.防御等各类安全技术 精通较少,主要擅长的还是硬件.渗透.无线攻击方面. 现阶段在研 ... 
- CentOS7安装.Net Core2.2
			一.安装.Dotnet Core 2.2 Runtime Linux上运行Dotnet Core程序的前提是安装Dotnet Core Runtime .Net Core对不同的Linux版本提示了 ... 
- LAMP+Varnish的实现
			基于Keepalived+Varnish+Nginx实现的高可用LAMP架构 注意:各节点的时间需要同步(ntpdate ntp1.aliyun.com),关闭firewalld(systemctl ... 
- css 浮动说明
			clear:both; 1.要了解的:什么是浮动.浮在某面板之上. 例如:float:left; 向左停靠, 就是让需要设置浮动的元素,跟在指定元素后面. 先上实例: 比较常用导航: .nav_ul ... 
- mongodb副本集的docker化安装
			1. 定义 一般只要生产环境就需要考虑冗余设计,保证在某一台服务器由于某种原因宕机后服务还可以正常运行. mongo副本集是一组服务器,其中有一个主服务器(primary),用于处理客户端请求:还有多 ... 
