質問編集履歴

4

改善後のコードの記載

2020/06/21 08:39

投稿

alizona
alizona

スコア126

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

質問文により詳細を追加

2020/06/21 08:39

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- 新しいリストは、最初2つのリストのノードをつなぎ合わせ作成すがあります。
5
+ 何か私ードの中で、実行遅くしる要因などアドバイスいただきたいです。
6
6
 
7
-
7
+ よろしくお願いいたします。
8
8
 
9
9
 
10
10
 

2

コードを少し変更

2020/06/20 20:29

投稿

alizona
alizona

スコア126

test CHANGED
File without changes
test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
 
54
54
 
55
- while(l2!=NULL && l1!=NULL)
55
+ while(l2!=NULL || l1!=NULL)
56
56
 
57
57
  {
58
58
 

1

問題の変更

2020/06/20 19:58

投稿

alizona
alizona

スコア126

test CHANGED
@@ -1 +1 @@
1
- 2つのリンクリストを1つの数値の小ささ順のリンクリストにしたい
1
+ 2つのリンクリストを1つの数値の小ささ順のリンクリストにしたい
test CHANGED
@@ -1,26 +1,8 @@
1
- ### 2つ並べ替えられたリンクリストマージし、新し並べ替えられたリストとし返したい。
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==NULL && l1==NULL)
55
+ while(l2!=NULL && l1!=NULL)
74
56
 
75
57
  {
76
58