در این مطلب، ویدئو Single Number – Leetcode 136 – Python با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:08:14
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:01,920
algomonster را با استفاده از پیوند
2
00:00:01,920 –> 00:00:03,760
در توضیحات بررسی کنید و از کد دقیق استفاده کنید تا
3
00:00:03,760 –> 00:00:04,880
4
00:00:04,880 –> 00:00:07,839
10 دسترسی مادام العمر را ذخیره کنید، سلام، همه به بازگشت خوش آمدید
5
00:00:07,839 –> 00:00:09,519
و بیایید امروز یک کد دقیق تر بنویسیم،
6
00:00:09,519 –> 00:00:11,519
بنابراین امروز بیایید مشکل را حل کنیم
7
00:00:11,519 –> 00:00:14,320
یک عدد تک به ما یک
8
00:00:14,320 –> 00:00:16,720
آرایه غیرخالی از اعداد صحیح داده شده است. nums و به ما گفته
9
00:00:16,720 –> 00:00:19,359
می شود که هر عنصر منفرد در این
10
00:00:19,359 –> 00:00:22,800
آرایه دقیقاً دو بار به جز یک
11
00:00:22,800 –> 00:00:25,680
عنصر ظاهر می شود و آن عنصر فقط یک بار ظاهر می
12
00:00:25,680 –> 00:00:28,400
شود هدف ما یافتن
13
00:00:28,400 –> 00:00:30,400
عددی است که فقط یک بار ظاهر می شود و
14
00:00:30,400 –> 00:00:32,479
باید راه حل خود را در زمان خطی پیاده سازی کنیم
15
00:00:32,479 –> 00:00:35,600
و ما حتی مجاز به استفاده
16
00:00:35,600 –> 00:00:37,760
از فضای اضافی نیستیم اگر اجازه استفاده
17
00:00:37,760 –> 00:00:40,000
از فضای اضافی را داشته باشیم، این مشکل واقعاً بی اهمیت خواهد بود
18
00:00:40,000 –> 00:00:43,200
اگر بدانید هشمپ چیست یا
19
00:00:43,200 –> 00:00:46,079
در واقع فقط یک مجموعه هش است زیرا
20
00:00:46,079 –> 00:00:49,039
برای هر مقدار منفرد، مثلاً فرض
21
00:00:49,039 –> 00:00:50,559
کنید این ورودی را داشته باشیم. آرایه ای را می گیریم که آن
22
00:00:50,559 –> 00:00:52,879
دو آن را به مجموعه هش خود اضافه می کنیم تا چیزی
23
00:00:52,879 –> 00:00:55,199
شبیه به این و سپس دو دومی را می بینیم
24
00:00:55,199 –> 00:00:57,120
و سپس آن را از مجموعه هش خود حذف می کنیم
25
00:00:57,120 –> 00:00:59,039
زیرا هر عنصری که
26
00:00:59,039 –> 00:01:00,960
دو بار ظاهر می شود اضافه می شود ed به
27
00:01:00,960 –> 00:01:03,039
مجموعه هش و سپس از آن حذف می شود،
28
00:01:03,039 –> 00:01:06,000
به جز آن مقدار واحدی
29
00:01:06,000 –> 00:01:07,680
که قرار است به مجموعه هش اضافه شود،
30
00:01:07,680 –> 00:01:09,680
اما هرگز حذف نخواهد شد،
31
00:01:09,680 –> 00:01:11,680
بنابراین تا زمانی که الگوریتم ما به پایان برسد
32
00:01:11,680 –> 00:01:13,680
، فقط یک مقدار واحد خواهیم داشت. مقدار
33
00:01:13,680 –> 00:01:15,600
در مجموعه هش ما و این همان مقداری
34
00:01:15,600 –> 00:01:17,200
است که قرار است برگردانیم، اما جنبه
35
00:01:17,200 –> 00:01:19,759
منفی آن در بدترین حالت
36
00:01:19,759 –> 00:01:21,200
این است که ما بدیهی است که در
37
00:01:21,200 –> 00:01:22,960
کل آرایه تکرار میکنیم که با پیچیدگی n زمانی بزرگ
38
00:01:22,960 –> 00:01:24,799
است، اما همچنین مقدار زیادی از n
39
00:01:24,799 –> 00:01:26,799
حافظه است. پیچیدگی چون ما از
40
00:01:26,799 –> 00:01:28,720
مجموعه هش استفاده می کنیم آیا راهی برای انجام این
41
00:01:28,720 –> 00:01:31,040
راه حل بدون استفاده از حافظه اضافی
42
00:01:31,040 –> 00:01:32,960
وجود دارد، قطعاً راه حلی وجود دارد و
43
00:01:32,960 –> 00:01:34,960
بیایید سعی کنیم با استفاده از این
44
00:01:34,960 –> 00:01:37,119
مثال آن را بفهمیم، من می گویم که راه حلی که
45
00:01:37,119 –> 00:01:39,280
می خواهم نشان دهم فهمیدن شما واقعاً آسان نیست
46
00:01:39,280 –> 00:01:40,720
، اما وقتی قبلاً آن را دیدید
47
00:01:40,720 –> 00:01:42,960
، پیاده سازی و
48
00:01:42,960 –> 00:01:45,360
تشخیص اینکه چه زمانی می توانید از آن استفاده کنید بسیار آسان است، بنابراین فرض کنید
49
00:01:45,360 –> 00:01:47,119
که ما این آرایه ورودی را داریم و خواهید دید
50
00:01:47,119 –> 00:01:49,360
که چرا من آن را در یک لحظه به این شکل نوشتم.
51
00:01:49,360 –> 00:01:51,040
من فقط به شما می گویم که این راه حل
52
00:01:51,040 –> 00:01:52,960
نیاز دارد دستکاری بیت، بنابراین من
53
00:01:52,960 –> 00:01:55,040
میخواهم هر یک از این مقادیر
54
00:01:55,040 –> 00:01:58,000
را در نمایش دودوییشان نشان دهم، بنابراین
55
00:01:58,000 –> 00:02:01,439
مثلاً 4 برابر 1 0 0 خواهد بود.
56
00:02:01,439 –> 00:02:02,719
البته که صفرهای ابتدایی وجود دارد،
57
00:02:02,719 –> 00:02:04,159
اما ما واقعاً به آن 1 اهمیت نمیدهیم.
58
00:02:04,159 –> 00:02:06,880
قرار است به این شکل نمایش داده شود
59
00:02:06,880 –> 00:02:09,440
2 قرار است به این شکل نمایش داده شود،
60
00:02:09,440 –> 00:02:11,440
بنابراین این
61
00:02:11,440 –> 00:02:13,440
نمایش باینری است و یک بار دیگر فقط
62
00:02:13,440 –> 00:02:15,599
راه حل را به شما می گویم که اساساً
63
00:02:15,599 –> 00:02:17,680
ما از یک عملیات باینری به نام
64
00:02:17,680 –> 00:02:20,239
xor یا انحصاری یا و اگر استفاده می کنیم شما این عمل را نمی
65
00:02:20,239 –> 00:02:21,680
دانید اساساً چه می
66
00:02:21,680 –> 00:02:24,480
کند اگر دو بیت دقیقاً یکسان
67
00:02:24,480 –> 00:02:25,599
باشند بنابراین 0
68
00:02:25,599 –> 00:02:29,280
x یا 0 برابر 0 می شود. همچنین
69
00:02:29,280 –> 00:02:30,959
اگر آنها یکسان باشند به این معنی که
70
00:02:30,959 –> 00:02:33,840
هر دو 1 هستند این نیز برابر 0 خواهد بود.
71
00:02:33,840 –> 00:02:35,519
اما اگر آنها متفاوت باشند، بنابراین اگر 1
72
00:02:35,519 –> 00:02:38,560
و 0 داشته باشیم، 1 می شود و اگر
73
00:02:38,560 –> 00:02:39,519
0
74
00:02:39,519 –> 00:02:42,480
x یا 1 داشته باشیم، 1 می شود، بنابراین
75
00:02:42,480 –> 00:02:44,000
اگر آنها متفاوت باشند، اگر
76
00:02:44,000 –> 00:02:46,400
آنها یکسان باشند، 1 می گیریم. 0. و راه حل
77
00:02:46,400 –> 00:02:48,160
این مشکل به معنای واقعی کلمه این است که
78
00:02:48,160 –> 00:02:51,200
همه این مقادیر ورودی را با هم جمع کنیم
79
00:02:51,200 –> 00:02:54,000
و سپس Res را بگیریم. ult همان
80
00:02:54,000 –> 00:02:56,400
مقدار واحد خواهد بود در این مورد، آن
81
00:02:56,400 –> 00:02:58,800
مقدار واحد 4 است. و اگر فقط می خواهید
82
00:02:58,800 –> 00:03:00,239
راه حل این مشکل را بدانید که به
83
00:03:00,239 –> 00:03:02,879
معنای واقعی کلمه همین است، اما هرگز مرا راضی نمی کند،
84
00:03:02,879 –> 00:03:04,959
بنابراین کاری که من می خواهم انجام دهم این است که در واقع
85
00:03:04,959 –> 00:03:06,959
کمی از آن را توضیح دهم. شهود پشت آن و
86
00:03:06,959 –> 00:03:09,360
پاسخ ساده این است که وقتی دو
87
00:03:09,360 –> 00:03:12,239
مقدار مانند دو و دو را می گیرید و آنها را
88
00:03:12,239 –> 00:03:13,760
با هم می خوانید، مطمئناً آنها دقیقاً
89
00:03:13,760 –> 00:03:16,640
نمایش دودویی یکسانی دارند، بنابراین اگر
90
00:03:16,640 –> 00:03:18,720
دو مقدار دقیقاً یکسان را دریافت کنید،
91
00:03:18,720 –> 00:03:21,200
مطمئناً می خواهید همه
92
00:03:21,200 –> 00:03:23,200
صفرها را در خروجی دریافت کنید زیرا می
93
00:03:23,200 –> 00:03:24,799
دانید بیت های اینجا دقیقاً یکسان هستند
94
00:03:24,799 –> 00:03:26,400
بیت های اینجا دقیقاً یکسان هستند و
95
00:03:26,400 –> 00:03:28,480
دقیقاً یکسان خواهند بود بنابراین اگر بیت
96
00:03:28,480 –> 00:03:30,560
ها یکسان باشند در خروجی صفر می گیریم
97
00:03:30,560 –> 00:03:31,840
و دلیل آن این مهم است
98
00:03:31,840 –> 00:03:33,599
زیرا ما می دانیم که دو دو به درستی وجود دارد،
99
00:03:33,599 –> 00:03:35,200
بنابراین این دو مورد لغو می شوند،
100
00:03:35,200 –> 00:03:37,200
ما می دانیم که دو مورد وجود دارد که
101
00:03:37,200 –> 00:03:39,360
اینها لغو می شوند، بنابراین ما
102
00:03:39,360 –> 00:03:41,760
تنها با آن مقدار واحد
103
00:03:41,760 –> 00:03:44,480
و دستوری که شما انجام می دهید باقی می ماند. عملیات xor
104
00:03:44,480 –> 00:03:46,720
در واردات نیست شما می توانید آن را به هر
105
00:03:46,720 –> 00:03:48,080
ترتیبی انجام دهید و
106
00:03:48,080 –> 00:03:49,760
دقیقاً همان نتیجه را خواهید گرفت، بنابراین توضیح ساده است
107
00:03:49,760 –> 00:03:51,360
و من فقط
108
00:03:51,360 –> 00:03:53,680
یک دقیقه دیگر در مورد اگر نمی دانستید
109
00:03:53,680 –> 00:03:56,000
که xor را می توان به هر ترتیبی انجام داد صحبت
110
00:03:56,000 –> 00:03:57,599
خواهم کرد. هنوز بفهمم
111
00:03:57,599 –> 00:03:59,200
شهود پشت آن چیست، اجازه دهید فقط
112
00:03:59,200 –> 00:04:00,959
یک دقیقه در مورد آن صحبت کنم، من آنقدر باهوش
113
00:04:00,959 –> 00:04:02,640
نیستم که فقط با نگاه کردن
114
00:04:02,640 –> 00:04:05,200
به همه این قسمت ها متوجه آن شوم، اما می دانیم که برای
115
00:04:05,200 –> 00:04:07,360
ساده سازی، فقط می توانیم به یک
116
00:04:07,360 –> 00:04:10,400
ستون