885. Spiral Matrix III – DEV Community

Summarize this content to 400 words in Persian Lang
885. ماتریس مارپیچی III
متوسط
موضوعات: Array، Matrix، Simulation
شما از سلول شروع می کنید (rStart, cStart) از یک rows x cols شبکه رو به شرق گوشه شمال غربی در اولین ردیف و ستون در شبکه و گوشه جنوب شرقی در آخرین ردیف و ستون قرار دارد.
شما به شکل مارپیچ در جهت عقربه های ساعت راه می روید تا از هر موقعیتی در این شبکه بازدید کنید. هر زمان که خارج از مرز شبکه حرکت می کنید، ما به پیاده روی خود در خارج از شبکه ادامه می دهیم (اما ممکن است بعداً به مرز شبکه برگردیم.). بالاخره به همه می رسیم rows * cols فضاهای شبکه
برگشت آرایهای از مختصات که موقعیتهای شبکه را به ترتیبی که از آنها بازدید کردید را نشان میدهد.
مثال 1:
ورودی: ردیف = 1، cols = 4، rStart = 0، cStart = 0
خروجی: [[0,0]،[0,1]،[0,2]،[0,3]]
مثال 2:
ورودی: ردیف = 5، cols = 6، rStart = 1، cStart = 4
خروجی: [[1,4]،[1,5]،[2,5]،[2,4]،[2,3]،[1,3]،[0,3]،[0,4]،[0,5]،[3,5]،[3,4]،[3,3]،[3,2]،[2,2]،[1,2]،[0,2]،[4,5]،[4,4]،[4,3]،[4,2]،[4,1]،[3,1]،[2,1]،[1,1]،[0,1]،[4,0]،[3,0]،[2,0]،[1,0]،[0,0]]
محدودیت ها:
راه حل:
برای حل این مشکل می توانیم مراحل زیر را دنبال کنیم:
آرایه جهت: از یک آرایه جهت برای تسهیل حرکت به ترتیب درست استفاده کنید (شرق → جنوب → غرب → شمال). هر جهت یک تغییر متناظر در شاخص های سطر و ستون خواهد داشت.
مدیریت مراحل: باید کنترل کنید که در هر جهت چند قدم بردارید. در ابتدا 1 گام به شرق، سپس 1 گام به سمت جنوب، 2 گام به غرب، 2 گام به سمت شمال و … حرکت می کنید.
بررسی مرز: مطمئن شوید که بعد از هر حرکت، بررسی کنید که آیا موقعیت جدید در محدودههای شبکه قرار دارد یا خیر. اگر اینطور است، آن را به آرایه نتیجه اضافه کنید.
وضعیت توقف: پس از بازدید از همه، حلقه را متوقف کنید rows * cols موقعیت ها
بیایید این راه حل را در PHP پیاده سازی کنیم: 885. ماتریس مارپیچی III
// Example Usage:
print_r(spiralMatrixIII(1, 4, 0, 0)); // [[0,0],[0,1],[0,2],[0,3]]
print_r(spiralMatrixIII(5, 6, 1, 4)); // [[1,4],[1,5],[2,5],[2,4], …]
?>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توضیح:
جهت ها: directions آرایه تغییر سطر و ستون را برای حرکت به سمت شرق، جنوب، غرب و شمال نگه می دارد.
جنبش: شروع می کنیم (rStart, cStart) و طبق جهات در الگوی مارپیچ حرکت کنید.
بررسی مرزها: فقط موقعیت را به اضافه کنید result اگر داخل شبکه باشد
کنترل مراحل: stepCount مدیریت می کند که چند قدم در جهت فعلی قبل از چرخش برداشته شده است. پس از دو چرخش افزایش می یابد.
خاتمه دادن: حلقه ادامه می یابد تا زمانی که تمام موقعیت های شبکه بازدید شود.
این رویکرد تضمین می کند که ما از هر سلول در شبکه به ترتیب مارپیچی مورد نیاز بازدید می کنیم.
لینک های تماس
اگر این مجموعه را مفید یافتید، لطفاً آن را در نظر بگیرید مخزن یک ستاره در GitHub یا اشتراک گذاری پست در شبکه های اجتماعی مورد علاقه خود 😍. حمایت شما برای من اهمیت زیادی دارد!
اگر محتوای مفیدتری مانند این میخواهید، در صورت تمایل من را دنبال کنید:
885. ماتریس مارپیچی III
متوسط
موضوعات: Array
، Matrix
، Simulation
شما از سلول شروع می کنید (rStart, cStart)
از یک rows x cols
شبکه رو به شرق گوشه شمال غربی در اولین ردیف و ستون در شبکه و گوشه جنوب شرقی در آخرین ردیف و ستون قرار دارد.
شما به شکل مارپیچ در جهت عقربه های ساعت راه می روید تا از هر موقعیتی در این شبکه بازدید کنید. هر زمان که خارج از مرز شبکه حرکت می کنید، ما به پیاده روی خود در خارج از شبکه ادامه می دهیم (اما ممکن است بعداً به مرز شبکه برگردیم.). بالاخره به همه می رسیم rows * cols
فضاهای شبکه
برگشت آرایهای از مختصات که موقعیتهای شبکه را به ترتیبی که از آنها بازدید کردید را نشان میدهد.
مثال 1:
- ورودی: ردیف = 1، cols = 4، rStart = 0، cStart = 0
- خروجی: [[0,0]،[0,1]،[0,2]،[0,3]]
مثال 2:
- ورودی: ردیف = 5، cols = 6، rStart = 1، cStart = 4
- خروجی: [[1,4]،[1,5]،[2,5]،[2,4]،[2,3]،[1,3]،[0,3]،[0,4]،[0,5]،[3,5]،[3,4]،[3,3]،[3,2]،[2,2]،[1,2]،[0,2]،[4,5]،[4,4]،[4,3]،[4,2]،[4,1]،[3,1]،[2,1]،[1,1]،[0,1]،[4,0]،[3,0]،[2,0]،[1,0]،[0,0]]
محدودیت ها:
راه حل:
برای حل این مشکل می توانیم مراحل زیر را دنبال کنیم:
- آرایه جهت: از یک آرایه جهت برای تسهیل حرکت به ترتیب درست استفاده کنید (شرق → جنوب → غرب → شمال). هر جهت یک تغییر متناظر در شاخص های سطر و ستون خواهد داشت.
- مدیریت مراحل: باید کنترل کنید که در هر جهت چند قدم بردارید. در ابتدا 1 گام به شرق، سپس 1 گام به سمت جنوب، 2 گام به غرب، 2 گام به سمت شمال و … حرکت می کنید.
- بررسی مرز: مطمئن شوید که بعد از هر حرکت، بررسی کنید که آیا موقعیت جدید در محدودههای شبکه قرار دارد یا خیر. اگر اینطور است، آن را به آرایه نتیجه اضافه کنید.
-
وضعیت توقف: پس از بازدید از همه، حلقه را متوقف کنید
rows * cols
موقعیت ها
بیایید این راه حل را در PHP پیاده سازی کنیم: 885. ماتریس مارپیچی III
// Example Usage:
print_r(spiralMatrixIII(1, 4, 0, 0)); // [[0,0],[0,1],[0,2],[0,3]]
print_r(spiralMatrixIII(5, 6, 1, 4)); // [[1,4],[1,5],[2,5],[2,4], ...]
?>
توضیح:
-
جهت ها:
directions
آرایه تغییر سطر و ستون را برای حرکت به سمت شرق، جنوب، غرب و شمال نگه می دارد. -
جنبش: شروع می کنیم
(rStart, cStart)
و طبق جهات در الگوی مارپیچ حرکت کنید. -
بررسی مرزها: فقط موقعیت را به اضافه کنید
result
اگر داخل شبکه باشد -
کنترل مراحل:
stepCount
مدیریت می کند که چند قدم در جهت فعلی قبل از چرخش برداشته شده است. پس از دو چرخش افزایش می یابد. - خاتمه دادن: حلقه ادامه می یابد تا زمانی که تمام موقعیت های شبکه بازدید شود.
این رویکرد تضمین می کند که ما از هر سلول در شبکه به ترتیب مارپیچی مورد نیاز بازدید می کنیم.
لینک های تماس
اگر این مجموعه را مفید یافتید، لطفاً آن را در نظر بگیرید مخزن یک ستاره در GitHub یا اشتراک گذاری پست در شبکه های اجتماعی مورد علاقه خود 😍. حمایت شما برای من اهمیت زیادی دارد!
اگر محتوای مفیدتری مانند این میخواهید، در صورت تمایل من را دنبال کنید: