質問編集履歴
4
改善後のコードの記載
test
CHANGED
File without changes
|
test
CHANGED
@@ -135,3 +135,95 @@
|
|
135
135
|
};
|
136
136
|
|
137
137
|
```
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
```
|
142
|
+
|
143
|
+
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
//2つの並べ替えられたリンクリストを、新しい並べ替えられたリストとして返します。
|
148
|
+
|
149
|
+
ListNode *rootPtr=NULL; //先頭のノードを保持する
|
150
|
+
|
151
|
+
ListNode *currentPtr; //現在のノードを保持する
|
152
|
+
|
153
|
+
ListNode *nodePtr; //l1かl2を一時的に保持する
|
154
|
+
|
155
|
+
|
156
|
+
|
157
|
+
while(l2!=NULL || l1!=NULL)
|
158
|
+
|
159
|
+
{
|
160
|
+
|
161
|
+
if(l1==NULL){
|
162
|
+
|
163
|
+
nodePtr=l2;
|
164
|
+
|
165
|
+
l2=l2->next;
|
166
|
+
|
167
|
+
}else if(l2==NULL){
|
168
|
+
|
169
|
+
nodePtr=l1;
|
170
|
+
|
171
|
+
l1=l1->next;
|
172
|
+
|
173
|
+
}else{
|
174
|
+
|
175
|
+
//リスト1の要素よりもリスト2の要素が小さい場合は、リスト2の要素を先にリスト3に代入
|
176
|
+
|
177
|
+
if(l1->val <= l2->val){
|
178
|
+
|
179
|
+
//l1の値の方が小さいので、nodePtrはl1に連結させる
|
180
|
+
|
181
|
+
nodePtr=l1;
|
182
|
+
|
183
|
+
//リスト1を次の要素に進める
|
184
|
+
|
185
|
+
l1=l1->next;
|
186
|
+
|
187
|
+
}else{
|
188
|
+
|
189
|
+
nodePtr=l2;
|
190
|
+
|
191
|
+
l2=l2->next;
|
192
|
+
|
193
|
+
}
|
194
|
+
|
195
|
+
}
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
+
if(rootPtr == NULL){ //先頭のノードが未設定なら設定
|
202
|
+
|
203
|
+
rootPtr=nodePtr;
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
}else{ //現在のノードの次に連結する
|
208
|
+
|
209
|
+
currentPtr->next=nodePtr;
|
210
|
+
|
211
|
+
}
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
//現在のノードを次に移動する
|
216
|
+
|
217
|
+
currentPtr=nodePtr;
|
218
|
+
|
219
|
+
}
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
//先頭のノードを返却する
|
224
|
+
|
225
|
+
return rootPtr;
|
226
|
+
|
227
|
+
}
|
228
|
+
|
229
|
+
```
|
3
質問文により詳細を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
何か私のコードの中で、実行を遅くしている要因などアドバイスいただきたいです。
|
6
6
|
|
7
|
-
|
7
|
+
よろしくお願いいたします。
|
8
8
|
|
9
9
|
|
10
10
|
|
2
コードを少し変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
-
while(l2!=NULL
|
55
|
+
while(l2!=NULL || l1!=NULL)
|
56
56
|
|
57
57
|
{
|
58
58
|
|
1
問題の変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2つのリンクリストを1つの数値の小ささ順のリンクリストにしたい
|
1
|
+
2つのリンクリストを1つの数値の小ささ順のリンクリストにしたい
|
test
CHANGED
@@ -1,26 +1,8 @@
|
|
1
|
-
###
|
1
|
+
### LeetCodeというサイトで、プログラミングの問題を説いているのですが、採点結果が、Time Limit Exceededとなります。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
5
|
新しいリストは、最初の2つのリストのノードをつなぎ合わせて作成する必要があります。
|
6
|
-
|
7
|
-
そこでこのようなエラーが出ます。
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
### エラー
|
12
|
-
|
13
|
-
```
|
14
|
-
|
15
|
-
Line 77: Char 22: runtime error: member access within misaligned address 0xf3f3f3f8f1f1f1f1 for type 'const ListNode', which requires 8 byte alignment (_Serializer_.cpp)
|
16
|
-
|
17
|
-
0xf3f3f3f8f1f1f1f1: note: pointer points here
|
18
|
-
|
19
|
-
<memory cannot be printed>
|
20
|
-
|
21
|
-
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior _Serializer_.cpp:86:22
|
22
|
-
|
23
|
-
```
|
24
6
|
|
25
7
|
|
26
8
|
|
@@ -70,7 +52,7 @@
|
|
70
52
|
|
71
53
|
|
72
54
|
|
73
|
-
while(l2=
|
55
|
+
while(l2!=NULL && l1!=NULL)
|
74
56
|
|
75
57
|
{
|
76
58
|
|