码迷,mamicode.com
首页 > 编程语言 > 详细

[leetcode/lintcode 题解] 谷歌面试题:删除排序数组中的重复数字

时间:2021-01-15 12:04:14      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:turn   ica   算法   ora   get   出现   input   code   opener   

描述
给定一个排序数组,在原数组中“删除”重复出现的数字,使得每个元素只出现一次,并且返回“新”数组的长度。
不要使用额外的数组空间,必须在不使用额外空间的条件下原地完成。
 
在线评测地址:领扣题库官网
 
样例1
输入: []
输出: 0
样例2
输入: [1,1,2]
输出: 2
解释: 数字只出现一次的数组为: [1,2]
算法:双指针
算法思路
  • 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.
  • For example, Given input array A = 1,1,2,
  • Your function should return length = 2, and A is now 1,2.
  • 由于有序,所以相同的数字排在一起。 用一个游标变量指向已经去重的部分的下一个空位,只要a[i]!=a[i?1]a[i]!=a[i?1],就将ai填入之前的空位。
public class Solution {
public int removeDuplicates(int[] A) {
if (A == null || A.length == 0) {
return 0;
}
 
int size = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] != A[size]) {
A[++size] = A[i];
}
}
return size + 1;
}
}
更多题解参考:九章solution

[leetcode/lintcode 题解] 谷歌面试题:删除排序数组中的重复数字

标签:turn   ica   算法   ora   get   出现   input   code   opener   

原文地址:https://www.cnblogs.com/lintcode/p/14279700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!