首页 > 其他 > 详细

leetcode-Remove Duplicates from Sorted Array

时间:2018-04-14 10:34:41      阅读:234      评论:0      收藏:0      [点我收藏+]

question:Remove Duplicates from Sorted Array

Given a sorted array nums, 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 by modifying the input array in-place with O(1) extra memory.

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

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

 

Example 1:

Given nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.

It doesn‘t matter what you leave beyond the returned length.

Example 2:

Given nums = [0,0,1,1,1,2,2,3,3,4],

Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.

It doesn‘t matter what values are set beyond the returned length.

Link:https://leetcode.com/explore/interview/card/top-interview-questions-easy/92/array/727/

 思路:

理解1:定义两个索引,一个头索引,一个尾索引,头索引指向找到的数(也是刚被移动的数),尾索引找不相同的数;比如 [1,1,2],

经过循环后;end=2,head=1;

理解2:一个快指针,一个慢指针,慢指针的下标是快指针找到不相同的元素移动到数组的那个位置的下标;(同样也是不重复元素的个数)

class Solution {
    public int removeDuplicates(int[] nums) {
       int head=0 ,end=0;
        /**
        定义一个头索引和一个尾索引,头索引指向刚被移动的数.尾索引找不相同的数,
        并且移动到头索引的下下一个
        
        */
    	
    	for (int i = 0; i < nums.length; i++) {
    		
    		if(nums[head]!=nums[end]){
    			nums[head+1]=nums[end];
    			head++;
    			
    		}
			end++;
		}
        
        return head+1;
        
    }
}

 

 

leetcode-Remove Duplicates from Sorted Array

原文:https://www.cnblogs.com/liu-wang/p/8830257.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!