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