در این ویدیو با استفاده از الگوریتم top one مقادیری که در یک آرایه بیشترین تکرار را داشته‌اند را پیدا میکنیم



0

intro

5:18

رایگان

1

complexity

9:4

رایگان

2

constant complexity

5:13

رایگان

3

log complexity

5:17

رایگان

4

linear complexity

3:49

رایگان

5

polynomial complexity

3:5

رایگان

6

exponential complexity

3:58

رایگان

7

limit

10:25

رایگان

8

top one

8:57

رایگان

9

caesar cipher

19:43

رایگان

10

search insert

9:41

رایگان

11

is isomorphic

10:23

رایگان

12

a1z26 cipher

6:35

رایگان

13

bead sort

8:56

رایگان

14

zig zag iterator

6:37

رایگان

15

move zeros

2:52

رایگان

16

remove min

4:56

رایگان

17

OneTimePad cipher

9:32

رایگان

18

two sum

5:7

رایگان

19

rotate

6:10

رایگان

20

search range

9:7

رایگان

21

linear search

4:34

رایگان

22

binary search

6:45

رایگان

23

first occurrence

4:6

رایگان

24

last occurrence

5:28

رایگان

25

done

1:42

رایگان

دوره های پیشنهادی

دوره آموزش ردیس(redis)
دوره آموزش ردیس(redis)
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش ریاضیات یادگیری ماشین
دوره آموزش ریاضیات یادگیری ماشین
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش pandas پایتون
دوره آموزش pandas پایتون
تکمیل ضبط
امیرحسین بیگدلو



ارسال نظر


Farhan

1 سال قبل پاسخ به نظر

سلام واسم سواله چرا الگوریتم اینجا میشه o(n)
مگه دوبار پیمایش نکردیم نباید میشد polynomial؟

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
توی این الگوریتم دوبار روی ورودی پیمایش کردیم؟

morteza

1 سال قبل پاسخ به نظر

درود
با توجه به اینکه فرمودین بهتره که برای الگوریتم نویسی از امکانات یک زبان استفاده نکنیم و اینکه در حل این مساله از max استفاده شده بود بنده سعی کردم بدون استفاده ازش مساله را حل کنم که کدش به این صورت شد
def top(arr):
obj = {}
top_val = 0
result = []
for i in arr:
if i in obj:
obj[i] += 1
else:
obj[i] = 1

for k, v in obj.items():
flag = False
if v > top_val:
top_val = v
if result and flag:
result.clear()
elif result:
result.pop()
result.append(k)
else:
result.append(k)
elif v == top_val:
result.append(k)
flag = True
else:
continue
return result

ارسال نظر



Atefe

1 سال قبل پاسخ به نظر

سلام کامپلکسیتی این الگوریتم o(n^n) polynomialهست چون روبار مجبور شریم پیمایش کنید با حلقه؟

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
خیر، o(n) هست. توی ویدیو هم مشخصه

میلاد

1 سال قبل پاسخ به نظر

خسته نباشید. تو حلقه اول اومدیم شرط نوشتیم و گفتیم اگه داخل ولیوز بود ...
نکته ای که هست به نظرم اینه که خود in هم میاد یک بار دیکشنری رو پیمایش میکنه. در نتیجه ما الان به نوعی داریم داخل پیمایش اول که for هست یه پیمایش دیگه که in هست اینجام میدیم و به نظرم این داره کامپلکسیتی o(n^2) میده. در نتیجه کامپلیکسیتی الگوریتممون هم o(n^2) میشه.

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
خیر، تابع in داخل دیکشنری پیمایش نمیکنه. دیکشنری hash container هست و استفاده از in داخل دیکشنری معمولا o(1) هست

امیر

2 سال قبل پاسخ به نظر

سلام . تعریف اولیه f_val چه سودی داره ؟ چون وقتیحذفش میکنی باز هم کار میکنه
منظورم اونجا که نوشتید f_val=0

ارسال نظر



سپهر

1 سال قبل

آره دقیقا سودی نداشت
میشد تعریفش نکرد اون اول

alireza

2 سال قبل پاسخ به نظر

سلام.اگر تو الگوریتمی که میشد به جای for زدن از map استفاده کرد-آیا تایم کامپلکستی بهتر میشه توی map به جای for?

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
بله. بهتره از map استفاده کنید

alireza

2 سال قبل پاسخ به نظر

سلام.ممنون برای ویدیو ها -آیا از نظر تایم کامپلکتیسی و مصرف منابع استفاده از حلقه for روی خود لیست بهتره یا روی range(len(list)) لیست بهتره ؟ و آیا این دوتا از نظر آیا از نظر تایم کامپلکتیسی و مصرف منابع فرقی دارند؟

ارسال نظر



امیرحسین بیگدلو

2 سال قبل

سلام
فرقی ندارن

مونگارد