teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

6

微修正

2020/12/28 00:35

投稿

episteme
episteme

スコア16612

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

微修正

2020/12/28 00:35

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -14,4 +14,4 @@
14
14
  return dst - array; // [array, dst) の要素数を返す
15
15
  }
16
16
  ```
17
- ※ begin から始まり end を超えない範囲を [begin,end) と表記しています。
17
+ ※ begin から始まり end に満たない(begin以上/end未満)範囲を [begin,end) と表記しています。

4

微修正

2020/12/24 01:39

投稿

episteme
episteme

スコア16612

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
- // 範囲:[array, array+n) 内の各値 *src に対し:
6
+ // [array, array+n) 内の各値 *src に対し:
7
7
  for( int* src = array; src != array+n; ++src ) {
8
8
  int* p;
9
- // 範囲:[array, dst) つまり重複を取り除いた列の中から *src を探し
9
+ // [array, dst) つまり重複を取り除いた列の中から *src を探し
10
10
  for ( p = array; p != dst && *p != *src; ++p ) { }
11
11
  // 見つからなかったら(重複しないんだから)末尾に追加する
12
12
  if ( p == dst ) *dst++ = *src;

3

加筆

2020/12/24 01:38

投稿

episteme
episteme

スコア16612

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

微修正

2020/12/24 01:34

投稿

episteme
episteme

スコア16612

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) から *src を探し
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

加筆

2020/12/24 01:26

投稿

episteme
episteme

スコア16612

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
  ```