Algo Vision
469 subscribers
340 photos
64 videos
5 files
114 links
Computer Vision - Algorithm
for commercial questions @mlenginer
Download Telegram
ChatGPT kod yozishda adashib NULL xotiraga murojaat qilgandek.
Shunday katta kompaniya nahotki testlash tizimlari mavjud bulmasa .

PS:Ertagayoq America Qo'shma Shtatlari ....si chiqib C/C++ voz kechishimizni surab qoladi πŸ˜„
#CrowdStrike
😁3🀣3
Yandex aynan Toshkentda Backend dasturchilar uchun stajirovka ochgani haqida xabariz bormi?
Stajirovkaga istalgan dasturlash tili bn kirish mumkin.
πŸ‘2😁2
😁9❀2
😁12
πŸ‡ΊπŸ‡Ώ Happy Independence Day, Uzbekistan!

Today, on September 1st, we celebrate the 33rd anniversary of our country's independence! This day reminds us of the importance of freedom, unity, and the pursuit of prosperity. We take pride in our rich cultural heritage, hardworking people, and the progress Uzbekistan continues to make as it secures its rightful place on the global stage.

Wishing all my fellow citizens peace, prosperity, and continued success! May our nation thrive, and may each of us contribute to its bright future.

Happy Independence Day, Uzbekistan! πŸ‡ΊπŸ‡Ώ
⚑15🫑4πŸ‘2
Keep pushing boundaries, debugging, and building the future one line of code at a time.
🀣9⚑1πŸ‘»1
Loyihada arxitektura juda ko'pgina narsani hal qilishi mumkin.
Yomon tuzilgan arxitektura keyinchalik muammolar keltirib chiqaradi.
Jamoa productivligini tushurishi mumkin.
Imkon qadar code yozishdan oldin loyihani qay darajada kengayishini oldindan bilib ushanga mos arxitektura tanlash kerak.
⚑9πŸ‘3πŸ”₯1
Π—Π°Π²Ρ‚Ρ€Π° ΠΆΠ΄Ρƒ вас
А Π³Π΄Π΅ Π²Ρ‹ ?
πŸ”₯6❀‍πŸ”₯2
This media is not supported in your browser
VIEW IN TELEGRAM
Graflar nazariyasi asosida tuzilgan.
Yandex Go dagi avtomobilni biriktirish tizimi
πŸ”₯14πŸ‘1
Super puper kod deb shunga aytishadi.
😁19⚑2🐳1
What is a Priority Queue?

Prioritetga ega bulgan navbat.
Navbat - bu oddiy hayotdagi navbat . Dasturlashdagi navbat xuddi
hayotdagi navbatga asoslanib ishlaydi.
Masalan kim birinchi kelsa unga birinchi xizmat kursatilishi kerak.
Bu prinsip FIFO (First In First Out) deyiladi.

Endi esa prioritet tushunchasini tushuntirishga harakat qilaman.

Aytaylik navbatda ko'pchilik turishibdi. Lekin navbat endi oldingidek birinchi kelganga birinchi xizmat kursatish qoidasi ishlamaydi.
Masalan yoshi kattalarga oldin xizmat kursatiladi.
Yoki aytaylik nogironligi bor odamlarga.
Yoki qupolroq bulsada o'zini qarindoshlariga mansabdor shaxslarga ....
Ana shunda odamning yoshi, nogironligi, mansabi ... prioritet hisoblanadi.

Bu maxsus Malumotlar strukturasi hisoblanadi. Demak deyarli barcha dasturlash tillarida uning shablon(Generic) kurinishi mavjud.

Xo'sh bu malumotlar strukturasi o'zi nimasi buyicha effectiv bulishi kerak?
Bu oddiy massivlar asosida tuzilmaydi. shu sabab oddiy navbatdan farq qiladi.

Demak prioritet buyicha malumot qushish (push) O(logN)
Prioritet buyicha malumot olish (top) O(1)
va Prioritet buyicha malumotni o'chirish ham O(logN)


Bugun leetcode ga qarab bular esimga tushdi shunchaki bulishdm.

