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