algorithm interview mafia
Photo
این ویدیو خیلی بمب شروع میشه. میخواد بهمون نشون بده که کجا بدون Big O گیر میکنیم. میاد یه کد خیلی ساده میزنه. یه حلقه تعریف میکنه که میاد روی یه ارایه پیمایش میکنه تا ببینه که خونه ای از این ارایه وجود داره که مقدار داخل "nemo" باشه یا نه ؟
میاد با کمک یه متد JS مدت زمان اجرای این کد رو اندازه میگیره. جالبه که هربار کد رو اجرا میکنه ، مدت زمان اجرای همون قطعه کد با همون ورودی متفاوت هست ( راستی این داستان ربطی به زبان برنامه نویسی هم نداره). و یه سوال باحال میپرسه 👀
میگه دوستم اقا داوود بهم زنگ زده و گفته که اونم یه برنامه نوشته مشابه برنامه من که همین خروجی رو میده منتها برخلاف برنامه من که 3 ثانیه طول میکشه، مال اون 1 ثانیه طول میکشه. حالا میتونیم بگیم برنامه داوود بهتر از مال منه ؟
واقعیت تلخ اینه که نه 😂
وقتی داریم طول مدت اجرا رو اندازه میگیرم. خطای بزرگمون اینه که محیط اجرامون و کلللی پارامتر دیگه رو حساب نمیکنیم. مثلا ممکنه راه حل داوود خیلی اشغال باشه ولی داره روی یه cpu شونصد هسته ای نسل اخر اجراش میکنه ولی مال من رو یه cpu تک هسته ای ده سال پیش. حالا اتفاق باحال اینه که تقریبا همیشه خدا اون کدی که ما برنامه نویس ها داریم میزنیم رو داریم روی کامپیوتر خودمون اجرا میکنیم درحال که نسخه نهایی روی سروری با مشخصات متفاوت اجرا میشه!
حالا اینجاااا ما نیاز به یک روش سنجش داریم که نه تنها بتونیم دو تا الگوریتم و راه حل رو با خطای خیلی کم با هم مقایسه کنیم، بلکه بتونیم پیش بینی کنیم در scale های بزرگ تر که مثلا قرار کللللللی چیز رو پردازش کنیم. الگوریتم و راه حلمون توی اون شرایط چطوری عمل میکنه ؟
حالا اینجاست که میتونیم تعریف کنیم Big O چیه و چطوری بهمون کمک میکنه که پیشنهاد میکنم حتما ویس هام برای ایم ویدیو رو یدور گوش کنی ☺️
#day1
@algorithm_interview
میاد با کمک یه متد JS مدت زمان اجرای این کد رو اندازه میگیره. جالبه که هربار کد رو اجرا میکنه ، مدت زمان اجرای همون قطعه کد با همون ورودی متفاوت هست ( راستی این داستان ربطی به زبان برنامه نویسی هم نداره). و یه سوال باحال میپرسه 👀
میگه دوستم اقا داوود بهم زنگ زده و گفته که اونم یه برنامه نوشته مشابه برنامه من که همین خروجی رو میده منتها برخلاف برنامه من که 3 ثانیه طول میکشه، مال اون 1 ثانیه طول میکشه. حالا میتونیم بگیم برنامه داوود بهتر از مال منه ؟
واقعیت تلخ اینه که نه 😂
وقتی داریم طول مدت اجرا رو اندازه میگیرم. خطای بزرگمون اینه که محیط اجرامون و کلللی پارامتر دیگه رو حساب نمیکنیم. مثلا ممکنه راه حل داوود خیلی اشغال باشه ولی داره روی یه cpu شونصد هسته ای نسل اخر اجراش میکنه ولی مال من رو یه cpu تک هسته ای ده سال پیش. حالا اتفاق باحال اینه که تقریبا همیشه خدا اون کدی که ما برنامه نویس ها داریم میزنیم رو داریم روی کامپیوتر خودمون اجرا میکنیم درحال که نسخه نهایی روی سروری با مشخصات متفاوت اجرا میشه!
حالا اینجاااا ما نیاز به یک روش سنجش داریم که نه تنها بتونیم دو تا الگوریتم و راه حل رو با خطای خیلی کم با هم مقایسه کنیم، بلکه بتونیم پیش بینی کنیم در scale های بزرگ تر که مثلا قرار کللللللی چیز رو پردازش کنیم. الگوریتم و راه حلمون توی اون شرایط چطوری عمل میکنه ؟
حالا اینجاست که میتونیم تعریف کنیم Big O چیه و چطوری بهمون کمک میکنه که پیشنهاد میکنم حتما ویس هام برای ایم ویدیو رو یدور گوش کنی ☺️
#day1
@algorithm_interview
👍10❤1
کدی که تو ویدیو قبلی زدیم رو یادته دیگه؟ بیام ببینیم که Big O اون از چه مرتبه ای هست.
اگر دقت کرده باشی ارایه ما هر چندتا خونه که داشته باشه ما باید به همون تعداد operation انجام بدیم. اگر 4 تا خونه داشته باشه ما چهار تا خونه رو باید چک کنیم و اگر nتا خونه داشته ما هم n تا operation باید انجام بدیم
عملا داریم میبینیم که بین تعداد المان ها و operation هامون یه رابطه خطی برقرار هست. برای همین توی مثالمون ما شاهد O(n) هستیم.
دیدی چی شد ؟؟؟؟؟؟؟؟؟ اولین نوتیشن رو با هم یادگرفتیم 😍
اگر هنوز برات گنگ هست، کاملا طبیعیه. پیشنهاد میکنم حتمااا ویس هارو گوش بدی چون اونجا مفصل برات توضیح دادم ^^
#day1
@algorithm_interview
اگر دقت کرده باشی ارایه ما هر چندتا خونه که داشته باشه ما باید به همون تعداد operation انجام بدیم. اگر 4 تا خونه داشته باشه ما چهار تا خونه رو باید چک کنیم و اگر nتا خونه داشته ما هم n تا operation باید انجام بدیم
عملا داریم میبینیم که بین تعداد المان ها و operation هامون یه رابطه خطی برقرار هست. برای همین توی مثالمون ما شاهد O(n) هستیم.
دیدی چی شد ؟؟؟؟؟؟؟؟؟ اولین نوتیشن رو با هم یادگرفتیم 😍
اگر هنوز برات گنگ هست، کاملا طبیعیه. پیشنهاد میکنم حتمااا ویس هارو گوش بدی چون اونجا مفصل برات توضیح دادم ^^
#day1
@algorithm_interview
❤7👍1
کوئیز روز اول:
1- میتونی بگی ویژگی های اصلی یه کد خوب چیه ؟
2- حالا Big O چطوری میتونه به نوشتن یه کد خوب کمک کنه ؟
3- میتونی با یه مثال یه برنامه کامپیوتری رو توصیف کنی از نوشتن تا رسیدن به خروجی ؟
4- توی مثالی که زدی Big O چطوری میتونه کمک کنه بهمون ؟
5- برای مقایسه بهینه بودن دو تا الگوریتم یا راه حل میتونی رو مدت زمانی که اجراشون طول میکشه حساب کنی؟ چرا؟
6- چطوری Big O مارو تو مقایسه الگوریتم ها کمک میکنه؟ اصن مفهومش رو میتونی توضیح بدی ؟
7- توضیح میدی که O(n) داستانش چیه ؟
#quiz
#day1
@algorithm_interview
1- میتونی بگی ویژگی های اصلی یه کد خوب چیه ؟
2- حالا Big O چطوری میتونه به نوشتن یه کد خوب کمک کنه ؟
3- میتونی با یه مثال یه برنامه کامپیوتری رو توصیف کنی از نوشتن تا رسیدن به خروجی ؟
4- توی مثالی که زدی Big O چطوری میتونه کمک کنه بهمون ؟
5- برای مقایسه بهینه بودن دو تا الگوریتم یا راه حل میتونی رو مدت زمانی که اجراشون طول میکشه حساب کنی؟ چرا؟
6- چطوری Big O مارو تو مقایسه الگوریتم ها کمک میکنه؟ اصن مفهومش رو میتونی توضیح بدی ؟
7- توضیح میدی که O(n) داستانش چیه ؟
#quiz
#day1
@algorithm_interview
👍16
صبحتون بخییییییییر
چطور مطورین ؟؟ ردیف و بمب دیگه 😏😎
خب ما امروز با هم سه تا ویدیو رو مرور میکنیم:
O(1)
Solution: Big O Calculation
Solution: Big O Calculation 2
چطور مطورین ؟؟ ردیف و بمب دیگه 😏😎
خب ما امروز با هم سه تا ویدیو رو مرور میکنیم:
O(1)
Solution: Big O Calculation
Solution: Big O Calculation 2
👍16
یه زمانایی هست که هرچی تعداد المان هامون بیشتر میشه، لزوما تعداد قدم ها و operation هامون زیاد نمیشه.
یه نگاه به عکس بالا بنداز، دقیقا یه چنین رابطه ای این دو تا باهم دارن تو یسری از مسائل.
فرض کن یه فانکشن داری که فارغ از اینکه به عنوان ورودی چه ارایه ای با چه طولی بهش میدی، میاد خونه اولش رو تو کنسول چاپ میکنه یا به عنوان خروجی میده بیرون.
تو یه چنین مسائلی ما پیچیدگی ثابت زمانی داریم :
O(1) یا constant time
حالا سوال اینجاست که اگر بجای یدونه کنسول لاگ ما 300 تا کنسول داشتیم و هر بار باید میرفتیم سراغ 300 تا خونه از ارایه، اون موقع پیچیدگی زمانیم چی بود ؟
اینو توی ویس این ویدیو برات توضیح دادم ^^
#day2
@algorithm_interview
یه نگاه به عکس بالا بنداز، دقیقا یه چنین رابطه ای این دو تا باهم دارن تو یسری از مسائل.
فرض کن یه فانکشن داری که فارغ از اینکه به عنوان ورودی چه ارایه ای با چه طولی بهش میدی، میاد خونه اولش رو تو کنسول چاپ میکنه یا به عنوان خروجی میده بیرون.
تو یه چنین مسائلی ما پیچیدگی ثابت زمانی داریم :
O(1) یا constant time
حالا سوال اینجاست که اگر بجای یدونه کنسول لاگ ما 300 تا کنسول داشتیم و هر بار باید میرفتیم سراغ 300 تا خونه از ارایه، اون موقع پیچیدگی زمانیم چی بود ؟
اینو توی ویس این ویدیو برات توضیح دادم ^^
#day2
@algorithm_interview
👍6