در این مطلب، ویدئو تمرین برنامه نویسی پایتون: LeetCode #136 — Single Number با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:13:04
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:02,000 –> 00:00:04,400
سلام به همه و به
2
00:00:04,400 –> 00:00:06,080
تمرین برنامه نویسی پایتون
3
00:00:06,080 –> 00:00:08,320
در این قسمت خوش آمدید، ما قصد داریم به
4
00:00:08,320 –> 00:00:09,840
کد لید
5
00:00:09,840 –> 00:00:13,280
شماره 136 تک عددی بپردازیم،
6
00:00:13,280 –> 00:00:16,320
این به عنوان یک مشکل آسان طبقه بندی می شود
7
00:00:16,320 –> 00:00:18,080
و من با خواندن
8
00:00:18,080 –> 00:00:19,439
شرح مشکل در اینجا شروع می کنم، با
9
00:00:19,439 –> 00:00:22,800
یک آرایه غیر خالی از اعداد صحیح در هر
10
00:00:22,800 –> 00:00:23,359
عنصر
11
00:00:23,359 –> 00:00:26,480
دو بار ظاهر می شود به جز
12
00:00:26,480 –> 00:00:30,640
یک نت، الگوریتم شما
13
00:00:30,640 –> 00:00:33,920
باید پیچیدگی زمان اجرا خطی داشته باشد، بنابراین
14
00:00:33,920 –> 00:00:35,280
ما فقط یک بار می
15
00:00:35,280 –> 00:00:37,440
توانیم لیست
16
00:00:37,440 –> 00:00:40,239
را از نظر زمان اجرا مرور کنیم و آیا می
17
00:00:40,239 –> 00:00:43,200
توانید آن را بدون استفاده از حافظه اضافی پیاده سازی کنید
18
00:00:43,200 –> 00:00:46,160
و سپس اولین مورد مثال یک
19
00:00:46,160 –> 00:00:47,039
لیست ورودی از
20
00:00:47,039 –> 00:00:50,320
دو دو یک چاه است که این دو دو
21
00:00:50,320 –> 00:00:52,559
بار اتفاق میافتد، بنابراین این چیزی نیست که ما میخواهیم.
22
00:00:52,559 –> 00:00:53,760
23
00:00:53,760 –> 00:00:54,879
24
00:00:54,879 –> 00:00:56,559
25
00:00:56,559 –> 00:00:59,600
26
00:00:59,600 –> 00:01:02,879
یک دو
27
00:01:02,879 –> 00:01:05,360
خوب یکی دو بار اتفاق میافتد و دو دو بار اتفاق میافتد،
28
00:01:05,360 –> 00:01:06,080
29
00:01:06,080 –> 00:01:07,600
بنابراین چیزی که در این مورد فقط یک بار اتفاق میافتد
30
00:01:07,600 –> 00:01:09,680
چهار است،
31
00:01:09,680 –> 00:01:12,640
بنابراین ما چهار را به آنجا برمیگردانیم، بنابراین بیایید
32
00:01:12,640 –> 00:01:15,119
به ویرایشگر کد برویم
33
00:01:15,119 –> 00:01:18,240
و قرار دهیم وایت برد ما،
34
00:01:18,240 –> 00:01:20,000
بنابراین اگر اینجا به تخته وایت برد خود برویم،
35
00:01:20,000 –> 00:01:21,680
بیایید فقط
36
00:01:21,680 –> 00:01:23,520
لیستی را بنویسیم و ببینیم چگونه می توانیم
37
00:01:23,520 –> 00:01:25,840
این مشکل را حل کنیم تا هر چیزی که در
38
00:01:25,840 –> 00:01:26,479
39
00:01:26,479 –> 00:01:29,200
لیست هدف ما در اینجا
40
00:01:29,200 –> 00:01:31,439
قرار می گیرد و عدد مورد نظر نیست، دو بار ظاهر شود،
41
00:01:31,439 –> 00:01:34,159
بنابراین ممکن است ما چیزی شبیه یک دو تا
42
00:01:34,159 –> 00:01:35,360
سه یا
43
00:01:35,360 –> 00:01:38,560
دو سه دیگر
44
00:01:38,560 –> 00:01:40,560
شاید هدف ما یکی باشد، بنابراین چیزی
45
00:01:40,560 –> 00:01:41,600
که می خواهیم
46
00:01:41,600 –> 00:01:43,920
فقط یک بار رخ می دهد، بقیه دو بار اتفاق می افتد،
47
00:01:43,920 –> 00:01:46,079
شاید در پایان اینجا یک زن و شوهر چهار تایی داشته باشیم،
48
00:01:46,079 –> 00:01:47,280
49
00:01:47,280 –> 00:01:49,840
بنابراین در این مورد با این لیست
50
00:01:49,840 –> 00:01:51,439
مقدار هدف این است
51
00:01:51,439 –> 00:01:52,960
که چگونه میتوانیم
52
00:01:52,960 –> 00:01:54,560
فقط یک بار
53
00:01:54,560 –> 00:01:57,040
از آن عبور کنیم و بفهمیم که یکی همان عددی
54
00:01:57,040 –> 00:01:59,439
است که میخواهیم و فقط یک بار اتفاق میافتد.
55
00:01:59,439 –> 00:02:01,119
56
00:02:01,119 –> 00:02:02,719
57
00:02:02,719 –> 00:02:05,840
58
00:02:05,840 –> 00:02:08,560
چیزهایی را ببینید تا بتوانیم بگوییم
59
00:02:08,560 –> 00:02:09,919
پیگیری کنید که تا به حال یکی
60
00:02:09,919 –> 00:02:12,480
دو را دیده ایم وقتی می بینیم که یکی سه تا
61
00:02:12,480 –> 00:02:13,680
کنون وقتی می
62
00:02:13,680 –> 00:02:16,080
بینیم که اکنون دو دو تا را می بینیم و غیره و
63
00:02:16,080 –> 00:02:17,360
وقتی به پایان
64
00:02:17,360 –> 00:02:20,000
رسیدیم فقط باید داشته باشیم شمارش یک
65
00:02:20,000 –> 00:02:20,800
و یک n ما می
66
00:02:20,800 –> 00:02:23,360
توانیم تعداد را در هر چیزی که فقط
67
00:02:23,360 –> 00:02:25,520
یک شمارش دارد بررسی کنیم، اکنون باید پاسخ داد
68
00:02:25,520 –> 00:02:27,760
که راهی است که باید روی این کار کار کند
69
00:02:27,760 –> 00:02:28,800
70
00:02:28,800 –> 00:02:31,200
، رویکرد دیگری وجود دارد که شاید
71
00:02:31,200 –> 00:02:32,160
کمی
72
00:02:32,160 –> 00:02:34,480
جالب تر باشد که در آن به جای
73
00:02:34,480 –> 00:02:36,560
پیگیری تعداد واقعی
74
00:02:36,560 –> 00:02:40,480
ما فقط می توانیم موردی را که می بینیم
75
00:02:40,480 –> 00:02:43,120
در یک فرهنگ لغت خالی برای
76
00:02:43,120 –> 00:02:43,920
پایتون ذخیره کنیم
77
00:02:43,920 –> 00:02:46,480
و سپس اگر مورد دوم را دیدیم می
78
00:02:46,480 –> 00:02:47,440
توانیم آن
79
00:02:47,440 –> 00:02:50,080
را از فرهنگ لغت حذف کنیم زیرا می
80
00:02:50,080 –> 00:02:51,040
دانیم که
81
00:02:51,040 –> 00:02:53,360
چیزهایی را دو بار به جز هدف خواهیم دید،
82
00:02:53,360 –> 00:02:55,440
بنابراین اولی زمانی که آن را می بینیم، می توانیم آن را ذخیره
83
00:02:55,440 –> 00:02:57,120
کنیم بار دوم که آن را می بینیم، می توانیم آن را حذف
84
00:02:57,120 –> 00:02:59,360
کنیم تا هر چیزی که دو بار
85
00:02:59,360 –> 00:03:01,440
ببینیم اگر این کار را انجام دهیم در نهایت
86
00:03:01,440 –> 00:03:03,360
از فرهنگ لغت حذف می شود،
87
00:03:03,360 –> 00:03:05,120
اما چیزی که یک بار می بینیم
88
00:03:05,120 –> 00:03:07,040
درج می شود و هرگز حذف نمی شود.
89
00:03:07,040 –> 00:03:08,000
90
00:03:08,000 –> 00:03:10,480
مدخل دومی نداریم، بنابراین اگر این کار را به این صورت
91
00:03:10,480 –> 00:03:11,040
انجام دهیم و
92
00:03:11,040 –> 00:03:14,400
کل فهرست را در اینجا مرور کنیم، در پایان
93
00:03:14,400 –> 00:03:16,400
تنها هدف خود را به عنوان تنها
94
00:03:16,400 –> 00:03:18,400
مدخل در فرهنگ لغت باقی
95
00:03:18,400 –> 00:03:21,120
میگذاریم، پس بیایید فقط مثالی را
96
00:03:21,120 –> 00:03:22,400
بررسی کنیم که چگونه شبیه
97
00:03:22,400 –> 00:03:25,680
بدون اینکه وارد کد شویم،
98
00:03:25,680 –> 00:03:28,000
اگر یک دیکشنری خالی در اینجا داشتیم و سپس
99
00:03:28,000 –> 00:03:29,519
به اولین عنصر به خوبی نگاه
100
00:03:29,519 –> 00:03:31,519
میکردیم که اکنون دو مورد را دیدهایم، بنابراین دو تا را
101
00:03:31,519 –> 00:03:33,280
در فرهنگ لغت ذخیره
102
00:03:33,280 –> 00:03:35,200
میکنیم، اکنون سه را دیدهایم، سه را در آن ذخیره
103
00:03:35,200 –> 00:03:36,480
میکنیم. فرهنگ لغت
104
00:03:36,480 –> 00:03:39,120
اکنون ما دوباره دو را می بینیم، سپس می توانیم
105
00:03:39,120 –> 00:03:40,480
دو مورد را از فرهنگ لغت حذف کنیم، یعنی می
106
00:03:40,480 –> 00:03:42,159
دانیم که آن را دو بار دیده ایم، می توانیم آن را
107
00:03:42,159 –> 00:03:42,959
فراموش کنیم
108
00:03:42,959 –> 00:03:44,400
اکنون دوباره سه مورد را خواهیم دید، آن را
109
00:03:44,400 –> 00:03:46,159
حذف خواهیم کرد که سه بار دو بار دیده ایم.
110
00:03:46,159 –> 00:03:47,599
میتوانیم آن را فراموش کنیم،
111
00:03:47,599 –> 00:03:53,280
حالا یک بار میبینیم، یک بار چهار میبینیم، یک بار
112
00:03:53,280 –> 00:03:55,760
دوباره چهار میبینیم، چهار را حذف میکنیم، زیرا
113
00:03:55,760 –> 00:03:56,959
دوبار آن را
114
00:03:56,959 –> 00:03:59,360
دیدهایم که حلقه
115
00:03:59,360 –> 00:04:00,239
تمام شده است، کل آرایه را مرور
116
00:04:00,239 –> 00:04:03,439
کردهایم و اکنون فقط یکی از آنها باقی مانده است.
117
00:04:03,439 –> 00:04:05,920
پایان و این هدف ماست، بنابراین
118
00:04:05,920 –> 00:04:06,879
فکر میکنم این باید
119
00:04:06,879 –> 00:04:10,159
برای کدنویسی یک راهحل در اینجا
120
00:04:10,159 –> 00:04:14,640
کافی باشد، بنابراین بیایید اکنون به کد بازگردیم و
121
00:04:14,640 –> 00:04:18,238
کدگذاری آن را ببینیم، بنابراین در کد
122
00:04:18,238 –> 00:04:20,720
اکنون لیستی به نام nums داده میشود که
123
00:04:20,720 –> 00:04:22,560
لیست هدف ما است. و ما باید آن عدد را برگردانیم،
124
00:04:22,560 –> 00:04:23,600
125
00:04:23,600 –> 00:04:25,440
بنابراین اگر به تخته سفید خود فکر می کنیم،
126
00:04:25,440 –> 00:04:27,600
باید از آنجا شروع کنیم
127
00:04:27,600 –> 00:04:30,080
یک دیکشنری خالی را برای
128
00:04:30,080 –> 00:04:31,120
ذخیره
129
00:04:31,120 –> 00:04:34,400
کردن حسابهایمان راهاندازی کنیم، بنابراین میگوییم تعداد
130
00:04:34,400 –> 00:04:36,960
برابر است با فرهنگ لغت خالی و سپس فقط
131
00:04:36,960 –> 00:04:38,400
باید
132
00:04:38,400 –> 00:04:41,440
همه اعداد را یک بار حلقه بزنیم، بنابراین برای n در
133
00:04:41,440 –> 00:04:43,120
134
00:04:43,120 –> 00:04:45,520
اعداد و سپس برای هر یک از این اعداد کاری
135
00:04:45,520 –> 00:04:46,639
که باید انجام دهیم این است که
136
00:04:46,639 –> 00:04:50,000
بررسی کنیم که آیا در حال حاضر در شمارش است، اگر باشد،
137
00:04:50,000 –> 00:04:53,040
آن را ذخیره می کنیم، بنابراین اگر n
138
00:04:53,040 –> 00:04:57,120
در شمارش نباشد، آن را در تعداد
139
00:04:57,120 –> 00:04:58,800
شمارش ذخیره می کنیم و فقط آن را برابر با
140
00:04:58,800 –> 00:05:00,160
یک قرار می دهیم، واقعاً
141
00:05:00,160 –> 00:05:01,840
مهم نیست که مقدار اینجا
142
00:05:01,840 –> 00:05:03,199
چقدر است زیرا ما “فقط
143
00:05:03,199 –> 00:05:04,560
کلید را بررسی می
144
00:05:04,560 –> 00:05:07,039
کنیم، اما فقط می گوییم تعداد برابر است با یک و
145
00:05:07,039 –> 00:05:08,840
سپس تعداد
146
00:05:08,840 –> 00:05:11,680
n را حذف می
147
00:05:11,680 –> 00:05:13,919
کنیم، بنابراین اگر آن را دو بار دیده باشیم،
148
00:05:13,919 –> 00:05:14,960
149
00:05:14,960 –> 00:05:16,400
زیرا
150
00:05:16,400 –> 00:05:18,000
وقتی این بررسی را انجام می دهیم قبلاً در فرهنگ لغت وجود دارد، ما” فقط می خواهید
151
00:05:18,000 –> 00:05:20,880
آن را حذف کنید، بنابراین delete حساب می شود
152
00:05:20,880 –> 00:05:23,360
و هنگامی که این حلقه از آن عبور کرد،
153
00:05:23,360 –> 00:05:25,520
154
00:05:25,520 –> 00:05:28,240
هر مقداری را که دو بار ظاهر می شود وارد کرده و حذف می کند
155
00:05:28,240 –> 00:05:30,160
و چیزی که یک بار ظاهر می
156
00:05:30,160 –> 00:05:30,880
شود
157
00:05:30,880 –> 00:05:32,560
در شمارش ها باقی می ماند و این تنها
158
00:05:32,560 –> 00:05:34,560
چیزی است که باقی می ماند. سپس می توانیم
159
00:05:34,560 –> 00:05:35,680
آنچه را که هست برگردانیم
160
00:05:35,680 –> 00:05:38,720
بنابراین ما تعداد
161
00:05:38,720 –> 00:05:41,520
کلیدهای نقطهای
162
00:05:41,759 –> 00:05:44,080
را برمیگردانیم که پایتون 3 را راهاندازی میکند و آنچه که این روزها کار نمیکند،
163
00:05:44,080 –> 00:05:45,039
164
00:05:45,039 –> 00:05:46,639
باید کمی عجیب و غریب انجام دهید تا
165
00:05:46,639 –> 00:05:48,160
واقعاً آن را استخراج
166
00:05:48,160 –> 00:05:49,759
کنید و آن را به یک لیست تبدیل کنید و
167
00:05:49,759 –> 00:05:51,440
ما اولین چیزی را
168
00:05:51,440 –> 00:05:54,479
که تنها است انتخاب میکنیم. چیزی در آن وجود دارد، بنابراین
169
00:05:54,479 –> 00:05:54,960
باید
170
00:05:54,960 –> 00:05:58,240
آن مورد نهایی را استخراج کند که تنها
171
00:05:58,240 –> 00:05:59,840
چیزی است که در شمارش باقی مانده است،
172
00:05:59,840 –> 00:06:02,880
بنابراین تا زمانی که ما هیچ خطایی در اینجا مرتکب نشدهایم،
173
00:06:02,880 –> 00:06:03,520
174
00:06:03,520 –> 00:06:05,919
این باید یک راهحل کارساز باشد، بنابراین من
175
00:06:05,919 –> 00:06:07,840
میخواهم روی ارسال این مورد ضربه بزنم و به
176
00:06:07,840 –> 00:06:11,600
آن بپردازم نتایج را نمایش میدهد،
177
00:06:11,600 –> 00:06:15,199
بنابراین ما زمان اجرا 88 میلیثانیهای
178
00:06:15,199 –> 00:06:19,199
سریعتر از 81، 82 درصد از ارسالهای
179
00:06:19,199 –> 00:06:20,560
پایتون 3 دریافت
180
00:06:20,560 –> 00:06: