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