Algo Vision
458 subscribers
340 photos
64 videos
5 files
114 links
Computer Vision - Algorithm
for commercial questions @mlenginer
Download Telegram
Bir nechi kundan biri hamma DeepSeek haqida gapirayotgandi. Men hatto etibor ham berganim yuq chunki uni GPTdan yaxshiroq javob berishiga to'grisi uncha ishonmagandim.
Bugun sinab kurdim to'grisini aytsam hayratda qoldirdi.
Sinab kurish uchun murakkabroq masala olishga harakat qildim.
GPT birdan xato yechim berdi.
DeepSeek 100 foiz yechmagan bulsada lekin juda chuqur harakat qildi.
Uzi bitta yechim berib yana ozgina uylab yuq bu yechmda mana bunday muammo bor deb boshqasiga birdan o'tib ketadi.
To'grisini aytsam haliyam o'zi bilan o'zi usha muammo ustida ishalaypti 😄

PS shunga xalaqit qilmay deb astagina GPT ga qaytdm
https://chat.deepseek.com
🤣8😁4🤡1
Algo Vision
Soatlar ajoib masala codeforcesdan
DeepSeek dan javob

Kecha odam ko'p so'rov berganiga balkim ishlamagndir lekin qoil juda chuqur tahlillab berdi.

Bu esa GPT o1 dan javob yechimdan ancha uzoq lekin uzbekchada
4
Tassavur qiling sizga 3^13 (3 sonini 13 darajasi) ni topish kerak bulsa faqat kalkulyatorsiz yoki tashqi yordamsz?
Xo'sh siz buni qanday usulda bajargan bular ediz?
Izohlarda fikringizni qoldiring

Imagine that you need to find 3^13 (Three to the power of thirteen) without using a calculator or any external help.
So, how would you solve it?
7🆒1
https://telegra.ph/Inkapsulatsiya-02-10-2

