1.4 Hashing / Frequency Counting
Demo · approach · কোড — আগে নিজে চেষ্টা, আটকালে খুলুন
Demo: Longest Consecutive Sequence — LC 128 (Medium)
Statement (Demo): unsorted integer array nums দেওয়া — সবচেয়ে দীর্ঘ consecutive sequence (পর পর সংখ্যা) কতটুকু বলুন। O(n) সময়ে সমাধান করতে হবে।
উদাহরণ: [100,4,200,1,3,2] → 4 | ⚡ n ≤ 10⁵, -10⁹ ≤ nums[i] ≤ 10⁹
Approach: সব সংখ্যা Set-এ ঢুকান। কেবল সেই সংখ্যা থেকে গোনা শুরু করুন যার x-1 নেই (মানে সেটাই sequence-এর শুরু) — তাহলে প্রতিটা এলিমেন্ট সর্বোচ্চ দুবার দেখা হয়, sort ছাড়াই O(n)।
function longestConsecutive(nums) {
const set = new Set(nums);
let best = 0;
for (const x of set) {
if (set.has(x - 1)) continue; // sequence-এর শুরু না হলে skip
let len = 1;
while (set.has(x + len)) len++;
best = Math.max(best, len);
}
return best;
}
Complexity: Time O(n), Space O(n)
প্রবলেম
- Two Sumplan · দিন ০০১LC 1(complement lookup — সবার আগে এটা)
Statement: integer array
numsও integertargetদেওয়া — দুটো সংখ্যার index বের করুন যাদের যোগফলtarget। একটাই solution আছে, একই index দুবার ব্যবহার করা যাবে না।
উদাহরণ:nums=[2,7,11,15], target=9→[0,1]| ⚡n ≤ 10⁴নোট · ফাঁকা
- Group Anagramsplan · দিন ০২৯LC 49(sorted string / freq-signature key)
Statement: string array
strsদেওয়া — anagram-গুলোকে একসাথে গ্রুপ করুন। উত্তরের ক্রম যেকোনো হতে পারে।
উদাহরণ:["eat","tea","tan","ate","nat","bat"]→[["bat"],["nat","tan"],["ate","eat","tea"]]| ⚡n ≤ 10⁴নোট · ফাঁকা
- Valid Anagramplan · দিন ০০২LC 242
Statement: দুটো string
sওtদেওয়া —tযদিs-এর anagram হয়true, নাহলেfalsereturn করুন। (Anagram মানে same character, same count।)
উদাহরণ:s="anagram", t="nagaram"→true| ⚡len ≤ 5×10⁴নোট · ফাঁকা
- First Unique Character in a StringLC 387
Statement: lowercase string
sদেওয়া — প্রথম non-repeating character-এর index বের করুন। না থাকলে-1।
উদাহরণ:s="leetcode"→0| ⚡len ≤ 10⁵নোট · ফাঁকা
- First Missing PositiveLC 41(Hard — Meta High; index-as-hash trick, O(1) space)
Statement: unsorted integer array
numsদেওয়া — সবচেয়ে ছোট missing positive integer বের করুন। O(n) time ও O(1) extra space।
উদাহরণ:[3,4,-1,1]→2| ⚡n ≤ 10⁵,-2³¹ ≤ nums[i] ≤ 2³¹-1নোট · ফাঁকা
- Max Points on a LineLC 149(Hard — Google High; slope-কে hashmap key বানানো)
Statement: 2D plane-এ
pointsarray দেওয়া — একটা সরলরেখার উপর সর্বোচ্চ কতটা point থাকতে পারে বলুন।
উদাহরণ:[[1,1],[2,2],[3,3]]→3| ⚡n ≤ 300নোট · ফাঁকা
- Find the Index of the First Occurrence (strStr)LC 28(advanced string matching: KMP/Z-algorithm শেখার entry point)
Statement: দুটো string
haystackওneedleদেওয়া —haystack-এneedle-এর প্রথম occurrence-এর index বের করুন। না থাকলে-1।
উদাহরণ:haystack="sadbutsad", needle="sad"→0| ⚡len ≤ 10⁴নোট · ফাঁকা