1 /*
2 题目:2.1.1 Remove Duplicates from Sorted Array
3 Given a sorted array, remove the duplicates in place such that each element appear only once
4 and return the new length.
5 Do not allocate extra space for another array, you must do this in place with constant memory.
6 For example, Given input array A = [1,1,2],
7 Your function should return length = 2, and A is now [1,2]
8 */
9 /*
10 分析:数组中元素去重问题
11 要求:不能申请新空间,需要在原来的数组空间上操作
12 思路:1、用两个指针指向前后两个元素
13 2、比较前后两个元素是否相同
14 3、不同则将后一个元素写入前一个指针所表示的数组中
15 4、直到数据末尾
16
17 注:该方法只适合已排好顺序的数组
18 */
19 #include <stdio.h>
20 #include <stdlib.h>
21
22 //写一个类,类里面的public成员中放这些函数(注意类的书写规范:1、类名大写 2、中括号后有分号)
23 class Solution{
24 public:
25 //类内实现函数(区分类内定义,类外实现。作用域限定符的使用)
26 int removeDuplicates(int A[],int n){ //数组作为函数参数如何传递?
27 if(n == 0) return 0; //数组长度为零的情况
28
29 int index = 0;
30 for(int i = 1;i < n;i++){
31 if(A[index] != A[i])
32 A[++index] = A[i];
33 }
34 return index + 1;
35 }
36 };
37 int main()
38 {
39 int A[] = {1,2,2,3,5,7,7,8,};
40 Solution s1;
41 int n = s1.removeDuplicates(A,8);//数组传参,只用传递数组名
42
43 printf("个数:%d\n",n);
44 for(int j =0;j < n;j++)
45 printf("%d ",A[j]);
46
47 system("pause");
48 return 0;
49 }