🇺🇿 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! 🇺🇿
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
Yandex O'zbekiston uchun ish amaliyotini e'lon qilgan.
Tezroq shu loyihadan kirib ruyxatdan o'ting.
Tezroq shu loyihadan kirib ruyxatdan o'ting.
Backend ― Yandexda ish amaliyoti
Qizgʻin yuklamali xizmatlar va murakkab tizimlarni ishlab chiqish va ishlatish koʻnikmalarini egallang.
⚡3
This media is not supported in your browser
VIEW IN TELEGRAM
Graflar nazariyasi asosida tuzilgan.
Yandex Go dagi avtomobilni biriktirish tizimi
Yandex Go dagi avtomobilni biriktirish tizimi
🔥14👍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
Qolgan dasturlash tillaridaham xuddi shu tarzda buladi (Deyarli barchasida Priority_Queue bor)
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)
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.
Va bemalol ishlatishiz mumkin.
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;
}
GitHub
GitHub - nlohmann/json: JSON for Modern C++
JSON for Modern C++. Contribute to nlohmann/json development by creating an account on GitHub.
🔥7⚡4
Yandex Cup dan yarim finalga kimlar chiqdi?
🔥 - yarim finaldaman.
😐 - keyingi yil Insha Allah.
Reaksiya qoldiring.
🔥 - 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.
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
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
LeetCode
Longest Square Streak in an Array - LeetCode
Can you solve this real interview question? 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…
* The length of the subsequence is at least 2, and
* after sorting the subsequence…
👍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?
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
Bazida velosiped tuzib chiqish (Yane hamma narsani qo'lda yozish) kerak bo'lsa (Customize)
lekin ko'pgina holatlarda bu zararli hisoblanadi. Chunki bu bizni productivligimizga jiddiy tasir kursatadi.
Qo'lda yozish odatda o'rganish yoki biror bir kamchiliklarni to'ldirish maqsadida amalga oshiriladi.
Misol uchun oddiygina masala Massivdan ikkilamchi elementlarni o'chirish muammosini ko'ramiz.
Masala shartini uqib chiqsak unda massiv o'suvchan ekanligini kurishimiz mumkin.
O'suvchan massivda bir xil elementlar ketma ket bulishi aniq.
Shunchaki ularni olib oxiriga joylashtirib keyin yangi massivga utkazsak buldi.
Albatta buni qo'limizda yozib massivni elementlarini siljitib amalga oshirishimiz mumkin.
Yoki dasturlash tilidagi tayor funksionaldan ham foydalanish mumkin. Bazi dasturlash tillari standart boy algoritmlardan tashkil topgan
agar biz ishlatayotgan instrument -dasturlash tilida shu imkoniyat standart mavjud bulsa u holda shunchaki undan foydalanish kifoya.
lekin ko'pgina holatlarda bu zararli hisoblanadi. Chunki bu bizni productivligimizga jiddiy tasir kursatadi.
Qo'lda yozish odatda o'rganish yoki biror bir kamchiliklarni to'ldirish maqsadida amalga oshiriladi.
Misol uchun oddiygina masala Massivdan ikkilamchi elementlarni o'chirish muammosini ko'ramiz.
Masala shartini uqib chiqsak unda massiv o'suvchan ekanligini kurishimiz mumkin.
O'suvchan massivda bir xil elementlar ketma ket bulishi aniq.
Shunchaki ularni olib oxiriga joylashtirib keyin yangi massivga utkazsak buldi.
Albatta buni qo'limizda yozib massivni elementlarini siljitib amalga oshirishimiz mumkin.
Yoki dasturlash tilidagi tayor funksionaldan ham foydalanish mumkin. Bazi dasturlash tillari standart boy algoritmlardan tashkil topgan
agar biz ishlatayotgan instrument -dasturlash tilida shu imkoniyat standart mavjud bulsa u holda shunchaki undan foydalanish kifoya.
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
auto last = std::unique(nums.begin(), nums.end());
nums.erase(last, nums.end());
return nums.size();
}
};
LeetCode
Remove Duplicates from Sorted Array - LeetCode
Can you solve this real interview question? Remove Duplicates from Sorted Array - Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place [https://en.wikipedia.org/wiki/In-place_algorithm] such that each unique element appears…
👍5⚡4
LeetCode 139. Single Number
Bir qarashda juda oson tuyuladigan bu masalani ko'ramiz.
Masala shartiga binoan bizga bir nechta elementlardan tashkil topgan butun sonli massiv berilgan.
Massivda bitta elementdan tashqari qolgan barchasi ikki martadan qatnashgan. Shu bir marta qatnashgan elementni topish talab qilinmoqda.
Masalan: [3,2,3,1,1] da natija 2 chunki u bir marta qatnashadi.
Chegaraga etibor bersak 1<=array.length <= 3 * 10 ^4
Demak eng sodda yechim sifatida brute force - yane perebor qilish miyaga keladi.
Yane har bitta elementni ikkinchisini topamiz agar topmasak demak shu elementni qaytaramiz.
Yane
1) Oddiy brute force yechim
Lekin Dict (Map) yane lugat malumotlar tuzilmasi ham mavjud.
Shu asosida kalid(key) ni elementni olsak qiymat(value) sifatida shu element
nechi marta qatnashganini olamiz.
map ni Hash ga asoslangan versiyasidan foydalanmoqdamiz. Demak
unga element qushish O(1) (O'rtacha)
Umumiy O(array.length) + asimptotika (yane amallar soni)
lekin Xotira jihatidan biz ortiqcha yana array.length ta element egalladik.
Xush shu oddiy masalani maksimal optimizatsiya qilsak buladimi?
Albatta bo'ladi.
Binar amallar haqida hammamizni xabarimiz bulsa kerak.
Ularni ichida garoib XOR (Qatiy Mantiqiy yoki) amali mavjud.
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
Binar XOR jadvali yuqorida keltirilgan. Agar unga etibor bersak bir xil holatda 0 har xil bulgan holatda esa 1 kelib chiqmoqda.
Agar sonlar ustida bajarsak chi?
Masalan 12 va 12 ikkalasi ustida XOR bajarsak
1100 (12)
XOR
1100 (12)
-----------
0000 (Natija har doim 0)
Demak natija 0 endi etibor bering. Agar 0 bilan biror sonni ustida XOR bajarsakchi?
100 (4)
XOR
000 (0)
-----------
100 (4)
Natija sonni uzi.
Shuning uchun massivdagi har bir element ustidan bu amalni bajarsak bir xil elementlar bir birini 0 ga tenglashtiradi.
Natijada faqat yolgiz (SINGLE NUMBER) qoladi.
Bu yechim har tomonlama yaxshi. Ham ortiqcha xotira yuq. Ham yechim O(array.length)
Bir qarashda juda oson tuyuladigan bu masalani ko'ramiz.
Masala shartiga binoan bizga bir nechta elementlardan tashkil topgan butun sonli massiv berilgan.
Massivda bitta elementdan tashqari qolgan barchasi ikki martadan qatnashgan. Shu bir marta qatnashgan elementni topish talab qilinmoqda.
Masalan: [3,2,3,1,1] da natija 2 chunki u bir marta qatnashadi.
Chegaraga etibor bersak 1<=array.length <= 3 * 10 ^4
Demak eng sodda yechim sifatida brute force - yane perebor qilish miyaga keladi.
Yane har bitta elementni ikkinchisini topamiz agar topmasak demak shu elementni qaytaramiz.
Yane
1) Oddiy brute force yechim
n=array.length
i=0..n-1
j=i..n
gacha agar array[i] == array[j] bulsa belgilab olamiz
oxirida shu belgiga asoslanib yo davom etamiz yoki shu joyda tuxtatib ekranga chop etamiz.
Lekin Dict (Map) yane lugat malumotlar tuzilmasi ham mavjud.
Shu asosida kalid(key) ni elementni olsak qiymat(value) sifatida shu element
nechi marta qatnashganini olamiz.
class Solution {
public:
int singleNumber(vector<int>& nums)
{
unordered_map<int,int> num;
for (auto i:nums)
{
num[i]++;
}
for(auto i:num)
{
if(i.second==1)
return i.first;
}
return -1;
}
};
map ni Hash ga asoslangan versiyasidan foydalanmoqdamiz. Demak
unga element qushish O(1) (O'rtacha)
Umumiy O(array.length) + asimptotika (yane amallar soni)
lekin Xotira jihatidan biz ortiqcha yana array.length ta element egalladik.
Xush shu oddiy masalani maksimal optimizatsiya qilsak buladimi?
Albatta bo'ladi.
Binar amallar haqida hammamizni xabarimiz bulsa kerak.
Ularni ichida garoib XOR (Qatiy Mantiqiy yoki) amali mavjud.
A B A XOR B
0 0 0
0 1 1
1 0 1
1 1 0
Binar XOR jadvali yuqorida keltirilgan. Agar unga etibor bersak bir xil holatda 0 har xil bulgan holatda esa 1 kelib chiqmoqda.
Agar sonlar ustida bajarsak chi?
Masalan 12 va 12 ikkalasi ustida XOR bajarsak
1100 (12)
XOR
1100 (12)
-----------
0000 (Natija har doim 0)
Demak natija 0 endi etibor bering. Agar 0 bilan biror sonni ustida XOR bajarsakchi?
100 (4)
XOR
000 (0)
-----------
100 (4)
Natija sonni uzi.
Shuning uchun massivdagi har bir element ustidan bu amalni bajarsak bir xil elementlar bir birini 0 ga tenglashtiradi.
Natijada faqat yolgiz (SINGLE NUMBER) qoladi.
class Solution {
public:
int singleNumber(const std::vector<int>& nums) {
int xorr = 0;
for (const auto& num : nums) {
xorr ^= num;
}
return xorr;
}
};
Bu yechim har tomonlama yaxshi. Ham ortiqcha xotira yuq. Ham yechim O(array.length)
LeetCode
Single Number - LeetCode
Can you solve this real interview question? Single Number - Given a non-empty array of integers nums, every element appears twice except for one. Find that single one.
You must implement a solution with a linear runtime complexity and use only constant extra…
You must implement a solution with a linear runtime complexity and use only constant extra…
⚡15👍5
#include <iostream>
#include <vector>
#include <string>
class Quiz {
private:
std::vector<std::pair<std::string, std::string>> questions;
int score = 0;
public:
Quiz() {
questions = {
{"What is 2 + 2?", "4"},
{"What is the capital of France?", "Paris"},
{"Who wrote '1984'?", "George Orwell"}
};
}
void runQuiz() {
for (const auto& [question, answer] : questions) {
std::cout << question << " ";
std::string userAnswer;
std::getline(std::cin, userAnswer);
if (userAnswer == answer) {
score++;
}
}
std::cout << "You scored " << score << " out of " << questions.size() << "!\n";
}
};
int main() {
Quiz quiz;
quiz.runQuiz();
return 0;
}
🔥4🥰3👍2🆒2
Sizningcha yuqoridagi kod SOLID ning qaysi prinsipini buzmoqda?
Anonymous Quiz
41%
S — Single Responsibility Principle
41%
I — Interface Segregation Principle
18%
L — Liskov Substitution Principle
⚡1🔥1👌1
Algo Vision
#include <iostream> #include <vector> #include <string> class Quiz { private: std::vector<std::pair<std::string, std::string>> questions; int score = 0; public: Quiz() { questions = { {"What is 2 + 2?", "4"}, {"What…
SRP — Single Responsibility Principle
Yane bitta component bitta vazifada bo'lishi kerak.
Agar bizning componentimiz sinf bulsa demak u bitta vazifa uchun javobgar bulishi kerak.
Lekin component faqatgina sinf emas balki funksiya va shunga o'xshashlar ham bo'lishi mumkin.
Kodda Quiz sinfi ham savollar tuzilishiga
ham ularning biznes logikasiga (yane bajarilishiga ) javob bermoqda bu esa SRP ga zid.
Mantiqan fikrlasak bizni jarayonimizni qo'yidagi komponentalarga bo'lsak maqul bo'lar edi.
Question faqat savol uchun.
QuizManager esa asosiy logika uchun
QuizUI esa Natijalar uchun
Yane bitta component bitta vazifada bo'lishi kerak.
Agar bizning componentimiz sinf bulsa demak u bitta vazifa uchun javobgar bulishi kerak.
Lekin component faqatgina sinf emas balki funksiya va shunga o'xshashlar ham bo'lishi mumkin.
Kodda Quiz sinfi ham savollar tuzilishiga
ham ularning biznes logikasiga (yane bajarilishiga ) javob bermoqda bu esa SRP ga zid.
Mantiqan fikrlasak bizni jarayonimizni qo'yidagi komponentalarga bo'lsak maqul bo'lar edi.
#include <iostream>
#include <vector>
#include <string>
class Question {
public:
std::string questionText;
std::string correctAnswer;
Question(const std::string& text, const std::string& answer)
: questionText(text), correctAnswer(answer) {}
};
class QuizManager {
private:
std::vector<Question> questions;
int score = 0;
public:
QuizManager(const std::vector<Question>& q) : questions(q) {}
void runQuiz() {
for (const auto& q : questions) {
std::cout << q.questionText << " ";
std::string userAnswer;
std::getline(std::cin, userAnswer);
if (userAnswer == q.correctAnswer) {
score++;
}
}
}
int getScore() const { return score; }
int getTotalQuestions() const { return questions.size(); }
};
class QuizUI {
public:
static void displayResult(int score, int totalQuestions) {
std::cout << "You scored " << score << " out of " << totalQuestions << "!\n";
}
};
int main() {
std::vector<Question> questions = {
{"What is 2 + 2?", "4"},
{"What is the capital of France?", "Paris"},
{"Who wrote '1984'?", "George Orwell"}
};
QuizManager quizManager(questions);
quizManager.runQuiz();
QuizUI::displayResult(quizManager.getScore(), quizManager.getTotalQuestions());
return 0;
}
Question faqat savol uchun.
QuizManager esa asosiy logika uchun
QuizUI esa Natijalar uchun
✍4👍4🏆4⚡2🔥2