Arranging Coins - Leetcode 441 - Python

  Рет қаралды 39,431

NeetCode

NeetCode

Күн бұрын

Пікірлер: 70
@weaponkid1121
@weaponkid1121 2 жыл бұрын
I think a lot of people would love if you made a video on your process for solving a problem you haven't seen before. How long do you spend on a problem, what do you do when you get stuck, how much do you create your own solution vs read other solutions and digest them, etc. In one of your videos you said you're not some leetcode god, but you definitely come across that way, and I think seeing your process from start to finish would be really motivating!
@mearaftadewos8508
@mearaftadewos8508 2 жыл бұрын
That would be nice. We can learn how to learn if we find a different way than ours.
@_7__716
@_7__716 2 жыл бұрын
Def
@Terracraft321
@Terracraft321 2 жыл бұрын
Clement
@YT.Nikolay
@YT.Nikolay 2 жыл бұрын
Neet, we need such series, time to make an account on twitch
@VishalTyagi-z5n
@VishalTyagi-z5n Жыл бұрын
i did it in O(1) by using the formula i(i+1)//2= n of n natural numbers, then find out the one positive(real) root (by the fomula (-b+(underroot(-b+4ac))//2a) and return int(root)
@reisturm9296
@reisturm9296 2 жыл бұрын
Hey NeetCode, just wanted to say thank you! I received an offer to Google and couldn't be more excited. I watched your videos as a way to passively ingest some knowledge and it helped tremendously since the last time I was job hunting out of school. Cheers :)
@mearaftadewos8508
@mearaftadewos8508 2 жыл бұрын
Hey Rei, Congrats my bro!! I have interviews at google and amazon paralley. Can you please recommend me some focus areas for google and pretty much everything you noticed and how you have prepared and for which level? Thanks in advance!
@reisturm9296
@reisturm9296 2 жыл бұрын
@@mearaftadewos8508 thanks! I wouldn't say there is a specific topic you should focus on. you can focus on your weak areas if you think you are not particularly good at a topic like DP etc. The stronger your fundamentals, the more ideas you can suggest to the interviewer and you can work with them to make your way to the solution. As your fundamentals grow, you will begin to recognize patterns and what DS/algo you can apply to the problem while working out minor details/edge cases. Good luck! Don't be down about leetcoding. It's easy to feel dumb when you cannot solve a problem. Spend some time on the problem, if you can't solve, then read the solution and try to understand it so you know why they approached it this way and take it forward.
@mearaftadewos8508
@mearaftadewos8508 2 жыл бұрын
@@reisturm9296 Awesome. Thank you!
@oatmeal979
@oatmeal979 10 ай бұрын
@@mearaftadewos8508 bit late but how'd the interviews go?
@deepakff7498
@deepakff7498 2 ай бұрын
hi bro..how much time you invested to become pro in solving leetcode
@shrimpo6416
@shrimpo6416 2 жыл бұрын
Just wanna thank you man... Just got my offer all bc of YOU!
@baap6886
@baap6886 2 жыл бұрын
you can solve it like this too: s=0 for i in range(1,n+1): s+=i if s>n: return i-1 return i
@sankhadip_roy
@sankhadip_roy Жыл бұрын
when you said u consider it as a medium level problem , I got relieved.
@mearaftadewos8508
@mearaftadewos8508 2 жыл бұрын
The approach that came to my mind was this. Please test it and let me know if it has bugs for certain test inputs def buildstairs(tiles): row = 0 i = 1 while i < tiles: row += 1 i += row print(i, row) return row if abs(tiles - i) == 0 else row - 1 print('stairs: ',buildstairs(9)) # from math import sqrt, floor # return floor(-.5 + sqrt(1+2*tiles)) # works too
@LiveType
@LiveType 2 жыл бұрын
I feel smugly accomplished that my many years of math classes allowed me to almost instantly do (-1+ sqrt(1+8*n)))/2 rounded down solve this problem.
@yuhuipang93
@yuhuipang93 Ай бұрын
Nice solution! but you don't need the "res" variable. we can just return "r", since it's the upper bound for the most rows we can complete
@maamounhajnajeeb209
@maamounhajnajeeb209 2 жыл бұрын
There is no need to use max(). I try this solution and it works on leet code with over 1300 test case. the solution: class Solution: def arrangeCoins(self, n : int): start, end = 0, n while start n: end = mid-1 elif guess
@sushantrocks
@sushantrocks 2 жыл бұрын
Return the positive root of the quadratic eqn: k(k+1)/2 = n return int(math.sqrt(1+8*n)-1)//2
@arjunreddy2647
@arjunreddy2647 2 жыл бұрын
W
@vgsuresh
@vgsuresh 2 жыл бұрын
well you described very easily the formula for sum of first n natural numbers much more intuitively than my maths teacher... thanks much for all the work you put in these videos, helps a lot.
@pabloarkadiuszkalemba7415
@pabloarkadiuszkalemba7415 2 жыл бұрын
I think you don't need to use Gauss formula to solve this. You use a semi-square, so te elements until that value will be row*col/2 and because its not a Perfect semi-square you need to add the stair (row/2). So the formula to get the values is (row*2+col)/2. And with that you can binarny search
@augustshen8018
@augustshen8018 2 жыл бұрын
in Line 13, res = mid will be enough, cuz the next possible mid will always be larger than res.
@durgaprasadreddypeddireddy8740
@durgaprasadreddypeddireddy8740 2 жыл бұрын
yes, that is what I was thinking too.
@dewamscvbvx
@dewamscvbvx 5 ай бұрын
I was able to do this by using binary search + fibonacci sequence, with terms(i.e the number of times you iterate the fib) being the rows but It breaks down on very large integers and computing the fib sequence is VERY expensive. Although my solution is not perfect but I'm still proud considering I came up with the solution myself.
@mearaftadewos8508
@mearaftadewos8508 2 жыл бұрын
Thank you dear NeetCode. My fav channel.
@akhma102
@akhma102 Жыл бұрын
Simply the Best! I have no words!
@harshavardhanveerannanaval8605
@harshavardhanveerannanaval8605 2 жыл бұрын
A cleaner easy to understand solution, def arrangeCoins(self, n): """ :type n: int :rtype: int """ def getCoins(stairs): return(stairs*(stairs+1)/2) l=0 r=n ans=None while(l
@Chirayu19
@Chirayu19 Жыл бұрын
Hey @NeetCode, I think the time complexity of the brute force soution should be sqrt(N) instead of O(n) since the loop is starting at 1 and will not go upto N. It will go upto Please do correct me if I am wrong. Thanks!
@yfjsdgzjdnfn
@yfjsdgzjdnfn Жыл бұрын
Same thoughts
@ilihaspatel399
@ilihaspatel399 2 жыл бұрын
the formula you are talking about is sum of n natural numbers which is taught in class 5 but still I appreciate the way you use the formula in binary search ... Thanks for the Solution
@cc-to2jn
@cc-to2jn 2 жыл бұрын
Man i cant appriciate you enough!
@mohamedhesham6008
@mohamedhesham6008 2 жыл бұрын
Very clear and great explanation thank you. you have the gift of teaching
@Y1Rayn
@Y1Rayn Жыл бұрын
my issue with binary search problems is that for the while loop I never know whether to use l < r or l
@practicefirsttheorylater
@practicefirsttheorylater Жыл бұрын
hi, i am not that good but this is how i think about it. take just n = 1, so our left = right = 1 when we start. so if we used condition l < r, we will never check the array. thus, we must use l
@poonamgulwane6734
@poonamgulwane6734 2 жыл бұрын
This can also work : def arrangeCoins(self, n): """ :type n: int :rtype: int """ row = 0 i = 0 while n > 0: if n >= (i + 1): row += 1 n = n - (i + 1) i += 1 return row
@abhinowyt8564
@abhinowyt8564 2 жыл бұрын
Hey Neetcode, how much time do you spend coding practice in a day? Before job and now
@AppleDeuceTTV
@AppleDeuceTTV 27 күн бұрын
I do appreciate the complexity of the Gauss solution, but it made my brain hurt. The brute force is still O(log n): class Solution: def arrangeCoins(self, n: int) -> int: count = n stairs = 1 while count >= stairs: count = count - stairs stairs += 1 return stairs - 1
@He_ze
@He_ze Жыл бұрын
I originally tried doing this with prefix sum + binary search. I got memory limit exceeded, but it looked like i was kinda on the right approach
@pojunechen2617
@pojunechen2617 Жыл бұрын
Just wanted to let you know your code doesn't pass the test cases. Line 8 should be changed to mid*(mid+1)/2
@call_me_lazarus
@call_me_lazarus 2 жыл бұрын
Is there a typo somewhere in this solution? I've been breaking it down, and comparing it with what I have typed up, but I keep getting a few failed test cases.
@indonline
@indonline 2 жыл бұрын
O(1) algo comes to mind immediately including the rounding part ....
@ayoubalem865
@ayoubalem865 2 жыл бұрын
Hi neetcode here is a simple solution: return int(((0.25 + 2 * n) ** 0.5) - 1/2) Actually 1 + 2 + 3 + 4 ... n = n (n + 1) / 2 is a serie where n is equal to the last term of our serie and also represents the number of terms so all we need is just solve the equation n = i*(i + 1)/2
@frankribery3362
@frankribery3362 2 жыл бұрын
My thoughts exactly
@duanqichuzudefangwu
@duanqichuzudefangwu Жыл бұрын
was going to say: there is a direct analytical solution
@ChandraShekhar-by3cd
@ChandraShekhar-by3cd 2 жыл бұрын
Thanks a lot for such a great and clear explanation! How is things going at Google?
@MrArpit1234
@MrArpit1234 7 ай бұрын
n(n+1)/2 is summ of all natural numbers, which is nothing but AP, basic class 7 mathematics
@oreoshake6287
@oreoshake6287 2 жыл бұрын
Isn't the Tim complexity of the 1st method so log(n)?as we are exiting from the loop when the number of coins becomes negative
@rupambasu9722
@rupambasu9722 2 жыл бұрын
Hi, I really like ur problem solving approach. Can you please solve account merge problem
@santysayantan
@santysayantan 2 жыл бұрын
I don't understand why you didn't implement the math solution? Breaking that quadratic equation would make it R = -1 + sqrt(1 + 4.2.n))/2 - > quadratic equation. Basically if we can write return (1 + int((1 + 8*n)**(1/2))/2) That would directly solve the problem. I think it says easy because it is school grade mathematics.
@mearaftadewos8508
@mearaftadewos8508 2 жыл бұрын
I thougth of that tho.
@oreoshake6287
@oreoshake6287 2 жыл бұрын
Can you please explain how you derived the formula
@rahulprasad2318
@rahulprasad2318 2 жыл бұрын
U can calculate it in O(1) N = floor(-.5 + sqft(1+2n))
@JJKK-nj1vb
@JJKK-nj1vb 2 жыл бұрын
sqrt is logn
@rahulprasad2318
@rahulprasad2318 2 жыл бұрын
@@JJKK-nj1vb still it's more readable and maintainable.
@rppt
@rppt 2 жыл бұрын
@@JJKK-nj1vb On the ARM Cortex M4, the assembly instruction VSQRT takes exactly 14 cycles for any 32 bit floating point. SQRT() being O(log-n) is only if you're assuming potentially arbitrarily large integers or arbitrarily precise floating points.
@vadimkokielov2173
@vadimkokielov2173 2 жыл бұрын
I can't believe they marked the "math" solution O(1)?! Has rigor gone completely out of algorithm analysis?!!! The algorithm for computing square roots is Newton's Method -- which amounts to the same bisection in the case of square roots!! And it has the same logarithmic runtime??
@NeetCode
@NeetCode 2 жыл бұрын
Yeah, I was wondering the same thing. It seems any "math" solution is marked O(1) but it's technically not the case.
@prabhatracherla3098
@prabhatracherla3098 2 жыл бұрын
How was this easy question then? I mean code is easy, but the thought process was not
@darkmatter2958
@darkmatter2958 2 жыл бұрын
i saw there was an o(1) solution it was return (sqrt(8*n+1)-1)/2
@darkmatter2958
@darkmatter2958 2 жыл бұрын
can you explain it how it was derived
@masternobody1896
@masternobody1896 2 жыл бұрын
nice
@pradiptasarma4867
@pradiptasarma4867 2 жыл бұрын
Arithmatic Progression.
@flatmapper
@flatmapper 10 ай бұрын
hard
@HarvinderSandhuEsq
@HarvinderSandhuEsq 2 жыл бұрын
Math formula is easier
@Ericnguyencsca
@Ericnguyencsca 7 ай бұрын
just return right instead
@aabhishek4911
@aabhishek4911 2 жыл бұрын
Who has gone through school without learning gauss formula ? It is one of the very basic ones
Climbing Stairs - Dynamic Programming - Leetcode 70 - Python
18:08
Jump Game - Greedy - Leetcode 55
16:28
NeetCode
Рет қаралды 265 М.
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН
Quando A Diferença De Altura É Muito Grande 😲😂
00:12
Mari Maria
Рет қаралды 45 МЛН
小丑女COCO的审判。#天使 #小丑 #超人不会飞
00:53
超人不会飞
Рет қаралды 16 МЛН
Valid Perfect Square - Leetcode 367 - Python
8:44
NeetCode
Рет қаралды 37 М.
Image Smoother - Leetcode 661 - Python
16:02
NeetCodeIO
Рет қаралды 16 М.
Balanced Binary Tree - Leetcode 110 - Python
13:11
NeetCode
Рет қаралды 278 М.
First Bad Version - Leetcode 278 - Binary Search (Python)
8:12
Coin Change - Dynamic Programming Bottom Up - Leetcode 322
19:23
Koko Eating Bananas - Binary Search - Leetcode 875 - Python
15:12
The Biggest Mistake Intermediate React Developers Make
18:32
Cosden Solutions
Рет қаралды 27 М.
Move Zeroes - Leetcode 283 - Python
8:15
NeetCode
Рет қаралды 87 М.
LeetCode: The Worst Thing to Happen to Software Engineering
8:03
Coding with Dee
Рет қаралды 153 М.
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН