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

質問編集履歴

7

errorの出る場所をコード内に明記した。

2021/09/23 09:57

投稿

alizona
alizona

スコア126

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 の追加

2021/09/23 09:57

投稿

alizona
alizona

スコア126

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

コードの修正

2021/09/23 09:51

投稿

alizona
alizona

スコア126

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=1;
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
- nums[num]=nums[i];
70
+ nums[num]=nums[i];
60
- num++;
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

コード 修正しました。

2021/09/23 09:50

投稿

alizona
alizona

スコア126

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 = 0;i < numsSize;i++) {
56
+ for (i = 1;i < numsSize;i++) {
56
- if(i!=0){
57
+
57
- if(nums[i-1]!=nums[i]){
58
+ if(nums[i-1]!=nums[i]){
58
- nums[num]=nums[i];
59
+ nums[num]=nums[i];
59
- num++;
60
+ num++;
60
- }
61
61
  }
62
62
  }
63
63
  return num;

3

コードを編集したので、下に追記しました。エラ〜コードも追記しました。

2021/09/23 07:37

投稿

alizona
alizona

スコア126

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の追加

2021/09/23 06:37

投稿

alizona
alizona

スコア126

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

単語の修正

2021/09/23 06:05

投稿

alizona
alizona

スコア126

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){