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