2.1.1Remove Duplicates from Sorted Arr

 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 }

 

posted @ 2018-03-04 10:41  多想一分钟  阅读(107)  评论(0编辑  收藏  举报