Subarray Sums Divisible by K - Leetcode 974 - Python

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

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

  • @chaitanyasharma6270
    @chaitanyasharma6270 6 หลายเดือนก่อน +44

    -1%5 is 4 in python but in other languages, java c#, javascript it is equal to -1.
    curr+=nums[i];
    int key = curr % k;
    if(curr

    • @YashTech16
      @YashTech16 6 หลายเดือนก่อน +1

      if sum is -5 and k = 5 then key is 0 but as curr < 0 key would be changed
      Hence one more condition required
      curr += nums[i];
      int key = curr % k;
      if(curr < 0 && key != 0){
      key += k;
      }

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

      @@YashTech16 key won't be zero buddy. How would you make a sum divisible by 0

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

      I understand how it's 4
      Just some math that i hate:
      a = -1 // 5, how to do it? -1 / 5 = -0.2, round it to the floor. a = -1.
      -1 % 5(it's b, ok?) = -1(a) * 5(b) + x
      -1 % 5 = -5 + x. x is 4 because we need to find the x that will give the first number(-1) after plusing the x with the result -1(a) * 5(b) (-5)
      -1 = -5 + x
      4 = x
      Sorry if I made a mistake, but I heard this solution how to solve mod(%) with negative numbers

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

      This works in typescript: `let rem = ((sum % k) + k) % k;`

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

      But with regard to this difference, do you know why? Why does python have a different result to java, shouldn't the operation be implemented in the same and be agnostic from programming language ?

  • @shazam3218x
    @shazam3218x 6 หลายเดือนก่อน +66

    I have a two technical interviews on Wednesday and Thursday. Hopefully I clear them and get the job🤞
    Edit - Dint get selected for next round.
    I'll keep leetcoding until I get another job

    • @AdityaRaj-xm6oi
      @AdityaRaj-xm6oi 6 หลายเดือนก่อน +3

      Good luck buddy

    • @chrischika7026
      @chrischika7026 6 หลายเดือนก่อน +5

      goodluck, and comeback to this comment to tell us how you did.

    • @NeetCodeIO
      @NeetCodeIO  6 หลายเดือนก่อน +4

      Good luck you got this!!!

    • @akakop
      @akakop 6 หลายเดือนก่อน +1

      Hopefully I get this question

    • @varunagarwal1756
      @varunagarwal1756 6 หลายเดือนก่อน +5

      You guys are getting interviews?

  • @akash-kumar737
    @akash-kumar737 6 หลายเดือนก่อน +9

    Pattern is same as yesterday problem.
    Thanks man your explanation helped me solve this on my own.

  • @yang5843
    @yang5843 6 หลายเดือนก่อน +4

    Thanks for uploading this, the issue I realized I was having with this problem was due to negative numbers being modded in Java

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

    Thank you, was able to write a working solution after your explanation

  • @maanas_sehgal
    @maanas_sehgal 6 หลายเดือนก่อน +9

    Hey @Neetcode
    Can you please upload solutions for contests as well. It would be really helpful😊

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

    much easier to understand than the leetcode editorial! Nice job!

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

    pretty much got this thanks to yesterdays leetcode daily problem and by figuring out the pattern of how the occurence of multiple remainders are contributing in final ans

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

    got this on an OA, now i dont feel so bad about not figuring this out in 20 mins

  • @EliasKibret
    @EliasKibret 6 หลายเดือนก่อน +12

    Main Point : If two prefix sums have the same remainder when divided by 𝐾 ,the subarray between these two prefix sums is divisible by 𝐾

  • @fancypants6062
    @fancypants6062 6 หลายเดือนก่อน +3

    this channel is so good

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

    For java programmers if remainder is -ve then just add k to it to make it positive same as python does and all will be right. if(rem < 0) rem = k + rem;

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

    That is a great explanation thanks a lot but coming up with it during an interview is another challenge altogether!!

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

    For whoever stuck on "wrong" remainders for negative numbers - use Euclidean remainder instead of default % operator. It goes like
    (n % m + m) % m.

  • @nnkbrain
    @nnkbrain 6 หลายเดือนก่อน +1

    Hey can you also solve the contest questions ❓

  • @MP-ny3ep
    @MP-ny3ep 6 หลายเดือนก่อน +1

    Great explanation as always. Thank you

  • @AJK-a2j00k4
    @AJK-a2j00k4 6 หลายเดือนก่อน +1

    Crazy intuition fr!

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

    Hint: If you're not using python, don't forget to adjust the remainder to be a positive number in case the language you're using returns a negative remainder. if (remainder < 0) remainder += k;

  • @АлекСневар
    @АлекСневар 6 หลายเดือนก่อน

    I didn't get it. In this particular case divisible doesn't mean evenly divisible, i.e. it doesn't have to be prefix_sum % k == 0?

  • @AyushRawat-v8m
    @AyushRawat-v8m 6 หลายเดือนก่อน

    i always stuck on these kind of problems why i dont get a intution of solving them , I mean optimize solutions.

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

    Ok I’m too addicted to these videos.. I need to stop.. this is past my bed time lolz

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

    New testcases got added and this fails in case remainder is negative, so just add an offset in case remainder is negative to remainder+k

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

    Will it work for negative remainder? For me its nor working.

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

      yaa it doesn't work for me too

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

    woudlt an array actually have n! subarrays since your starting at every position and each time decrementing one so it would be like n * (n - 1) * (n - 2)... ?

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

      I think it would be n + (n-1) + (n-2) .. so on

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

    Can you explain why (remainder < 0) remainder = k+remainder works?

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

      Read about modular arithmetic for negative numbers.

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

    Yayyy you’re finally back

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

    bro what’s ur routine like

  • @aviksain
    @aviksain 4 หลายเดือนก่อน +1

    This is in python that's way we don't have to do this
    int remain = (prefix_sum % k + k) % k;

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

      Thanks man. btw why did it not work in c++ as it works fine in python

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

      @@ActionOrginal Because in python compiler if you modulo some number it gives a positive number like this
      -4%7 = 3 but in c++ we will get this -4%7 = -4 thats way we have to convert the negative numbers into positive number for the question to match the previous reminder and count it.

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

    thank you neetcode!

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

    For negative remainder, its not working.

  • @tai-xinyu407
    @tai-xinyu407 6 หลายเดือนก่อน

    Because of the problem yesterday, 523, I watched the video of 560, but I still feel a little confused about 523. Will you explain and upload it? Even make it into shorts would be helpful.

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

      He already did it th-cam.com/video/OKcrLfR-8mE/w-d-xo.html

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

    Bro, Your teaching is nice. It would be nicer if you took care of your accent. Please do

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

    you would need to check if the key is present in the dictionary to increase its count or else you must set the count to one first, or am i missing something
    ans=c=0
    m={}
    m[0]=1
    for i in v:
    ans+=i
    if ans%k in m:
    c+=m[ans%k]
    m[ans%k]+=1
    else:
    m[ans%k]=1
    return c

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

    why we don't need check the remainder is positive?

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

      python take right remainder we dont need to check it

    • @zz-yy-xx
      @zz-yy-xx 6 หลายเดือนก่อน +1

      @@hesheid9159 does it mean that the logic of this solution is only for python?
      In other language, we need to adjust the remainder to positive by ourself?

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

      @@zz-yy-xx yes we need another check if remainder is negative

  • @chien-yuyeh9386
    @chien-yuyeh9386 6 หลายเดือนก่อน

    Nice!!😊

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

    thanks!

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

    wrong also too it will yield less count as it is only checking the minimum no.to be subtracted but remainder +k remainder+2k and goes on

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

    Am I stupid or this problem was hard? prolly I am stupid 😅

    • @sabukuna
      @sabukuna 6 หลายเดือนก่อน +1

      its a big math gap. i couldnt do it either.

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

    I still don't understand it

  • @MehmetDemir-xi3yy
    @MehmetDemir-xi3yy 6 หลายเดือนก่อน

    Bob ross reference

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

    I'm like a monkey being taught
    P.s I didn't understand an explanation

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

    first

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

    Third

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

    Forth