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

回答編集履歴

1

全てのエラーを取り除けました。

2020/06/22 05:11

投稿

alizona
alizona

スコア126

answer CHANGED
@@ -5,4 +5,76 @@
5
5
  に変更することによって、runtime errorが改善されました。
6
6
 
7
7
  アドバイスや、回答のサンプルをいただいたみなさまありがとうございました。
8
- 今後ともよろしくお願いいたします。
8
+ 今後ともよろしくお願いいたします。
9
+
10
+ ---------------------------------------------------------------------
11
+
12
+ LeetCodeという練習サイトで自動テストをしてくれるのですが、やっとクリアしました。コードをここにあげます。
13
+ ```C++
14
+ class Solution {
15
+ public:
16
+ void merge(vector<int>& numFirst, int fLength, vector<int>& numSecond, int sLength) {
17
+
18
+ int F=0;
19
+ int S=0;
20
+
21
+ vector<int>tmp;
22
+
23
+ while(sLength !=0 && F<numFirst.size()){
24
+
25
+ if(tmp.size()==0){
26
+ if(S==sLength){
27
+ F++;
28
+
29
+ }else if(F>=fLength || fLength==0){
30
+
31
+ numFirst[F]=numSecond[S];
32
+ F++;
33
+ S++;
34
+
35
+ }else if(numFirst[F]>numSecond[S]){
36
+ if(F<fLength){
37
+ tmp.push_back(numFirst[F]);
38
+ }
39
+ numFirst[F]=numSecond[S];
40
+ F++;
41
+ S++;
42
+
43
+ }else if(numFirst[F]<=numSecond[S]){
44
+ F++;
45
+ }
46
+
47
+ ///////////////////////////////tmpあり////////////////////
48
+ }else{
49
+ if(S==sLength){
50
+ if(F<fLength){
51
+ tmp.push_back(numFirst[F]);
52
+ numFirst[F]=tmp[0];
53
+ tmp.erase(tmp.begin());
54
+ }else{
55
+ numFirst[F]=tmp[0];
56
+ tmp.erase(tmp.begin());
57
+ }
58
+ F++;
59
+
60
+ }else if(tmp[0]>numSecond[S]){
61
+ if(F<fLength)
62
+ tmp.push_back(numFirst[F]);
63
+ numFirst[F]=numSecond[S];
64
+ F++;
65
+ S++;
66
+
67
+ }else if(tmp[0]<=numSecond[S]){
68
+ if(F<fLength){
69
+ tmp.push_back(numFirst[F]);
70
+ }
71
+ numFirst[F]=tmp[0];
72
+ tmp.erase(tmp.begin());
73
+ F++;
74
+ }
75
+ }
76
+ }
77
+ }
78
+ };
79
+
80
+ ```