You are given a 0-indexed integer array nums and an integer k. You have a starting score of 0.

In one operation:

choose an index i such that 0 <= i < nums.length,
increase your score by nums[i], and
replace nums[i] with ceil(nums[i] / 3).

Return the maximum possible score you can attain after applying exactly k operations.

The ceiling function ceil(val) is the least integer greater than or equal to val.


Agar yaxshiroq etibor bersak biz maksimal summa yigishimiz uchun har doim eng maksimal elementni olib keyin uni
ceil(a/3) qismiga o'zgartirishimiz kerak.
Lekin chegaraga qarasak n,k<=10^5
demak k = 10^5 bulsa va massivda ham shuncha element bulsa
biz har bir marta eng katta elementni topishimiz kerak O(n)
agar bu ishni k marta amalga oshirsak k*n=n^2 bu esa 10^10 buladi.
Urtacha SHK zamonaviy protsessori sekundiga 10^6~10^7 amal bajaradi.
10^10/10^7=10^3 sekund vaqt kerak buncha amalni bajarish uchun.

Ana shunda bizga (Heap yokin Binary Heapga asoslangan) Priority Queue yordamga keladi.
Biz maksimal elementni prioritet deb olsak demak K marta maksimal elementni olish uchun O(K*LOGN) amal kerak.
Bu maksimum 10^5*LOG10^5 =~10^6 amal

class Solution {
public:
long long maxKelements(vector<int>& nums, int k) {
ios::sync_with_stdio(false);
cin.tie(nullptr);

std::priority_queue<int> queue;
for(const auto& num: nums){
queue.push(num);
}

long long sum = 0;
while(k--){
sum += static_cast<long long> (queue.top());
auto cur = std::ceil(queue.top() / 3.0);
queue.pop();
queue.push(cur);
}
return sum;
}
};

Qolgan dasturlash tillaridaham xuddi shu tarzda buladi (Deyarli barchasida Priority_Queue bor)
⚑3πŸ”₯3πŸ‘2πŸ†2
Priority Queue da element qushish nimaga teng?
Anonymous Poll
26%
O(1)
51%
O(LogN)
15%
O(N)
8%
O(N^2)
Bu yilgi masalalar ogirmi yoki men produktiv masalalarga utib qoldimikan?
Yandex CUP birinchi qismi boshlandi.
4 masaladan 2 tasini zurga yechdim u yam birinchisida muammo bor.
hali 2 soatdan kuproq vaqtim bor.
Siz ham ishlayapszmi?
πŸ”₯4
Yandex Cup dagi oxirgi (Backend) masala to'gridan to'gri backend bilan aloqador hisoblanadi.
Python, Node.js, C#, Javada so'rovlar bilan ishlash uchun judaham yaxshi standart kutubxonalar bor.
Lekin kimdir C++ ishlayman desachi?
Albatta C++ daham ajoib kutubxonalar mavjud.
Xuddi Python ning requests kutubxonasiga uxshagan va juda sodda bulgan
cpr yane C++ requests
Json uchun esa NlohmanJson
Ularni qushish oldin build yane yigish kerak.
Yigish judayam oson shunchaki git repolariga kirsiz hammasi yozilgan.

βœ…Nlohman
✳️CPR-C++ requests


Ikkala kutubxona ham juda tez ishlaydi.

Ularni shunchaki CMake faylingizga quyidagicha qushing.
cmake_minimum_required(VERSION 3.29)
project(untitled4)

set(CMAKE_CXX_STANDARD 20)

find_package(nlohmann_json REQUIRED)
find_package(cpr REQUIRED)

add_executable(untitled4 main.cpp
first.cc)

target_link_libraries(${PROJECT_NAME} PRIVATE nlohmann_json::nlohmann_json)
target_link_libraries(${PROJECT_NAME} PRIVATE cpr::cpr)

Va bemalol ishlatishiz mumkin.
#include <iostream>
#include <cpr/cpr.h>
#include <nlohmann/json.hpp>

using json = nlohmann::json;

