4 Sum | Brute - Better - Optimal with Codes

Поделиться
HTML-код
  • Опубликовано: 4 июл 2024
  • Problem Link: bit.ly/3It5SyP
    Notes/C++/Java/Python codes: takeuforward.org/data-structu...
    We have solved the problem, and we have gone from brute force and ended with the most optimal solution. Every approach's code has been written in the video itself. Also, we have covered the algorithm with intuition.
    Full Course: bit.ly/tufA2ZYt
    You can follow me across social media, all my handles are below:
    Linkedin/Instagram/Telegram: linktr.ee/takeUforward
    0:00 Introduction of Course
    00:54 Problem Statement
    02:24 Brute force approach
    03:08 Code
    05:38 Complexity
    06:14 Better approach
    11:31 Code
    13:22 Complexity
    14:54 Optimal approach
    21:59 Code
    27:04 Complexity

Комментарии • 249

  • @takeUforward
    @takeUforward  10 месяцев назад +12

    Please watch our new video on the same topic: ruclips.net/video/eD95WRfh81c/видео.html

    • @uniqueyuvrajgaming3392
      @uniqueyuvrajgaming3392 5 месяцев назад

      You said it is O(n3) but sorting will take some time to what about that?

    • @vaibhavagarwal1479
      @vaibhavagarwal1479 5 месяцев назад

      ​@@uniqueyuvrajgaming3392nlog n is basically negligible in comparision of n3 thats why is it not included

    • @user-hb2ex3wg9k
      @user-hb2ex3wg9k 24 дня назад

      Sir,I have one confusion about the time complexity.
      Inside the innermost loop we have the insert operation in set which take O(logN) in the worst case considering we have n elements inside the side.
      If we are taking the worst case means that the if(sum==target) is true for each condition.Then Why we are not considering it's complexity.
      According to my calculation,Time Complexity is O(N^3(logN)).
      Please sir reply.
      Thank you in Advance.

    • @user-hb2ex3wg9k
      @user-hb2ex3wg9k 24 дня назад +1

      @@uniqueyuvrajgaming3392 Sorting will have always 4 elements which will take constant time.

  • @shailesh_rajpurohit
    @shailesh_rajpurohit 11 месяцев назад +137

    Note: 0:42 Make sure you watch the 3Sum before doing the 4Sum .
    🙂

  • @yashsharma6396
    @yashsharma6396 Год назад +164

    Excited to do 4sum after completing 3sum yesterday

    • @gareer2436
      @gareer2436 Год назад +36

      Damn bro include me next time

    • @yashsharma6396
      @yashsharma6396 Год назад +31

      ​@@gareer2436 you know how to bend?😂😂

    • @gregorirasputin659
      @gregorirasputin659 Год назад +19

      Yaar tum log bohat tharki ho 😂

    • @gareer2436
      @gareer2436 Год назад

      @@yashsharma6396 no but I know what to do when someone bends...😏
      Lay them down and..
      Massage their backs of course!

    • @gareer2436
      @gareer2436 Год назад +13

      @@gregorirasputin659 ma to sath me problem solve krne ki baat kr raha tha bro... tum kya soch liye?😏

  • @jatinsareen7771
    @jatinsareen7771 Год назад +61

    3 sum was awesome, 4 sum was fantastic!!!!

  • @takeUforward
    @takeUforward  Год назад +61

    Do give us a like and subscribe, it won't cost you anything, but it will highly motivate us to create more such type of videos :)

    • @rishav144
      @rishav144 Год назад +4

      striver ..king of DSA

    • @shra1
      @shra1 Год назад

      The if condition inside while to check if(k

    • @codemania2878
      @codemania2878 11 месяцев назад

      sir which whiteboard pen app you use for explain the code

    • @itsmrcrazy7670
      @itsmrcrazy7670 10 месяцев назад

      hey striver you forgot to add time complexity required for --sorting array --optimal approach so it will be O(NlogN) + O(N^2). plz update

    • @user-lz1rv3em5u
      @user-lz1rv3em5u 10 месяцев назад

      @@codemania2878 He is using an iPad and its default Notes app​

  • @Akash-yr2if
    @Akash-yr2if 11 месяцев назад +28

    0:44 Striver's Smile Says it all

    • @brij2695
      @brij2695 11 месяцев назад +1

      you got my point bro😁

    • @AkOp-bf9vm
      @AkOp-bf9vm Месяц назад

      bhai bhai🫡🫡😂. what a detailing bro

  • @arujgarg7267
    @arujgarg7267 Год назад +36

    Finally did 4 sum, amazing experience

    • @gareer2436
      @gareer2436 Год назад +9

      Can you elaborate your experience? Asking for a friend

    • @catalyst8654
      @catalyst8654 Год назад +1

      can you explain about your experience...🙂🙂

    • @leisuretime4198
      @leisuretime4198 Год назад

      @@catalyst8654 🤣🤣

    • @Akash-yr2if
      @Akash-yr2if Год назад +1

      Would you take a moment to share your experience with us.

  • @avinashkumar2411
    @avinashkumar2411 Год назад +6

    You should not take I upto

  • @selvaarumugam370
    @selvaarumugam370 Год назад +8

    the way you explain the two pointer approaches and the use of them makes two pointer approach the easiest way to solve a problem. I fell in love the way you are teaching these concepts.

  • @kanyapandey
    @kanyapandey Год назад

    Thanks a ton for explaining in simplest way 🙏🙏🙏🙏🙏🙏

  • @mehulthuletiya497
    @mehulthuletiya497 Год назад +30

    00:54 Problem Statement
    02:24 Brute force approach
    03:08 Code
    05:38 Complexity
    06:14 Better approach
    11:31 Code
    13:22 Complexity
    14:54 Optimal approach
    21:59 Code
    27:04 Complexity

    • @takeUforward
      @takeUforward  Год назад +39

      You watch all the videos? I see you daily updating me with timestamps, massive thanks for that.

    • @mehulthuletiya497
      @mehulthuletiya497 Год назад +22

      ​​@@takeUforward Yes, I watch the all the videos. After the watching video i comment the Timestamp.
      Recursion and Backtracking series is the one of the best explanation and understanding with your teaching style. I completed 2 days ago.

    • @salihedneer8975
      @salihedneer8975 9 месяцев назад +1

      @@takeUforward striver please update timestamp in disucssion so that ppl can access it easily

  • @nquanta1548
    @nquanta1548 Год назад

    Thankyou for the wonderful series ❤️🔥

  • @AbhishekKumar-cv1dh
    @AbhishekKumar-cv1dh Год назад

    Understood beautifully!! 🔥❤

  • @hareshnayak7302
    @hareshnayak7302 3 месяца назад

    Understood,Thanks striver for this amazing video.

  • @bkmeher9005
    @bkmeher9005 Месяц назад

    uffffffff.... understood , bahut bhala se bujhi hela bhai

  • @dishankbaid05
    @dishankbaid05 Год назад +33

    The consistency level of striver is really the source of motivation 🔥.

  • @ra-onegaming1383
    @ra-onegaming1383 Год назад

    I have done this question using subsequence technique thanks u raj sir 😊 u teach really simple

  • @praveennemagoudar3442
    @praveennemagoudar3442 2 месяца назад

    wow,....wow....wah..awesome expaination. undestood bro..hatsoff to you.

  • @joeljacob4685
    @joeljacob4685 10 месяцев назад

    Understood!! Thanks for the nice explanation

  • @sarangkumarsingh7901
    @sarangkumarsingh7901 3 месяца назад

    Awesome Lecture Sir............

  • @impalash_ag
    @impalash_ag 2 дня назад +1

    Hi Raj, there are 2 slight mistakes in your optimal solution.
    1: The 1st for loop will run till n-3 and 2nd for loop will run till n-2 instead of n, because we need to allocate last 2 elements to our two pointers and as per your code when i=n-2, j becomes n-1 (j=i+1=n-2+1) and num[k] throws out of bound exception, because k becomes n(k=j+1)
    2: We could also increment low and decrement high when sumtarget respectively until there are duplicates for code to be more optimised.
    3: Here's the more readable code(JAVA):
    class Solution {
    public List fourSum(int[] nums, int target) {
    int n = nums.length;
    List result = new ArrayList();
    Arrays.sort(nums);
    for(int i=0; i

    • @_Arunvfx
      @_Arunvfx 2 дня назад +1

      hatsoff bro i was confused for 4 hours for optimal solution that passes all test cases.after seeing your comment it helped me to understand it.thankyou :)

    • @impalash_ag
      @impalash_ag 2 дня назад

      @@_Arunvfx glad you finally understood it. Keep pushing forward 😃

  • @gauravsoni5424
    @gauravsoni5424 5 месяцев назад

    best explanation on you tube

  • @adebisisheriff159
    @adebisisheriff159 7 месяцев назад

    Striver..... you are amazing.................................... Thanks so much bro

  • @footballcreativeeverywhere260
    @footballcreativeeverywhere260 Год назад +1

    Great bhaiya ❤️🇮🇳 , ready for next one

  • @AniketKumar-hf2bo
    @AniketKumar-hf2bo 5 месяцев назад

    understood,thnx for the amazing video ❤❤❤❤👌👌💕💕

  • @bikramprajapati5358
    @bikramprajapati5358 Год назад

    Amazing Explanation

  • @MdKaif-bf3nz
    @MdKaif-bf3nz 23 дня назад +1

    Thank you so much Striver brother, you taught the 3sum and 4sum very clearly. 💀💀
    ok jokes apart lol, this series is just too good, i can literally find every concept DSA related a lot of questions of each and every concept.

  • @shivanichaudhary1427
    @shivanichaudhary1427 3 месяца назад

    Amazing, thankyou!

  • @satheeshbhukya9970
    @satheeshbhukya9970 9 месяцев назад

    excellent question....

  • @konankikeerthi
    @konankikeerthi 23 дня назад

    Thank you bro. Understood

  • @ashishashish1403
    @ashishashish1403 16 дней назад +1

    Whole video is about 4 sum but 0:40 to 0:50 is wholesome

  • @omkarsawant9267
    @omkarsawant9267 5 месяцев назад +1

    Time Complexity: O(n log n)
    Space Complexity: O(n)
    #include
    #include
    #include
    using namespace std;
    vector fourSum(vector &nums, int target)
    {
    // sort the array
    sort(nums.begin(), nums.end());
    // initialize result vector
    vector result;
    int n = nums.size();
    // iterate through array with two pointers
    for (int i = 0; i < n; i++)
    {
    // skip duplicate elements
    if (i > 0 && nums[i] == nums[i - 1])
    {
    continue;
    }
    for (int j = i + 1; j < n - 2; j++)
    {
    // skip duplicate elements
    if (j > i + 1 && nums[j] == nums[j - 1])
    {
    continue;
    }
    // use two pointers for remaining elements
    int left = j + 1;
    int right = n - 1;
    while (left < right)
    {
    int currentSum = nums[i] + nums[j] + nums[left] + nums[right];
    if (currentSum == target)
    {
    result.push_back({nums[i], nums[j], nums[left], nums[right]});

    // skip duplicate elements
    while (left < right && nums[left] == nums[left + 1])
    {
    left++;
    }
    while (left < right && nums[right] == nums[right - 1])
    {
    right--;
    }
    // Move pointers
    left++;
    right--;
    }
    else if (currentSum < target)
    {
    // If the sum is less than the target, move the left pointer to the right
    left++;
    }
    else
    {
    // If the sum is greater than the target, move the right pointer to the left
    right--;
    }
    }
    }
    }
    return result;
    }
    int main()
    {
    // Example usage
    vector nums = {1, 0, -1, 0, -2, 2};
    int target = 0;
    // Call the fourSum function
    vector result = fourSum(nums, target);
    // Print the unique quadruplets
    for (const auto &quadruplet : result)
    {
    cout

  • @DR-mq1le
    @DR-mq1le 11 месяцев назад

    understood , thank you!

  • @cinime
    @cinime Год назад +1

    Understood! Super wonderful explanation as always, thank you so so much for your effort!!

  • @raghavkansal3765
    @raghavkansal3765 11 месяцев назад

    you are the best 🧿🧿

  • @AbhimanyuKumar-pw3je
    @AbhimanyuKumar-pw3je 8 месяцев назад +3

    if u are stuck at test case 281 in leet code then :-
    class Solution {
    public:
    vector fourSum(vector& nums, int target) {
    int n =nums.size();
    vector ans;
    sort(nums.begin(),nums.end());
    for(auto it:nums)
    cout

  • @UECAshutoshKumar
    @UECAshutoshKumar Месяц назад

    Thank you!

  • @user-nb1ye5tf1r
    @user-nb1ye5tf1r 6 месяцев назад

    Nice to do 4 sum.

  • @senseiAree
    @senseiAree 9 месяцев назад

    Understood ❤

  • @ravitejachandana6199
    @ravitejachandana6199 15 дней назад

    understood !

  • @gregorirasputin659
    @gregorirasputin659 Год назад +6

    Nice explanation. But the title is a bit too sus don't you think?

  • @hiteshpanchal5772
    @hiteshpanchal5772 11 месяцев назад

    Thxu striver bhai 😊😊

  • @per.seus._
    @per.seus._ 11 месяцев назад +1

    understood ❤

  • @asgarh4589
    @asgarh4589 Год назад

    People who are aware of 2 pointer approach, watch from 14:56, saves a lot of time.

  • @simonchristopherp3260
    @simonchristopherp3260 4 месяца назад

    Understood!

  • @hemantpatel1413
    @hemantpatel1413 18 дней назад

    Understood.

  • @lakshmiprasanna7058
    @lakshmiprasanna7058 Год назад

    Understood 💯💯💯

  • @user-sm7zo5zd9t
    @user-sm7zo5zd9t 4 месяца назад

    Understood🤙

  • @himaniupadhyay8201
    @himaniupadhyay8201 10 месяцев назад +1

    Thanks Lord

  • @VishalPanwar-df5ek
    @VishalPanwar-df5ek 11 месяцев назад

    Understood Srtiver!

  • @rajatpatra2593
    @rajatpatra2593 Год назад

    Understood ❤️

  • @helloworld2054
    @helloworld2054 10 месяцев назад +5

    This has to be the horniest coding problem 🌚

  • @dhairyashiil
    @dhairyashiil Год назад

    Thank You : )

  • @RohitKumar-dy2gc
    @RohitKumar-dy2gc 2 месяца назад

    easy peasy✨✨

  • @Str13011
    @Str13011 Год назад

    Keep going 👍

  • @user-st9ff2vh6l
    @user-st9ff2vh6l 6 месяцев назад

    Understood

  • @her_soulmate
    @her_soulmate 10 месяцев назад

    Understood 🎉

  • @sanayaagarwal1907
    @sanayaagarwal1907 4 месяца назад

    understood👍

  • @ankitadas5833
    @ankitadas5833 Год назад +2

    Though I am little bit late, in this A to Z DSA Playlist But I covered All previous Videos within a week & now just completed 4 Sum. Striver Sir You are great! You will going to create a history in DSA course very soon around all over the World … I don't have the proper words to express my gratitude to you. All the Best Sir God bless you .

    • @ankitadas5833
      @ankitadas5833 Год назад

      @@ArjunS-hi3vl Yes

    • @DR-mq1le
      @DR-mq1le 11 месяцев назад

      have you completed the course ? im also quite late in starting the course and moving at about the same pace as you

    • @ankitsharda1131
      @ankitsharda1131 8 месяцев назад

      @ankitadas5833 hey I would like to know if you have completed entire striver a2z dsa course? If yes, how much time did you take to complete entire course?

  • @AbjSir
    @AbjSir 8 месяцев назад

    understood

  • @soumiyamuthuraj3516
    @soumiyamuthuraj3516 19 дней назад

    Awesome

  • @user-nk1mb5fy7j
    @user-nk1mb5fy7j Год назад

    UNDERSTOOD

  • @subhamcoder
    @subhamcoder Год назад +3

    Sir app apne resume k project me konsa tech stack use kya haii. ❤ love your videos

  • @culeforever5408
    @culeforever5408 8 месяцев назад +1

    understood ;)

  • @vagabondfoodie5788
    @vagabondfoodie5788 Год назад +2

    Aaj maza aa gya 3 sum karke🌚🌚🌚 ab 4 sum krunga

  • @SiddheshKukade
    @SiddheshKukade 11 месяцев назад

    thanks

  • @iamnoob7593
    @iamnoob7593 3 месяца назад

    US , THANK U

  • @rishabgupta2733
    @rishabgupta2733 9 месяцев назад

    The complexity of better solution is n^4 *logn according to codestudio

  • @syedFAHIM-el1wr
    @syedFAHIM-el1wr Год назад

    Under stood

  • @D3vansh
    @D3vansh Год назад +11

    I think first i should learn 3SUM then will do 4SUM as you said

    • @takeUforward
      @takeUforward  Год назад +35

      Please learn 2 sum, then 3 sum, then only 4 sum should be implemented ! Yes in terms of problem.

    • @gandhamphotos
      @gandhamphotos Год назад +7

      @@takeUforward 😂😂

    • @shis10
      @shis10 Год назад +2

      @@takeUforward 🤣🤣🤣

    • @godson200
      @godson200 Год назад +7

      @@takeUforward sir but partner is not available how to do 2sum

    • @mohsin7343
      @mohsin7343 Год назад +9

      I am still with 1sum

  • @arunmahajan1028
    @arunmahajan1028 8 месяцев назад

    After Understanding this concept ,
    I can Say that Sky is the limit..

  • @ayanakash9900
    @ayanakash9900 10 месяцев назад +2

    For optimal solution time complexity, we have to add sort() time too ig

  • @many987
    @many987 Год назад

    understood.

  • @jayanthvanamamala1425
    @jayanthvanamamala1425 Год назад

    Bhaiya , Can uh please post an article about k sum similiar to this type , which is applicable for all k sums . It can help to build intution!!!!

  • @tejaspatel2212
    @tejaspatel2212 Год назад +7

    Imagine someone getting your video, on Searching 3sum video or 4sum video on google 🌚😂

  • @thomasshelby6780
    @thomasshelby6780 Год назад +2

    Tapped into pleasure back to back with 4Sum followed by 3Sum

  • @203-aasritha2
    @203-aasritha2 4 месяца назад

    We should consider the time complexity for sorting the given array right ?

  • @VishalGupta-xw2rp
    @VishalGupta-xw2rp 9 месяцев назад +3

    After doing 4 Sum.... I think Sky is the limit 🌝

  • @himanshukaushik9223
    @himanshukaushik9223 Год назад +1

    Bhaiya is everything fine any health issues video is not coming ??

  • @satyamsrivastava3423
    @satyamsrivastava3423 2 месяца назад

    Just wanted to add the Time Complexity will also contain log(n) since we are sorting the array, right?

  • @Manishgupta200
    @Manishgupta200 Год назад +7

    It's amazing from brute to better to optimal similarly like 2Sum, 3Sum .. and my doubts in what's about 5-Sum, 6-Sum.. is any universal solution exist?

    • @harshshukla7675
      @harshshukla7675 Год назад

      Yes, the complexity will keep on increasing tho

  • @chathuryachenchupalli6535
    @chathuryachenchupalli6535 Год назад

    Hi sir
    We request you
    Can you please make a video on Alex goes Shopping problem. We cannot understand the question.

  • @tanishagarwal5992
    @tanishagarwal5992 6 месяцев назад

    When striver submits on Code Studio , it also showed him time complexity as O(n4 log n) but it doesn't show in mine. Why?

  • @anupamkhare7041
    @anupamkhare7041 Год назад

    is this the end..or more videos will come....I'm about to start this course.

  • @saurabhtamta7295
    @saurabhtamta7295 3 месяца назад +1

    why is it when i use:-
    long long sum = nums[i]+nums[j]+nums[k]+nums[l]
    -----it says runtime error but when i use :-
    long long sum = nums[i];
    sum+=nums[j];
    sum+=nums[k];
    sum+=nums[l];
    ----it works fine. Why is that?

  • @lwnflash2123
    @lwnflash2123 Месяц назад +1

    for both brute and better ,you have missed the time complexity of inserting unique elements in the set.totally for better approach :O(n^3 *log(no of unique triplets* log m)...

    • @statuscreation9493
      @statuscreation9493 6 дней назад

      while inserting elements in set we are inserting 3 to 4 elements onnly so it nearly O(1)

  • @SunnyKumar-dw9ze
    @SunnyKumar-dw9ze Год назад

    Tree ka v new playlist aayega kya...

  • @AmanKumar-qz4jz
    @AmanKumar-qz4jz 4 месяца назад

    bhaiya greedy par playlist bana do

  • @srikarvinjamara2003
    @srikarvinjamara2003 7 месяцев назад

    Hi, thanks for the video explanation. I had one doubt. When we get the sum==target, we move the k and l pointers front and back respectively [not just once but until we get a different value for k and l pointers so as to not repeat the same ans]. Why are we not doing the same when {sumtarget}. [i.e. in these 2 cases we just do k+=1 or l-=1; shouldn't we here also move the k and l pointers ahead until we get a different value for them.] Please let me know if possible. Thanks!

    • @203-aasritha2
      @203-aasritha2 4 месяца назад +1

      It goes the same as well. If we move the pointer and again we get the same set , the sum will be the same right ? therefor if the sum is less than zero , it remains the same and vice versa. Then the iteration completes and we will hit the same condition. This goes until we get another pair.

  • @AkshayYadaveeb
    @AkshayYadaveeb 3 месяца назад

    while i'm taking sum==target case in else it is not working like we did in three sum and if i put if(sum==target) at initial position it is working . why it is so ?

  • @shubhrajyotipoddar1684
    @shubhrajyotipoddar1684 Год назад

    bro couldn't control his laugh during 3sum , 4sum intro and had to cut the clip 🤣

  • @Sinner.07
    @Sinner.07 9 месяцев назад

    i cant even watch dsa video without headphones now

  • @user-mk3jx1bs2g
    @user-mk3jx1bs2g 5 месяцев назад +1

    in the brute force approach when we first added nums[i]+nums[k]+nums[k]+nums[l] and then checked if its == target then it gives integer overflow error regardless of sum being stored in long long variable but if we do it one by one like sum = nums[i]+nums[j] and then sum+=nums[k] and sum+=nums[l] then the error is resolved can anyone please explain to me how its working.

    • @EC20022ELAKKIYAC
      @EC20022ELAKKIYAC 4 месяца назад

      did you found how does it works ? same doubt here

  • @SriramRajaniyer
    @SriramRajaniyer 7 месяцев назад

    In the optimal code solution, why are we checking for k against k + 1, It seems to work for :
    arr[k] == arr[k - 1]

    • @dhrumilparmar1505
      @dhrumilparmar1505 5 месяцев назад

      this will work but at end. k will have value of last element of (common element sub array) e.g. [1,1,1,0,0,0,0,0,0]// after loop k will be 3 .
      its cleaver trick to break loop and when access k. it will give new value (different from copy elements).
      if we first decrese k(usual procedure of algo. nothing extra done); and then check arr[k] == arr[k + 1] in loop,
      k- - // k=7
      e.g. [1,1,1,0,0,0,0,0,0]
      // after loop breaks, k will be 2

  • @anujraut426
    @anujraut426 Год назад

    Gr8

  • @gugulothsrilakshmi8729
    @gugulothsrilakshmi8729 8 месяцев назад

    Why removing duplicates I'm not getting the concept in 3 sum problem too in optimal solution

  • @hydrocy.9165
    @hydrocy.9165 2 месяца назад

    23:16 shouldnt j= i+1 will be second element? I cant understand

  • @ranjanworld5450
    @ranjanworld5450 11 месяцев назад

    i can do dsa

  • @Saryam_dy2864
    @Saryam_dy2864 Год назад

    bhiya unique no of occurences ka que bina set and hashmap ke kara dijiye.
    ekdum samjh nahi aata ye que

  • @Ramandeep-ef5xt
    @Ramandeep-ef5xt Год назад