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

回答編集履歴

2

追記

2020/11/13 08:19

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -1,14 +1,13 @@
1
1
  関数mergeについて、片方のリストが空の場合の考慮が欠けています。
2
2
  空のリストには当然先頭要素などありませんから、範囲外アクセスを吐くでしょう。
3
3
 
4
- 次のように早期脱出するだけで解消するように思います。
5
- ```Python
4
+ > ```Python
6
- def merge(L, R):
7
- if not L: # Lが空の
5
+ while (nL>0) and (nR>0): #リストLとリストRのデータ数が0になるまで繰り返す
8
- return R
6
+ > ```
9
7
 
10
- if not R: # Rが空
8
+ リストLやRの要素をdelしても、nLやnRの値が勝手に書換わることはありません。
11
- return L
9
+ ループ中で書き換えるようにするか、条件部で直接長さを判定して下さい。
12
10
 
13
- ...
11
+ ---
14
- ```
12
+ なお、その部分を直してもまだ足りません。
13
+ 試しに merge([], [1, 2, 3]) などを試してみると良いでしょう。

1

修正

2020/11/13 08:19

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  if not L: # Lが空のとき
8
8
  return R
9
9
 
10
- if not R: # Rが空の
10
+ if not R: # Rが空のとき
11
11
  return L
12
12
 
13
13
  ...