int main() {
try {
cpr::Response response = cpr::Get(cpr::Url{"https://jsonplaceholder.typicode.com/posts/1"});

if (response.status_code != 200) {
throw std::runtime_error("Error HTTP: " + std::to_string(response.status_code));
}

try {
json response_json = json::parse(response.text);

std::cout << "ID: " << response_json["id"] << std::endl;
std::cout << "Title: " << response_json["title"] << std::endl;
std::cout << "Body: " << response_json["body"] << std::endl;

} catch (const json::parse_error& e) {
throw std::runtime_error("Error parsing Json: " + std::string(e.what()));
}

} catch (const std::exception& e) {
std::cerr << "Error: " << e.what() << std::endl;
}

return 0;
}
πŸ”₯7⚑4
Yandex Cup dan yarim finalga kimlar chiqdi?
πŸ”₯ - yarim finaldaman.
😐 - keyingi yil Insha Allah.
Reaksiya qoldiring.
😐24πŸ”₯6🐳5
2501. Longest Square Streak in an Array

You are given an integer array nums. A subsequence of nums is called a square streak if:

The length of the subsequence is at least 2, and
after sorting the subsequence, each element (except the first element) is the square of the previous number.

Return the length of the longest square streak in nums, or return -1 if there is no square streak.
A subsequence is an array that can be derived from another array by deleting some or no elements without changing the order of the remaining elements.


Qisqacha qilib tushuntirsam bizga massiv berilgan. Shu massivdan shunday eng uzun qism massivni (elementlari har xil joydan bulsaham buladi)
topishimiz keraki uni o'sish tartibida tartiblaganimizda birinchidan keyingi elementlari o'zidan oldingi element kvadratiga teng bulsin.
shuni uzunligini qaytarishimiz kerak.

Masalan [4, 3, 6, 16, 8, 2]
Bunda eng uzun shartga mos keladigan qism massiv [4, 16, 2] tartiblasak [2, 4. 16]
4=2^2
16 = 4^2

Masalaga bir nechi xil yechim bersak buladi.
Masalan eng oddiy brut force - yane to'gridan to'gri yechim
Har bitta elementdan boshlab uni kvadratga oshirib shu kvadrat berilgan massivda bor yoki yuqligini tekshiramiz.
Agar bulsa yana shu amalni bajarimiz.
Misol uchun
[4, 3, 6, 16, 8, 2]
1) 4 dan boshlaymiz.
4 ni bitta element.
4^2 = 16 massivda bor elementlar soni +1
16^2=256 massivda yuq Demak umiy 2 ta
2) 3 dan boshlaymiz
3 ni uzi bitta element
3^2 = 9 yuq.
Demak umumiy bitta oldingisida 2 ta edi max(2, 1) = 2
........................
Bu albatta eng sodda yechim.
class Solution {
public:
int longestSquareStreak(vector<int>& nums) {
std::unordered_set<long long> mp;

for(const auto& num: nums){
mp.insert(static_cast<long long>(num));
}

int mx = 0;
for(const auto& num: nums){
int cnt = 1;
long long cur = static_cast<long long>(num);
while(mp.count(cur * cur)){
cur = cur * cur;
cnt++;
}

mx = std::max(cnt, mx);
}
return (mx != 1) ? mx : -1;
}
};

Lekin biz bu yechimni yanada optimallashtira olamiz.
Ayni paytda 2, 4, 16 qism ketma ketlik 3 marta tekshiriladi.
yane birinchi 4 16
keyin 16
keyin 2 4 16
Biz oldindan berilgan massivni tartiblasak unda binary search ishlata olamizmi?
O'zi binary search nima?
βœ… - Binary search ishlatsak buladi.
✳️ - Yana boshqa yechimlar bor
πŸ‘2⚑1
Set-To'plam agar hash asosida tuzilgan bulsa unga malumot bor yoki yuqligini aniqlash asimptotikasi nimaga teng?

For a set built on hashing, what is the asymptotic complexity for determining whether an element exists in it?
Anonymous Quiz
19%
O(N)
48%
O(1)
19%
O(N^2)
15%
O(LogN)
πŸ‘5