質問編集履歴
7
errorの出る場所をコード内に明記した。
title
CHANGED
File without changes
|
body
CHANGED
@@ -53,6 +53,7 @@
|
|
53
53
|
int i;
|
54
54
|
int num=0;
|
55
55
|
|
56
|
+
//ここでえらーが出ます。このコードは input[1,1] や、input[1]に対応するためのコードです。
|
56
57
|
if(nums[0]==nums[numsSize-1]){
|
57
58
|
num++;
|
58
59
|
}
|
6
error の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -86,5 +86,45 @@
|
|
86
86
|
```
|
87
87
|
|
88
88
|
```error
|
89
|
-
|
89
|
+
=================================================================
|
90
|
+
==30==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000001b0 at pc 0x55a3fe08f25d bp 0x7fff6f41e710 sp 0x7fff6f41e700
|
91
|
+
READ of size 4 at 0x6020000001b0 thread T0
|
92
|
+
#2 0x7f29855c20b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
|
93
|
+
0x6020000001b1 is located 0 bytes to the right of 1-byte region [0x6020000001b0,0x6020000001b1)
|
94
|
+
allocated by thread T0 here:
|
95
|
+
#0 0x7f2986207bc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
|
96
|
+
#3 0x7f29855c20b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
|
97
|
+
Shadow bytes around the buggy address:
|
98
|
+
0x0c047fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
99
|
+
0x0c047fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
100
|
+
0x0c047fff8000: fa fa 00 04 fa fa fd fa fa fa fd fa fa fa fd fa
|
101
|
+
0x0c047fff8010: fa fa 00 fa fa fa fd fa fa fa fd fa fa fa fd fa
|
102
|
+
0x0c047fff8020: fa fa fd fa fa fa fd fa fa fa fd fa fa fa 00 00
|
103
|
+
=>0x0c047fff8030: fa fa fd fa fa fa[01]fa fa fa fa fa fa fa fa fa
|
104
|
+
0x0c047fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
105
|
+
0x0c047fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
106
|
+
0x0c047fff8060: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
107
|
+
0x0c047fff8070: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
108
|
+
0x0c047fff8080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
109
|
+
Shadow byte legend (one shadow byte represents 8 application bytes):
|
110
|
+
Addressable: 00
|
111
|
+
Partially addressable: 01 02 03 04 05 06 07
|
112
|
+
Heap left redzone: fa
|
113
|
+
Freed heap region: fd
|
114
|
+
Stack left redzone: f1
|
115
|
+
Stack mid redzone: f2
|
116
|
+
Stack right redzone: f3
|
117
|
+
Stack after return: f5
|
118
|
+
Stack use after scope: f8
|
119
|
+
Global redzone: f9
|
120
|
+
Global init order: f6
|
121
|
+
Poisoned by user: f7
|
122
|
+
Container overflow: fc
|
123
|
+
Array cookie: ac
|
124
|
+
Intra object redzone: bb
|
125
|
+
ASan internal: fe
|
126
|
+
Left alloca redzone: ca
|
127
|
+
Right alloca redzone: cb
|
128
|
+
Shadow gap: cc
|
129
|
+
==30==ABORTING
|
90
130
|
```
|
5
コードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
Time Limit Exceededというエラーを解決するためにどのように修正すればいいでしょうか?
|
14
14
|
|
15
|
-
|
15
|
+
//修正前
|
16
16
|
```C
|
17
17
|
|
18
18
|
int removeDuplicates(int* nums, int numsSize){
|
@@ -45,65 +45,46 @@
|
|
45
45
|
}
|
46
46
|
```
|
47
47
|
|
48
|
+
//修正後
|
48
49
|
```C
|
49
50
|
|
50
51
|
int removeDuplicates(int* nums, int numsSize){
|
51
52
|
|
52
53
|
int i;
|
53
|
-
int num=
|
54
|
+
int num=0;
|
54
|
-
|
55
55
|
|
56
|
+
if(nums[0]==nums[numsSize-1]){
|
57
|
+
num++;
|
58
|
+
}
|
59
|
+
|
56
60
|
for (i = 1;i < numsSize;i++) {
|
57
61
|
|
62
|
+
|
58
63
|
if(nums[i-1]!=nums[i]){
|
64
|
+
|
65
|
+
|
66
|
+
if(i==numsSize-1){
|
67
|
+
nums[num]=nums[i-1];
|
68
|
+
num++;
|
69
|
+
|
59
|
-
|
70
|
+
nums[num]=nums[i];
|
60
|
-
|
71
|
+
num++;
|
72
|
+
|
73
|
+
}else{
|
74
|
+
nums[num]=nums[i-1];
|
75
|
+
num++;
|
76
|
+
}
|
61
77
|
}
|
62
78
|
}
|
79
|
+
|
80
|
+
|
63
81
|
return num;
|
64
82
|
}
|
83
|
+
|
84
|
+
|
85
|
+
|
65
86
|
```
|
66
87
|
|
67
88
|
```error
|
68
|
-
|
89
|
+
|
69
|
-
==29==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000001b0 at pc 0x55e5c0b775bc bp 0x7ffc55a3f070 sp 0x7ffc55a3f060
|
70
|
-
READ of size 4 at 0x6020000001b0 thread T0
|
71
|
-
#2 0x7f6de42df0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
|
72
|
-
0x6020000001b1 is located 0 bytes to the right of 1-byte region [0x6020000001b0,0x6020000001b1)
|
73
|
-
allocated by thread T0 here:
|
74
|
-
#0 0x7f6de4f24bc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
|
75
|
-
#3 0x7f6de42df0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
|
76
|
-
Shadow bytes around the buggy address:
|
77
|
-
0x0c047fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
78
|
-
0x0c047fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
79
|
-
0x0c047fff8000: fa fa 00 04 fa fa fd fa fa fa fd fa fa fa fd fa
|
80
|
-
0x0c047fff8010: fa fa 00 fa fa fa fd fa fa fa fd fa fa fa fd fa
|
81
|
-
0x0c047fff8020: fa fa fd fa fa fa fd fa fa fa fd fa fa fa 00 00
|
82
|
-
=>0x0c047fff8030: fa fa fd fa fa fa[01]fa fa fa 04 fa fa fa fa fa
|
83
|
-
0x0c047fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
84
|
-
0x0c047fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
85
|
-
0x0c047fff8060: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
86
|
-
0x0c047fff8070: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
87
|
-
0x0c047fff8080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
88
|
-
Shadow byte legend (one shadow byte represents 8 application bytes):
|
89
|
-
Addressable: 00
|
90
|
-
Partially addressable: 01 02 03 04 05 06 07
|
91
|
-
Heap left redzone: fa
|
92
|
-
Freed heap region: fd
|
93
|
-
Stack left redzone: f1
|
94
|
-
Stack mid redzone: f2
|
95
|
-
Stack right redzone: f3
|
96
|
-
Stack after return: f5
|
97
|
-
Stack use after scope: f8
|
98
|
-
Global redzone: f9
|
99
|
-
Global init order: f6
|
100
|
-
Poisoned by user: f7
|
101
|
-
Container overflow: fc
|
102
|
-
Array cookie: ac
|
103
|
-
Intra object redzone: bb
|
104
|
-
ASan internal: fe
|
105
|
-
Left alloca redzone: ca
|
106
|
-
Right alloca redzone: cb
|
107
|
-
Shadow gap: cc
|
108
|
-
==29==ABORTING
|
109
90
|
```
|
4
コード 修正しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,18 +46,18 @@
|
|
46
46
|
```
|
47
47
|
|
48
48
|
```C
|
49
|
+
|
49
50
|
int removeDuplicates(int* nums, int numsSize){
|
50
51
|
|
51
52
|
int i;
|
52
53
|
int num=1;
|
53
54
|
|
54
55
|
|
55
|
-
for (i =
|
56
|
+
for (i = 1;i < numsSize;i++) {
|
56
|
-
|
57
|
+
|
57
|
-
|
58
|
+
if(nums[i-1]!=nums[i]){
|
58
|
-
|
59
|
+
nums[num]=nums[i];
|
59
|
-
|
60
|
+
num++;
|
60
|
-
}
|
61
61
|
}
|
62
62
|
}
|
63
63
|
return num;
|
3
コードを編集したので、下に追記しました。エラ〜コードも追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -43,4 +43,67 @@
|
|
43
43
|
}
|
44
44
|
return num;
|
45
45
|
}
|
46
|
+
```
|
47
|
+
|
48
|
+
```C
|
49
|
+
int removeDuplicates(int* nums, int numsSize){
|
50
|
+
|
51
|
+
int i;
|
52
|
+
int num=1;
|
53
|
+
|
54
|
+
|
55
|
+
for (i = 0;i < numsSize;i++) {
|
56
|
+
if(i!=0){
|
57
|
+
if(nums[i-1]!=nums[i]){
|
58
|
+
nums[num]=nums[i];
|
59
|
+
num++;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
return num;
|
64
|
+
}
|
65
|
+
```
|
66
|
+
|
67
|
+
```error
|
68
|
+
=================================================================
|
69
|
+
==29==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000001b0 at pc 0x55e5c0b775bc bp 0x7ffc55a3f070 sp 0x7ffc55a3f060
|
70
|
+
READ of size 4 at 0x6020000001b0 thread T0
|
71
|
+
#2 0x7f6de42df0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
|
72
|
+
0x6020000001b1 is located 0 bytes to the right of 1-byte region [0x6020000001b0,0x6020000001b1)
|
73
|
+
allocated by thread T0 here:
|
74
|
+
#0 0x7f6de4f24bc8 in malloc (/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
|
75
|
+
#3 0x7f6de42df0b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
|
76
|
+
Shadow bytes around the buggy address:
|
77
|
+
0x0c047fff7fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
78
|
+
0x0c047fff7ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
|
79
|
+
0x0c047fff8000: fa fa 00 04 fa fa fd fa fa fa fd fa fa fa fd fa
|
80
|
+
0x0c047fff8010: fa fa 00 fa fa fa fd fa fa fa fd fa fa fa fd fa
|
81
|
+
0x0c047fff8020: fa fa fd fa fa fa fd fa fa fa fd fa fa fa 00 00
|
82
|
+
=>0x0c047fff8030: fa fa fd fa fa fa[01]fa fa fa 04 fa fa fa fa fa
|
83
|
+
0x0c047fff8040: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
84
|
+
0x0c047fff8050: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
85
|
+
0x0c047fff8060: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
86
|
+
0x0c047fff8070: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
87
|
+
0x0c047fff8080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
88
|
+
Shadow byte legend (one shadow byte represents 8 application bytes):
|
89
|
+
Addressable: 00
|
90
|
+
Partially addressable: 01 02 03 04 05 06 07
|
91
|
+
Heap left redzone: fa
|
92
|
+
Freed heap region: fd
|
93
|
+
Stack left redzone: f1
|
94
|
+
Stack mid redzone: f2
|
95
|
+
Stack right redzone: f3
|
96
|
+
Stack after return: f5
|
97
|
+
Stack use after scope: f8
|
98
|
+
Global redzone: f9
|
99
|
+
Global init order: f6
|
100
|
+
Poisoned by user: f7
|
101
|
+
Container overflow: fc
|
102
|
+
Array cookie: ac
|
103
|
+
Intra object redzone: bb
|
104
|
+
ASan internal: fe
|
105
|
+
Left alloca redzone: ca
|
106
|
+
Right alloca redzone: cb
|
107
|
+
Shadow gap: cc
|
108
|
+
==29==ABORTING
|
46
109
|
```
|
2
linkの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
numsという配列を並び替える問題で、Time Limit Exceededというエラーが出ます。
|
1
|
+
numsという配列を並び替える問題で、LeetCode内でTime Limit Exceededというエラーが出ます。
|
2
2
|
|
3
|
+
[LeetCodeの問題です。](https://leetcode.com/problems/remove-duplicates-from-sorted-array/)
|
4
|
+
|
3
5
|
nums配列は、このようになっています。[0,0,1,1,1,2,2,3,3,4]
|
4
6
|
|
5
7
|
このnumsを重複がないように並び替えて、余った要素には、'_'を代入します。
|
1
単語の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -27,7 +27,7 @@
|
|
27
27
|
if(nums[i-1]==nums[i]){
|
28
28
|
num--;//重複があった分をマイナスする。ユニークな数値の数にする
|
29
29
|
|
30
|
-
for(j=i; j<numsSize-1;j++){//重複が確認されたので、全ての要素を左に詰めるための
|
30
|
+
for(j=i; j<numsSize-1;j++){//重複が確認されたので、全ての要素を左に詰めるためのfor loop
|
31
31
|
nums[j]=nums[j+1];
|
32
32
|
|
33
33
|
if(numsSize-1==j+1){
|