标签:
本题也属于easy模式,题意是说去掉一个有序数组中的重复部分,而且不需要额外的开销,只能在初始数组中做文章。这种题目就有一种固定的套路,就是使用两个指标,一个向前走,一个断后,我定义的i就是取到数组中的每一个数,pos是去掉重复之后的位置。最后多说一句,一定要注意判断原数组是否为空啊,粗心马虎真的不可取,谨记!#include<stdio.h> #include<stdlib.h> int removeDuplicates(int A[], int n) { if(n==0) return 0; int i=0,pos=1,tmp=A[0]; for(i=1;i<n;i++) { if(tmp==A[i]) continue; else { A[pos++]=A[i]; tmp=A[i]; } } return pos; } int main() { int n; while(scanf("%d",&n)!=EOF) { int *a=(int *)malloc(sizeof(int)*n); int i,len; for(i=0;i<n;i++) scanf("%d",&a[i]); len=removeDuplicates(a,n); for(i=0;i<len-1;i++) printf("%d ",a[i]); printf("%d\n",a[len-1]); printf("New Length:%d\n",len); } return 0; }
leetcode第26题-Remove Duplicates from Sorted Array
标签:
原文地址:http://blog.csdn.net/zyh920521/article/details/45171495