回答編集履歴
6
微修正
test
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
```C
|
6
6
|
|
7
7
|
int unique(int *array, int n) {
|
8
|
+
|
9
|
+
if ( array == NULL ) return 0;
|
8
10
|
|
9
11
|
int* dst = array; // 重複を取り除いた列 : [array, dst) 最初は空
|
10
12
|
|
5
微修正
test
CHANGED
@@ -30,4 +30,4 @@
|
|
30
30
|
|
31
31
|
```
|
32
32
|
|
33
|
-
※ begin から始まり end
|
33
|
+
※ begin から始まり end に満たない(begin以上/end未満)範囲を [begin,end) と表記しています。
|
4
微修正
test
CHANGED
@@ -8,13 +8,13 @@
|
|
8
8
|
|
9
9
|
int* dst = array; // 重複を取り除いた列 : [array, dst) 最初は空
|
10
10
|
|
11
|
-
//
|
11
|
+
// [array, array+n) 内の各値 *src に対し:
|
12
12
|
|
13
13
|
for( int* src = array; src != array+n; ++src ) {
|
14
14
|
|
15
15
|
int* p;
|
16
16
|
|
17
|
-
//
|
17
|
+
// [array, dst) つまり重複を取り除いた列の中から *src を探し
|
18
18
|
|
19
19
|
for ( p = array; p != dst && *p != *src; ++p ) { }
|
20
20
|
|
3
加筆
test
CHANGED
@@ -29,3 +29,5 @@
|
|
29
29
|
}
|
30
30
|
|
31
31
|
```
|
32
|
+
|
33
|
+
※ begin から始まり end を超えない範囲を [begin,end) と表記しています。
|
2
微修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
int unique(int *array, int n) {
|
8
8
|
|
9
|
-
int* dst = array;
|
9
|
+
int* dst = array; // 重複を取り除いた列 : [array, dst) 最初は空
|
10
10
|
|
11
11
|
// 範囲:[array, array+n) 内の各値 *src に対し:
|
12
12
|
|
@@ -14,11 +14,11 @@
|
|
14
14
|
|
15
15
|
int* p;
|
16
16
|
|
17
|
-
// 範囲:[array, dst)
|
17
|
+
// 範囲:[array, dst) つまり重複を取り除いた列の中から *src を探し
|
18
18
|
|
19
19
|
for ( p = array; p != dst && *p != *src; ++p ) { }
|
20
20
|
|
21
|
-
// 見つからなかったら末尾に追加する
|
21
|
+
// 見つからなかったら(重複しないんだから)末尾に追加する
|
22
22
|
|
23
23
|
if ( p == dst ) *dst++ = *src;
|
24
24
|
|
1
加筆
test
CHANGED
@@ -8,17 +8,23 @@
|
|
8
8
|
|
9
9
|
int* dst = array;
|
10
10
|
|
11
|
+
// 範囲:[array, array+n) 内の各値 *src に対し:
|
12
|
+
|
11
13
|
for( int* src = array; src != array+n; ++src ) {
|
12
14
|
|
13
15
|
int* p;
|
14
16
|
|
17
|
+
// 範囲:[array, dst) 内から *src を探し
|
18
|
+
|
15
19
|
for ( p = array; p != dst && *p != *src; ++p ) { }
|
20
|
+
|
21
|
+
// 見つからなかったら末尾に追加する
|
16
22
|
|
17
23
|
if ( p == dst ) *dst++ = *src;
|
18
24
|
|
19
25
|
}
|
20
26
|
|
21
|
-
return dst - array;
|
27
|
+
return dst - array; // [array, dst) の要素数を返す
|
22
28
|
|
23
29
|
}
|
24
30
|
|