L19. Find all Pairs with given Sum in DLL

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 พ.ย. 2024

ความคิดเห็น • 76

  • @monishrainy8568
    @monishrainy8568 4 หลายเดือนก่อน +13

    Thank You stiver. I am able to come up with the intuition on my own. I have completed all the LinkedList question. Thank you for your help

  • @moonlight-td8ed
    @moonlight-td8ed 5 หลายเดือนก่อน +10

    i was following your strivers playlist (a-z sde sheet) and did most of the linked list questions entirely by myself without watching soln videos, thanks to you brother, its been 10 days and I have solved 125 / 455

    • @sereneguy1804
      @sereneguy1804 5 หลายเดือนก่อน +3

      hey bro... wanna team up? we can encourage each other and we can have friendly competition spirit as well.

    • @BadisaShalivahana
      @BadisaShalivahana 3 หลายเดือนก่อน

      ​@@sereneguy1804can I join guys

    • @furor05
      @furor05 3 หลายเดือนก่อน

      @@BadisaShalivahana can i join?

    • @gladiator8316
      @gladiator8316 29 วันที่ผ่านมา

      ​@@sereneguy1804 can we ?

  • @mahimagautam1810
    @mahimagautam1810 10 หลายเดือนก่อน +6

    **Correction Required**
    public static boolean findPair(Node head, int k) {
    // Write your code here.
    }
    Java Compiler problem, expecting boolean but the test cases are designed for pair of integers.

    • @LukmaansStack
      @LukmaansStack 8 หลายเดือนก่อน

      yes

    • @animeislob3620
      @animeislob3620 8 หลายเดือนก่อน

      have u got the solution?

    • @mahimagautam1810
      @mahimagautam1810 8 หลายเดือนก่อน

      @@animeislob3620already posted here in above comment

    • @animeislob3620
      @animeislob3620 8 หลายเดือนก่อน

      @@mahimagautam1810 ohk thnx

  • @codeguy21
    @codeguy21 ปีที่แล้ว +6

    great video striver

  • @Factzspeaker234
    @Factzspeaker234 10 หลายเดือนก่อน +6

    A request to Striver , please donot take all questions from code studio ....They donot accept java solutions always , like in this prob they have given a boolean function to return the pair of nodes , their are also class related error when java code is submitted , The same code works on other coding platforms but not on code studio .....Please Pick questions from leetcode or gfg ...Thank you!

  • @bharanitharan1220
    @bharanitharan1220 11 หลายเดือนก่อน +20

    No one thinks about hashing 😅

    • @TON-108
      @TON-108 10 หลายเดือนก่อน +17

      // Bro i have done using Hashing
      vector findPairs(Node* head, int k)
      {
      vectorvp;
      Node* temp = head;
      unordered_mapmp;
      while(temp != nullptr)
      {
      int x = k-(temp -> data);
      if(mp.find(x) != mp.end())
      {
      vp.push_back({x, temp->data});
      }
      else{
      mp[temp->data]++;
      }
      temp = temp -> next;
      }
      return vp;
      }

    • @TirthPatel-c8k
      @TirthPatel-c8k 5 หลายเดือนก่อน

      What is concept?

    • @graviton001
      @graviton001 3 หลายเดือนก่อน +2

      I did with hashing 😅

    • @codingwithsiva6534
      @codingwithsiva6534 หลายเดือนก่อน +2

      Hashing takes more space to compute the larger test cases

  • @DecodeWithSatendra-shorts
    @DecodeWithSatendra-shorts หลายเดือนก่อน

    Simple Python Solution Time Complexity: O(N)
    def findPairsWithGivenSumOptimal(head, target):
    temp = head
    ans = []
    #find last node
    while(temp.next):
    temp = temp.next
    right = temp
    left = head
    while(left.data < right.data):
    num = left.data + right.data
    if num == target:
    ans.append([left.data, right.data])
    left = left.next
    right = right.prev
    elif num > target:
    right = right.prev
    else:
    left = left.next
    return ans

  • @SharathS-s9i
    @SharathS-s9i 15 วันที่ผ่านมา +2

    what if the sorted array has repeated number , for eg: 1,2,3,3,4,5,5,6 target is 6

  • @chirag71269
    @chirag71269 2 หลายเดือนก่อน

    THANK YOU STRIVER

  • @mahimagautam1810
    @mahimagautam1810 10 หลายเดือนก่อน +2

    GFG Soln:
    class Solution {
    public static Node findtail(Node head) {
    Node temp = head;
    while(temp.next!=null){
    temp = temp.next;
    }
    return temp;
    }

    public static ArrayList findPairsWithGivenSum(int target, Node head) {
    // code here
    Node left = head;
    Node right = findtail(head);
    ArrayList ans = new ArrayList();
    while(left.data

  • @naturesrevolution
    @naturesrevolution 3 หลายเดือนก่อน +2

    for brute force and optimal approach we are saving pair of element which should be space complexity of O(N)?

    • @furor05
      @furor05 3 หลายเดือนก่อน +1

      yeah kind of. but that is only for returning the answer. its not actually getting used to solve the problem. so O(n) if we see it as a whole..but to solve the problem its O(1)

  • @banothutharun2743
    @banothutharun2743 9 หลายเดือนก่อน

    Superb sir

  • @ganeshvhatkar9253
    @ganeshvhatkar9253 9 หลายเดือนก่อน +1

    Understood : )

  • @DeadPoolx1712
    @DeadPoolx1712 2 หลายเดือนก่อน

    UNDERSTOOD;

  • @rushidesai2836
    @rushidesai2836 7 หลายเดือนก่อน

    Smart solution!

  • @YourCodeVerse
    @YourCodeVerse 10 หลายเดือนก่อน

    Understood✅🔥🔥

  • @Mel-up7un
    @Mel-up7un หลายเดือนก่อน

    For brute force can we not do it in a single loop? And set conditions for when sum exceeds the key etc ..correct me if I'm wrong

  • @manga_mania.
    @manga_mania. ปีที่แล้ว

    Thank you striver

  • @soumyadeepsaha1765
    @soumyadeepsaha1765 ปีที่แล้ว +2

    sir wont it be left->datadata as the while loops condition if sum=6 and left is at 3 and right is at 3 if their are repeatation of numbers

    • @jaskeeratahluwalia5722
      @jaskeeratahluwalia5722 11 หลายเดือนก่อน +1

      not possible bro, its given in the question that the values are distinct

  • @Learnprogramming-q7f
    @Learnprogramming-q7f 8 หลายเดือนก่อน

    Thank you Bhaiya

  • @sahelidebnath5085
    @sahelidebnath5085 9 หลายเดือนก่อน +1

    for while loop, it may traversing all the nodes but overall while loop will run for n/2 times.
    Please let me know whether my understanding is correct or not?

    • @animeislob3620
      @animeislob3620 8 หลายเดือนก่อน

      yes i had the same doubt, i have dry run many test cases and its ~O(n/2), so yeah we're right 🤜🤛

    • @natanshisharma8828
      @natanshisharma8828 7 หลายเดือนก่อน +2

      @@animeislob3620 No its wrong in previous lectures he said that if two variables in loop are travelling then O(2*n/2) which becomes O(N)

  • @nayankhuman1043
    @nayankhuman1043 2 หลายเดือนก่อน

    understood :)

  • @Lucifer0872
    @Lucifer0872 ปีที่แล้ว +2

    Hail Mary full of grace

  • @codeman3828
    @codeman3828 9 หลายเดือนก่อน

    Undertsood

  • @MJBZG
    @MJBZG 4 หลายเดือนก่อน

    wrote the same code before watching the video

  • @harshuke5831
    @harshuke5831 11 หลายเดือนก่อน

    Understood

  • @subee128
    @subee128 11 หลายเดือนก่อน

    Thanks

  • @harshitjaiswal9439
    @harshitjaiswal9439 8 หลายเดือนก่อน

    understood

  • @aditiapar9355
    @aditiapar9355 4 หลายเดือนก่อน

    space complexity in brute fore must be n because of extra data structure right?

  • @SamyakSharma-oy1bv
    @SamyakSharma-oy1bv 19 วันที่ผ่านมา

    respect++;

  • @NehaKadam-t7c
    @NehaKadam-t7c 11 หลายเดือนก่อน +1

    Can you give code o brute force in java

  • @toushikbanik8452
    @toushikbanik8452 3 หลายเดือนก่อน

    It is a O(2N) solution. but the question in the Sheet asked us to solve it in O(N) and if i use this solution then it is asking me to reduce the TC.

    • @furor05
      @furor05 3 หลายเดือนก่อน

      theres no way to find the tail in O(1). check the sheet if the tail is already provided. then only we can reduce to O(N)

    • @toushikbanik8452
      @toushikbanik8452 3 หลายเดือนก่อน

      @@furor05 yap but it is not submitting.

    • @MetaDude
      @MetaDude หลายเดือนก่อน

      @@furor05 we dont need to find the tail i think

  • @MaheshGautam-y8i
    @MaheshGautam-y8i 11 หลายเดือนก่อน

    i know there are distinct data; but why there is error in while(left !=right )

    • @tejaswaniguttula5961
      @tejaswaniguttula5961 7 หลายเดือนก่อน

      @user-om1zx4ox4h
      Because,
      Consider this example
      1 2 3 4 9
      sum= 5
      Now left is at starting node and right is at ending node.
      While checking the conditions,
      1st time
      1 + 9 = 10
      It is greater than 5
      So, decrement right pointer by 1.
      2nd time,
      1+ 4 = 5
      It is equal to 5 .
      So, add it to the vector.
      And increment left pointer by 1 and decrement right pointer by 1.
      3rd time,
      2 + 3 = 5
      It is equal to the 5.
      So, add it to the vector.
      And increment left pointer by 1 and decrement right pointer by 1.
      4th time,
      left pointer is at node 3 and right pointer is at node 2
      Actually left and right pointers are crossed. However sum is 5
      But actually this is duplicate sum if still you want to add it you.
      And increment left pointer by 1 and decrement right pointer by 1.
      5th time,
      Left is at 4 and right is at 1
      Again add it if you want but it is duplicate.
      And increment left pointer by 1 and decrement right pointer by 1.
      Now left is at 9 and right is at nullptr but still we are adding it. This will raise run time error.
      Because of the above reason,
      We should consider as
      while(left

    • @gladiator8316
      @gladiator8316 29 วันที่ผ่านมา

      ​@@tejaswaniguttula5961thnks a lot bro...

  • @mohitejaikumar
    @mohitejaikumar 6 หลายเดือนก่อน

    GOD

  • @iamnoob7593
    @iamnoob7593 8 หลายเดือนก่อน

    US

  • @AkashKumarTiwary-u4b
    @AkashKumarTiwary-u4b 6 หลายเดือนก่อน

    god

  • @jagadeeshp1163
    @jagadeeshp1163 11 หลายเดือนก่อน

    IF we have duplicate vallues does this work

    • @priyanshkumar17
      @priyanshkumar17 10 หลายเดือนก่อน +1

      No the optimized approach doesn't work for duplicates since we're moving both left & right when the sum matches. In the actual problem on CodeStudio, it is mentioned that the sorted DLL contains DISTINCT positive integers.

  • @deepanshusoni613
    @deepanshusoni613 9 หลายเดือนก่อน +1

    #include
    using namespace std;
    struct node
    {
    int data;
    node * next;
    node * prev;
    node(int data)
    {
    this->data=data;
    next=NULL;
    prev=NULL;
    }
    };
    node * insertNodeInDoublyLinkedList(node* head, int data) {
    node* newnode = new node(data);
    if (head != NULL) {
    newnode->next = head;
    head->prev = newnode;

    }
    head = newnode;
    newnode->prev = NULL;
    return head;
    }
    node * pairofsum(node * head, int n )
    {
    if(head==NULL || n==0) return head;
    node * newlisthead=NULL;
    node * temp=head;

    int sum=0;
    while (temp->next!=nullptr)
    {
    node *temp1=temp->next;
    while(temp1 !=NULL )
    {
    sum=temp->data+temp1->data;

    if(n==sum)
    {
    newlisthead=insertNodeInDoublyLinkedList(newlisthead,temp->data);
    newlisthead=insertNodeInDoublyLinkedList(newlisthead,temp1->data);

    }
    temp1=temp1->next;

    }
    temp=temp->next;

    }

    return newlisthead;

    }
    void printdoublylist(node * head)
    {
    node *temp=head;
    while(temp!=NULL)
    {
    cout

  • @jeevanreddy746
    @jeevanreddy746 11 หลายเดือนก่อน +2

    Node* findTail(Node* head) {
    Node* tail = head;
    while (tail->next != NULL)
    tail = tail->next;
    return tail;
    }
    vector findPairs(Node* head, int k) {
    vector ans;
    if (head == NULL)
    return ans;
    Node* left = head;
    Node* right = findTail(head);
    while (left->data < right->data) {
    if (left->data + right->data == k) {
    ans.push_back({left->data, right->data});
    left = left->next;
    right = right->prev;
    } else if (left->data + right->data < k) {
    left = left->next;
    } else {
    right = right->prev;
    }
    }
    return ans;
    }

  • @theguywhofilmss
    @theguywhofilmss 9 หลายเดือนก่อน

    //given a sorted Linkedlist
    #include
    using namespace std;
    //Node class
    class Node {
    public:
    int data;
    Node *prev;
    Node *next;
    Node() {
    this->data = 0;
    this->prev = NULL;
    this->next = NULL;
    }
    Node(int data) {
    this->data = data;
    this->prev = NULL;
    this->next = NULL;
    }
    Node (int data, Node *next, Node *prev) {
    this -> data = data;
    this -> prev = prev;
    this -> next = next;
    }
    };
    //we will perform two pointer approach
    vector findPairs(Node* head, int k)
    {
    vector ans;
    //putting two pointer
    Node* left = head;
    Node* right = head;
    //now placing right pointer to the end of LL
    while(right->next != nullptr){
    right = right->next;
    }
    //now loop will run till = left->data data , else loop breaks
    while ( left->data < right->data)
    {
    //if we get the data == k
    if(left->data + right->data == k){
    pair p;
    p.first = left->data;
    p.second = right->data;
    ans.push_back(p);
    //moving ptr together
    left = left->next;
    right = right->prev;
    }
    //sum is > k
    else if(left->data + right->data > k){
    right = right->prev;//move right one less
    }
    else{
    //sum is < k
    left = left->next;
    }
    }
    return ans;

    }

  • @oyeesharme
    @oyeesharme 4 หลายเดือนก่อน

    thank you bhaiya

  • @sibiranganath
    @sibiranganath 7 หลายเดือนก่อน

    Understood

  • @chiragbansod8252
    @chiragbansod8252 8 หลายเดือนก่อน

    understood

  • @hardikpatel352
    @hardikpatel352 6 หลายเดือนก่อน

    Understood

  • @abhinanda7049
    @abhinanda7049 7 หลายเดือนก่อน

    understood

  • @dewanandkumar8589
    @dewanandkumar8589 6 หลายเดือนก่อน

    Understood

  • @pradipkumarmukhi
    @pradipkumarmukhi 6 หลายเดือนก่อน

    understood

  • @RajNamdev_19
    @RajNamdev_19 3 หลายเดือนก่อน +1

    Understood

  • @MayankSengar-y3g
    @MayankSengar-y3g 5 หลายเดือนก่อน

    understood

  • @abhinavabhi3568
    @abhinavabhi3568 หลายเดือนก่อน

    Understood

  • @MJBZG
    @MJBZG 4 หลายเดือนก่อน

    understood

  • @YPZanzarukiya
    @YPZanzarukiya 4 หลายเดือนก่อน

    understood

  • @Ayeshasingh720
    @Ayeshasingh720 4 หลายเดือนก่อน

    understood