Hi Striver, I just wanted to thank you for your incredible DSA tutorials. Your clear explanations and thorough examples have made a huge difference in my understanding and proficiency. Thanks to your videos, I've become very proficient in DSA, which has significantly boosted my confidence and performance in my coding Keep up the great work, you're making a big difference!
I Have Learned this Technique in my Operating Systems Subject in Page Replacement Algorithms using Stack And Now I am in My 3-1 Semester Again visiting to the LRU cache in Data Structures seems the main use of it and Striver Has Very Well Explained it. And Now I am able to Do My own for LFU Cache. Thank God!!!
Hello ,Raj sir I hope this comment finds you well,as String is the most important topic in the dsa when it comes to placements,so it's a humble request from you to please make videos on strings .as my placements are going on and arrays and strings are much asked questions
Hi Bhaiya, Please complete Strings list from the sheet, and I think Strings question might need some more addition. When we can except String Playlist out ?
I respect you a lot striver literally but please take this suggestion into consideration, dont make videos for the topics you already made earlier We are eagerly waiting for strings series and recursion series
Bhaiya could you tell beforehand if you going upload any chapter(specsilly graph and dp) playlist which is already available in older playlist , so that instead of the older playlist I could wait a few more days for the newer playlist , like are you going to upload new playlist of graphs and dp , else i will continue with the older one only.
You mentioned that you will be using a DLL for solving this, but never explained that how did you come to a conclusion of using a DLL. It is also important to explain your choice of using any particular data structure or algorithm when someone is solving problems in an interview.
Because we are (i) adding elements to front (ii) removing from the back and adding to front In say singly LL, to remove the last element, we would have to travel the list taking O(n) time. Similarly in something like an array, to add an element to the front we would have to shift all the elements, taking O(n) time.
I m just not able to get that when we change order of elements so that it becomes the most recently used , why we are not changing the reference i.e. new location in map as now nodes location is changed....
My approach using dummy node class Node{ public: int key,val; Node* next; Node* prev; Node(int key,int val){ this->key = key; this->val = val; next = NULL; prev = NULL; } }; class LRUCache { int size,capacity; Node* head; Node* tail; unordered_map mp; public: LRUCache(int capacity) { size =0; this->capacity = capacity; head = new Node(-1,-1); tail = new Node(-1,-1); head->next = tail; tail->prev = head; }
void insertNodeAtEnd(Node* node){ // detachment of node Node* prevNode = node->prev; Node* nextNode = node->next; if(prevNode != NULL) prevNode->next = nextNode; // for new node prevNode would be null if(nextNode != NULL) nextNode->prev = prevNode; // for new node nextNode would be null
// attachment of node at end Node* tailPrev = tail->prev; tailPrev->next = node; node->prev = tailPrev; node->next = tail; tail->prev = node; }
int get(int key) { uj7i8if(mp.find(key) == mp.end()) return -1;
Bhaiya I am following your DSA series ek baar Java collection kie video daal dijiye bahut help ho jaaegi and bhaiya meine kaafi se question practice kre solve kre but confidence and logic dono build nhi ho paa rha... Need some guidance
~ 17:54 'we have touched someone, ... least recently used' --- we have to put in front because it is the most recently used and not the least recently used.
I was able to implement after watching approach of DLL and HashMap, Got stuck at the place where I was able to delete LRU from DLL, but could not find out how to remove that node from hashmap. Storing key, value pair in DLL Node is a great idea. Thanks :)
I'm from Pakistan and currently pursuing a degree in software engineering. Alongside my studies, I'm dedicating significant time to mastering data structures and algorithms (DSA). However, I'm uncertain if excelling in DSA alone is enough to secure a job at top tech companies like the one you work for. Do I need to develop additional skills, such as web, app, or game development, to increase my chances of success? Also, could you share your experience on when you started focusing on DSA-was it during your degree or afterward?
Hello everyone, my placements are starting in March 2025. I have started learning DSA using the TakeUforward SDE sheet and have completed the first 10 problems. However, I was able to understand only 3 of them, and I am struggling to build logic on my own. I am unsure if I am on the right track or where to start. Could you please give me some advice on how to approach solving problems independently and where I should begin? I have programming knowledge but need guidance. I am not aiming to join a big MNC company, but I want to prepare effectively.
youre doing just fine bro, you've just started, i've been there, im done with 50% of the sheet yet I struggle with intuition, dont worry just keep practicing comment your own notes in the code, it'll help in revising also whenever you approach a new approach, write it down somewhere
Hi Striver,
I just wanted to thank you for your incredible DSA tutorials. Your clear explanations and thorough examples have made a huge difference in my understanding and proficiency. Thanks to your videos, I've become very proficient in DSA, which has significantly boosted my confidence and performance in my coding
Keep up the great work, you're making a big difference!
how it, am started today, did u make notes?
@@abhimanyus8757 notes is compulsory
Finally the stack playlist is here!!! thankyou so much!
You are such a hardworking fellow .... seriously you inspire me everyday to work even harder to make myself better day by day...thanku striver😊
Bro I'm just looking for a review I've just started are you good enough now at the end?
Bhai kitna din lagega is karne me
just going to start older stack playlist
but got new playlist
thanks you striver !!!
Please consider doing a series on Strings.
I Have Learned this Technique in my Operating Systems Subject in Page Replacement Algorithms using Stack
And Now I am in My 3-1 Semester Again visiting to the LRU cache in Data Structures seems the main use of it and
Striver Has Very Well Explained it.
And Now I am able to Do My own for LFU Cache.
Thank God!!!
he has started taking yt channel for granted
Gem , just saw your explanation of first 13 min how to do it , and was able to implement it myself , in very less time
Hello ,Raj sir I hope this comment finds you well,as String is the most important topic in the dsa when it comes to placements,so it's a humble request from you to please make videos on strings .as my placements are going on and arrays and strings are much asked questions
@takeUforward We need a string series brother plz , as soon as possible.#A2Z DSA
currafterhead→prev = node; this step is missing in the insertafterhead function
Wanted to make a comment to point this out, but you got it!
My goat grinding hard at night
Very Nice explanation. Eagerly waiting for strings playlist
Oh my goodness! I found the optimal solution of it by myself. I have just come here to see the most optimal solution of it..😅
Hello raj bhaiya. Thank very much for taking your valuable and effort to teach DSA. Please create a video on Java Collection Frameworks.
The last video of a2z sheet was added 4 months ago. When will the next videos be uploaded?
Such a beautiful explanation!! Kudos!
If you Reached 13:35 skip to 20:45
Again restarted writing pseudocode
No , firstly he just wrote pseudo code , for second time it's cpp code😅😂
yup exactly
@@akhilesh_ku the first time also it is cpp heavy only bro.
Sir you are a good teacher in DSA.... I'm injoy this playlist
full stack playlist please 🙏🙏
Hi striver please bring playlist on string
Bhaiyya I am eagerly waiting for string playlist
Hi Bhaiya, Please complete Strings list from the sheet, and I think Strings question might need some more addition.
When we can except String Playlist out ?
I respect you a lot striver literally but please take this suggestion into consideration, dont make videos for the topics you already made earlier
We are eagerly waiting for strings series and recursion series
When will be the next video uploaded?
strings ke videos le aao bhai
Bhaiya String ka video kab tak aajaye, You said you will be uploding it before september
thank you striver for all these interesting stuffs
This video lasts longer than my relationship 😂
Wonderful Explanation
Bhaiya could you tell beforehand if you going upload any chapter(specsilly graph and dp) playlist which is already available in older playlist , so that instead of the older playlist I could wait a few more days for the newer playlist , like are you going to upload new playlist of graphs and dp , else i will continue with the older one only.
You mentioned that you will be using a DLL for solving this, but never explained that how did you come to a conclusion of using a DLL.
It is also important to explain your choice of using any particular data structure or algorithm when someone is solving problems in an interview.
Because we are (i) adding elements to front (ii) removing from the back and adding to front
In say singly LL, to remove the last element, we would have to travel the list taking O(n) time. Similarly in something like an array, to add an element to the front we would have to shift all the elements, taking O(n) time.
Thanks for the video. Which software is used for recording the video?
Will there be any difference if we delete from front and insert at the back? In terms of complexity?
Hello sir!! Please upload the heaps playlist asap
UNDERSTOOD, Radha Radha
I m just not able to get that when we change order of elements so that it becomes the most recently used , why we are not changing the reference i.e. new location in map as now nodes location is changed....
Bhaiya please string dal do
Bhaiya, would love to learn Binary Trees next, pls❤
And the stack playlist was amazing as always😍
Binary trees playlist is already completed, go check out
@@KeigoEdits I was talking about the new version of binary trees playlist
my code:
struct Node {
int val;
int key;
struct Node* next;
struct Node* prev;
Node(int value, int x) {
val = value;
key = x;
next = NULL;
prev = NULL;
}
};
class LRUCache {
public:
unordered_map m;
int size, currsize;
struct Node* head;
struct Node* tail;
LRUCache(int capacity) {
size = capacity;
head = NULL;
tail = NULL;
currsize = 0;
}
int get(int key) {
if (m[key] == NULL)
return -1;
struct Node* temp = m[key];
if (temp == head) {
return temp->val;
}
if(temp == tail){
tail = temp->prev;
}
temp->prev->next = temp->next;
if (temp->next != NULL) {
temp->next->prev = temp->prev;
}
temp->next = head;
head->prev = temp;
head = temp;
return head->val;
}
void put(int key, int value) {
if (m[key] == NULL) {
if (currsize < size) {
struct Node *temp = new Node(value, key);
m[key] = temp;
currsize ++;
if(head == NULL){
tail = temp;
head = temp;
return;
}
temp->next = head;
head->prev = temp;
head = temp;
return ;
} else {
struct Node *temp = new Node(value, key);
m[tail->key] = NULL;
if(head == tail){
tail = temp;
head = temp;
m[key] = head;
return ;
}
tail = tail->prev;
temp->next = head;
head->prev = temp;
head = temp;
head->val = value;
m[key] = head;
return ;
}
} else {
struct Node* temp = m[key];
if (temp == head) {
temp->val = value;
return;
}
if(temp == tail){
tail = temp->prev;
}
temp->prev->next = temp->next;
if (temp->next != NULL) {
temp->next->prev = temp->prev;
}
temp->next = head;
head->prev = temp;
temp->val = value;
head = temp;
return ;
}
return ;
}
};
/**
* Your LRUCache object will be instantiated and called as such:
* LRUCache* obj = new LRUCache(capacity);
* int param_1 = obj->get(key);
* obj->put(key,value);
*/
Thank You Striver , you really help me in trees and graph series!
does it should be afterhead->prev = node in insert funciton also?
My approach using dummy node
class Node{
public:
int key,val;
Node* next;
Node* prev;
Node(int key,int val){
this->key = key;
this->val = val;
next = NULL;
prev = NULL;
}
};
class LRUCache {
int size,capacity;
Node* head;
Node* tail;
unordered_map mp;
public:
LRUCache(int capacity) {
size =0;
this->capacity = capacity;
head = new Node(-1,-1);
tail = new Node(-1,-1);
head->next = tail;
tail->prev = head;
}
void insertNodeAtEnd(Node* node){
// detachment of node
Node* prevNode = node->prev;
Node* nextNode = node->next;
if(prevNode != NULL) prevNode->next = nextNode; // for new node prevNode would be null
if(nextNode != NULL) nextNode->prev = prevNode; // for new node nextNode would be null
// attachment of node at end
Node* tailPrev = tail->prev;
tailPrev->next = node;
node->prev = tailPrev;
node->next = tail;
tail->prev = node;
}
int get(int key) {
uj7i8if(mp.find(key) == mp.end())
return -1;
Node* node = mp[key];
insertNodeAtEnd(node);
return node->val;
}
void put(int key, int value) {
if(mp.find(key)!=mp.end()){
Node* node = mp[key];
node->val = value;
insertNodeAtEnd(node);
}
else{
Node* node = NULL;
if(size == capacity){
node = head->next;
mp.erase(node->key);
node->key = key;
node->val = value;
// insertNodeAtEnd(node);
}
else{
size++;
node = new Node(key,value);
// insertNodeAtEnd(node);
}
insertNodeAtEnd(node);
mp[key] = node;
}
}
};
/**
* Your LRUCache object will be instantiated and called as such:
* LRUCache* obj = new LRUCache(capacity);
* int param_1 = obj->get(key);
* obj->put(key,value);
*/
striver is legend
Bhaiya I am following your DSA series ek baar Java collection kie video daal dijiye bahut help ho jaaegi and bhaiya meine kaafi se question practice kre solve kre but confidence and logic dono build nhi ho paa rha... Need some guidance
~ 17:54 'we have touched someone, ... least recently used' --- we have to put in front because it is the most recently used and not the least recently used.
Sir can you please add the solutions in python too
I have to visit the third party website to read the code.
Very grateful to you for the series.
Striver bhaiya next topic string cover kariye pleaseee
legend is here
I was able to implement after watching approach of DLL and HashMap,
Got stuck at the place where I was able to delete LRU from DLL, but could not find out how to remove that node from hashmap.
Storing key, value pair in DLL Node is a great idea.
Thanks :)
I'm from Pakistan and currently pursuing a degree in software engineering. Alongside my studies, I'm dedicating significant time to mastering data structures and algorithms (DSA). However, I'm uncertain if excelling in DSA alone is enough to secure a job at top tech companies like the one you work for. Do I need to develop additional skills, such as web, app, or game development, to increase my chances of success? Also, could you share your experience on when you started focusing on DSA-was it during your degree or afterward?
Hello everyone, my placements are starting in March 2025. I have started learning DSA using the TakeUforward SDE sheet and have completed the first 10 problems. However, I was able to understand only 3 of them, and I am struggling to build logic on my own. I am unsure if I am on the right track or where to start. Could you please give me some advice on how to approach solving problems independently and where I should begin? I have programming knowledge but need guidance. I am not aiming to join a big MNC company, but I want to prepare effectively.
youre doing just fine bro, you've just started, i've been there, im done with 50% of the sheet yet I struggle with intuition, dont worry just keep practicing
comment your own notes in the code, it'll help in revising
also whenever you approach a new approach, write it down somewhere
Lru in processors done in maps ?? No way , is this some dsa course then ?
Why is it not a part of linked list playlist?
It uses put and get
can anyone help why should i use "m[key_] = head->next" under get function?
cant we just do the same thing using orderedDict, will take similar time and much shorter
code 360 not showing some of the code in the solved list which i was done before, can anyone tell about this
U missed LFU cache video?
He solved it before in an older video, you can see in the playlist
See down 😅 , TH-cam suggesting you
He has included in the playlist at last
C++ Implentation:
class Node {
public:
int key;
int val;
Node* prev;
Node* next;
Node(int key, int val) : key(key), val(val), prev(nullptr), next(nullptr) {}
};
class LRUCache {
private:
void deleteNode(Node* node){
if (node == nullptr) {
return;
}
node->prev->next = node->next;
node->next->prev = node->prev;
}
void insertAtHead(Node* node){
if (node == nullptr) {
return;
}
node->next = head->next;
head->next = node;
node->prev = head;
node->next->prev = node;
}
Node* head = new Node(-1, -1);
Node* tail = new Node(-1, -1);
public:
int capacity = 0;
unordered_map mp;
LRUCache(int capacity) {
head->next = tail;
tail->prev = head;
this->capacity = capacity;
mp.clear();
}
int get(int key) {
if(mp.find(key) != mp.end()){
// key exists
Node* node = mp[key];
deleteNode(node);
insertAtHead(node);
return node->val;
} else{
// key doesnt exist
return -1;
}
}
void put(int key, int value) {
if(mp.find(key) != mp.end()){
// key exists update
Node* node = mp[key];
node->val = value;
deleteNode(node);
insertAtHead(node);
} else{
Node* node = new Node(key, value);
// key doesnt exist add
if(mp.size() == capacity){
//remove least recent
Node* lru = tail->prev;
deleteNode(lru);
mp.erase(lru->key);
insertAtHead(node);
mp[key] = head -> next;
} else{
//add
insertAtHead(node);
mp[key] = head -> next;
}
}
}
};
mojj krdi bhaiya
UNDERSTOOD;
upload next series cmmon bro
Striver 💯🙏💗
thanks striver
sir plz upload the next playlist of heap
kya haal h striver bhai k👀👀 ?
can you pls give python code link..
Here, you didn't handle the case where the key could be same be value might be different.
Hello sir I will go in IIT ropar what language which I do start?
start with c and continue with c++
start with c++ itself
cpp
Hindi
@@Akshay-c8g I am not understand what do you tell
he forgot change afterhead->prev = node in insert funciton
thanks sir
string krwado
❤
The editor forgot something to clip
First Comment
I'm the first one
please explain c++ written don't write suedo code
Please learn how to write code by yourself instead
Stiver where are your hairs going😢
Looks like our brother is getting older
curr_after_head->prev=node; in addAfterHead Func