Inkapsuliyatsiyaning real world tasklarda namoyon bulishi.
7👍1
Qaysi vaqtda stream utkazish qulay? (Bu aniq Shanba yoki Yakshanba kuni buladi chunki shu kunlari bo'sh bulaman)
Anonymous Poll
20%
11:00
14%
13:00
20%
16:00
46%
17:00
Yandex dan juda ajoib imkoniyat sizda Open Source loyiha bormi?
unda tezda ruyxatdan o'ting va loyihangizga grant yutub olish imkoniyatini qulga kiriting
Yandex Grant OpenSource

Kutubxona, Framework .... model AI
faqatgina open source bo'lsa buldi va aniq bir yechimni uz ichiga olsa!

PS:600 mng rubl 12 ta saralangan loyihaga
👍7👌1
Bugungi LeetCode masalasini ko'ramiz.
Implement the ProductOfNumbers class:

ProductOfNumbers() Initializes the object with an empty stream.
void add(int num) Appends the integer num to the stream.
int getProduct(int k) Returns the product of the last k numbers in the current list. You can assume that always the current list has at least k numbers.

The test cases are generated so that, at any time, the product of any contiguous sequence of numbers will fit into a single 32-bit integer without overflowing.


Yane sodda qilib aytganda sinfdagi berilgan metodlarni implement qilish kerak.
````
add(num) bu sinfga element qushadi
getProduct(int k) oxirgi k ta elementlarni ko'paytmasini qaytaradi.
Bu masalaga istalgan AI yechim bera oladi. Lekin biz Engineer sifatida uni kodlarini optimizatsiya qila olamizmi?
Oddiy yechimi quyidagi kurinishda bo'lishi mumkin.

```cpp
class ProductOfNumbers {
public:
ProductOfNumbers() {

}

void add(int num) {
data_.push_back(num);
}

int getProduct(int k) {
long long pr = 1;

for(int i = 0; i < k; i++) {
pr *= data_[data_.size() - i - 1];
}

return pr;
}

private:
std::vector<int> data_;
};

Bu yechim qushishda O(1) getProduct da O(K) ta amal bajaradi.
Xotiradan esa T(N) N bu yerda nechi marta add qilingani.

Siz buni optimizatsiya qila olasizmi?

Barchasini O(1) gacha yane hammasida amallar soni maksimal minimum bulsin.
izohlarda yechimlaringizni yuborishingiz mumkin. (Istalgan tilda)
👍4❤‍🔥1
The image contains a solution to a LeetCode problem. Can you find a bug?
Problem link
#review
#bug
🔥6❤‍🔥1
Afsuski bu yil finalga chiqa olmadim.
endi to'grisi uncha qiziqam emas.
Kelasi yil Xudo xohlasa shogirdlarimiz chiqar!!!
🔥141👍1👌1
81
Leetcode Daily-Question
Sanoq tizimlar goyasidan kelib chiqadi.
Tassavur qiling 112(3-lik sanoq sistemasida) berilgan bo'lsin. Bu sonni 10 lik sanoq tizimiga o'girsak 1*3^2 + 1*3^1 + 2 * 3^0 Shartda aytilganidek har bir 3 ning darajasi bir marta qatnashi kerak. Demak bizni javobda 3^0 darajasi 2 marta qatnashaypti natija qoniqarsz.

Endi uziz yoqtirgan (Faqat uziz bu muhim chunki istlagan AI buni Middle darajada bemalol yozib beradi) dasturlash tilizda kodini yozishga harakat qiling. Eng optimal kodni kanalga joylashtiraman
👍8
Bugun ko‘zimga juda yoqimli bir yangilik tashlandi — shogirdimning videosi xabar.uzda chiqan ekan.
Dilafruzaxonning fikr va hayotiy mulohiza yuritishi yana bir karra o'sganini ko'rib juda xursand bo'ldim.

Постараюсь честно выразить своё мнение о том времени, когда я обучал Дилафруз.
За каждым успехом стоят годы труда и поддержки.
Мама, которая верила, вдохновляла и шла рядом, даже когда было трудно. Именно её забота, терпение и самоотверженность стали тем фундаментом, на котором сегодня строится каждое достижение Дилафруза.
7
Forwarded from ICT xabar.uz
#IT_MOTIVATSIYA #IT_WOMAN

Microsoftning O‘zbekistondagi ilk ayol elchisi: IT sohasi bilan dunyoni zabt etishga ko‘zim yetadi, faqat yoshim yetmaydi...


“Ayol kishi qora ishlar uchun yaralmagan! Ayol kishi kimningdir uyida xizmatkorlik qilish uchun yaralmagan! Ayol kishi faqat fayzli xonadonning chiroyli bekasi boʻlib, farzandlar tarbiyasi bilan shugʻullanishi kerak. Agar u shaxsiy xarajatlari uchun yaxshi daromad topishni istasa, uyda oʻtirib ham topa oladi. Buning uchun esa eskilik sarqitiga aylangan ayrim streotiplardan choʻchimasdan, IT sohasini oʻrganishi kerak!“

— Dilafruz Joʻraboyeva 11-sinf oʻquvchisi.

Toʻliq intervyuni YouTube sahifamizda tomosha qiling.
Zero, har bir qiz tarbiyalayotgan ota-ona buni koʻrishi kerak:


▶️ VIDEO

🔔Texnologiyaga oid dunyo xabarlari👇
Telegram | Instagram | Youtube
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍31😁1
Leetcode Daily Question
Given an array nums sorted in non-decreasing order, return the maximum between the number of positive integers and the number of negative integers.

In other words, if the number of positive integers in nums is pos and the number of negative integers is neg, then return the maximum of pos and neg.

Note that 0 is neither positive nor negative


Example 1:

Input: nums = [-2,-1,-1,1,2,3]
Output: 3
Explanation: There are 3 positive integers and 3 negative integers. The maximum count among them is 3.


Bir qarashda osongina masalaga uxshaydi va rostanham shunday. Shunchaki bir qator kod yozilsa buldi deyishadi Python dasturchilar taxminan quyidagicha
class Solution {
public:
int maximumCount(vector<int>& nums) {
return
std::max(std::ranges::count_if(nums,[](auto a){ return a < 0; }),
std::ranges::count_if(nums,[](auto a){ return a > 0; }));

}
};

Lekin bu yechimni chuqur tahlillasak Manfiy sonlarni topish uchun bir marta aylanib chiqishimiz va musbat sonlar uchun ham shunday bir aylanib chiqishimiz zarur. Bu esa O(N)+O(N)=O(N) Time Complexity ga ega.

PS: Lekin bu eng optimal yechim emas. Bundanam optimal yechim mavjud. qanday deysizmi?
Bir o'ylab kuring nega bizga tartiblangan sonlar berilmoqda?
Bu nimadan darak.
Eng katta manfiy songa eng yaqin son qaysi?
Binar qidiruvda lower bound va upper bound nimani anglatadi?

Try to solve this problem with O(log N) time complexity and O(1) memory. Leave your code in a comment
👍3👌2🤓1
Algo Vision
Leetcode Daily Question Given an array nums sorted in non-decreasing order, return the maximum between the number of positive integers and the number of negative integers. In other words, if the number of positive integers in nums is pos and the number…
Binary Searchda Chap va o'ng tomon tushunchasi mavjud.
Masalan [-5, -4, -1, 0, 0, 1, 2] sonlar ruyxatini olib qarasak
chap binar qidiruvni lower bound desak
o'ng binar qidiruv esa upper bound bo'ladi
Lower Bound – qidirilayotgan qiymatdan kichik yoki teng bo‘lgan eng chap indeksni topadi.
Upper Bound – qidirilayotgan qiymatdan katta bo‘lgan eng chap indeksni topadi.

Agar yuqoridagi tartiblangan ruyxatdan 0 ni lower bound bilan qidirsak bizga eng birinchi 0 indeksi qaytariladi
Agar upper bound bilan qidirsak bizga 1 sonini indexi qaytariladi.
Masalada aynan manfiy sonlar soni va musbat sonlar soni topib ulardan kattasini qaytarishimiz kerak.

[-5, -4, -1, 0, 0, 1, 2] ruyxatda 3 ta manfiy sonlar bor.
lekin eng qiziqi eng birinchi 0 ham 3-indexdan boshlanadi
Demak biz 0 joylashgan indexni topsak manfiy sonlar soni ham shuncha bo'ladi.
buni lower bound orqali amalga oshirishimiz mumkin.
Endi qanday qilib musbat sonlar sonini topamiz?
upper bound qoidasiga kura u qidirayotgan sondan har doim katta bo'lgan eng kichik sonni qaytaradi
yane ruyxatdagi eng birinchi musbat son indexini
[-5, -4, -1, 0, 0, 1, 2] upper bound(0)->1 sonining indexini qaytaradi. yane 5.
Shu indexdan keyin esa uzunlik - 5 ta son bor va ular hammasi musbat.
🔤
class Solution {
public:
int maximumCount(vector<int>& nums) {
return std::max(std::ranges::lower_bound(nums, 0) - nums.begin(),
nums.end() - std::ranges::upper_bound(nums, 0));
}
};

🔤🔤🔤🔤🔤🔤
from bisect import bisect_left, bisect_right

class Solution:
def maximumCount(self, nums):
return max(bisect_left(nums, 0), len(nums) - bisect_right(nums, 0))

🔤#️⃣
C# da ozgina ko'proq kod bulgani uchun boshqacha usul foydalanishimiz mumkin
public class Solution {
private int SearchTarget(int[] nums , int Target){
int left = 0, right = nums.Length;

while(left < right){
int mid = left + (right - left)/2;
if(nums[mid] < Target)
left = mid + 1;
else
right = mid;
}
return left;
}

public int MaximumCount(int[] nums) =>
Math.Max(SearchTarget(nums,0) ,nums.Length - SearchTarget(nums,1));
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
Dear subscribers, today we have a slightly difficult task, but let’s sort it out!
Leetcode Daily question Zero Array Transformation II
You are given an integer array nums of length n and a 2D array queries where queries[i] = [li, ri, vali].

Each queries[i] represents the following action on nums:

Decrement the value at each index in the range [li, ri] in nums by at most vali.
The amount by which each value is decremented can be chosen independently for each index.

A Zero Array is an array with all its elements equal to 0.

Return the minimum possible non-negative value of k, such that after processing the first k queries in sequence, nums becomes a Zero Array. If no such k exists, return -1.

Example 1:

Input: nums = [2,0,2], queries = [[0,2,1],[0,2,1],[1,1,3]]

Output: 2

Explanation:

For i = 0 (l = 0, r = 2, val = 1):
Decrement values at indices [0, 1, 2] by [1, 0, 1] respectively.
The array will become [1, 0, 1].
For i = 1 (l = 0, r = 2, val = 1):
Decrement values at indices [0, 1, 2] by [1, 0, 1] respectively.
The array will become [0, 0, 0], which is a Zero Array. Therefore, the minimum value of k is 2.


Tarjimasini yozib utirmayman.
Demak bizga bir qancha so'rovlar beriladi.
So'rovlar quyidagi turda bo'ladi [l,r,val]
yane berilgan massivdagi l-indexidan boshlab r-indexigacha (l,r ham kiradi)
qiymatlarni val dan katta bo'lmagan qiymatga kamaytirishimiz mumkin.
Biz shunday k sonini topishimiz kerak ki k-ta so'rovdan keyin massiv barcha elementlari
0 ga teng bo'lsin va k eng kichik bo'lishi kerak.

Miyamizga keladigan eng birinchi yechim bu oddiy bir boshdan har bir so'rovlarni bajarish.
lekin so'rovlar soni 10^5 har bir marta katta diapozon berilsa bu ishni amalga oshirishimiz qiyin.

Endi kelilar bir tushunchani tushinib olamiz.
Differensal massiv tushunchasi bu massivdagi [l,r] oraliqdagi barcha elementlarni birdan kamaytirish yoki
oshirish usuli yane so'rovni konstanta vaqtda bajarish.
👍4
Algo Vision
Dear subscribers, today we have a slightly difficult task, but let’s sort it out! Leetcode Daily question Zero Array Transformation II You are given an integer array nums of length n and a 2D array queries where queries[i] = [li, ri, vali]. Each queries[i]…
Bu usulni namunada tushuntirib beraman.
Masalan, quyidagi massiv berilgan:

nums = {2, 4, 6, 8, 10}


Agar biz [1,3] index oralig‘idagi barcha elementlarni 3 kamaytirmoqchi bo‘lsak, oddiy usulda quyidagi amallar bajarilar edi:
nums[1] -= 3;
nums[2] -= 3;
nums[3] -= 3;

Natijada massiv shunday ko‘rinishda bo‘ladi:
nums = {2, 1, 3, 5, 10}

Bu jarayon har bir so‘rov uchun O(N) vaqt talab qiladi va katta N uchun optimal emas.

Buning o‘rniga Differensial massiv (Difference Array) usulidan foydalansak, biz so‘rovlarni O(1) vaqt ichida qo‘llashimiz mumkin. Buning uchun diff deb nomlangan yordamchi massiv yaratamiz, va unda faqatgina o‘zgarishlarni saqlaymiz:
    diff[l] ga -val qo‘shamiz (bu l dan boshlab kamaytirish boshlanishini bildiradi).
diff[r+1] ga +val qo‘shamiz (bu r dan keyin qayta tiklashni bildiradi).

Bu usulni diff massivi bilan qo‘llaymiz:

diff = {0, -3, 0, 0, 3, 0}


Oxirgi qadam sifatida diff ustida prefix sum bajarib, asl nums massivini tiklaymiz:
nums[0] = 2
nums[1] = 4 + (-3) = 1
nums[2] = 6 + (-3) = 3
nums[3] = 8 + (-3) = 5
nums[4] = 10 + 0 = 10

Ko‘rib turganingizdek, natija oddiy usul bilan bajarganimiz kabi chiqdi, lekin har bir so‘rov O(1) vaqt ichida qo‘llanildi, bu esa juda samarali yondashuvdir!

Qisqacha qilsak kod kurinishda quyidagiga ega bo'lamiz.
int main(){

vector<int> nums = {2, 4, 6, 8, 10};
vector<int> diff(nums.size() + 1, 0);

//[1,3] oraligdagi barcha elementlarni 3 kamaytiramiz
diff[1] -= 3;
diff[4] += 3;//Qolganlari uchun +3 chunki [4...oxirgacha bu amal bajarilmasligi kerak]
//Yuqoridagi amalni bir nechi marta bajarishimiz mumkin
//endi natijaviy massivni hosil qilamiz
int current = 0;
for (int i = 0; i < nums.size(); i++) {
current += diff[i];
nums[i] += current;
}

for(auto& num: nums){
std::cout << num << "\n";
}
return 0;
}
6👍1