Move Zeroes - Leetcode 283 - Python

  Рет қаралды 69,657

NeetCode

NeetCode

Күн бұрын

🚀 neetcode.io/ - A better way to prepare for Coding Interviews
🥷 Discord: / discord
🐦 Twitter: / neetcode1
🐮 Support the channel: / neetcode
⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
💡 CODING SOLUTIONS: • Coding Interview Solut...
💡 DYNAMIC PROGRAMMING PLAYLIST: • House Robber - Leetco...
🌲 TREE PLAYLIST: • Invert Binary Tree - D...
💡 GRAPH PLAYLIST: • Course Schedule - Grap...
💡 BACKTRACKING PLAYLIST: • Word Search - Backtrac...
💡 LINKED LIST PLAYLIST: • Reverse Linked List - ...
💡 BINARY SEARCH PLAYLIST: • Binary Search
📚 STACK PLAYLIST: • Stack Problems
Problem Link: leetcode.com/problems/move-ze...
0:00 - Read the problem
3:00 - Drawing Explanation
6:36 - Coding Explanation
leetcode 283
This question was identified as an interview question from here: github.com/xizhengszhang/Leet...
#partition #python
Disclosure: Some of the links above may be affiliate links, from which I may earn a small commission.

Пікірлер: 90
@timwebster85
@timwebster85 Жыл бұрын
Thank you for taking the time to do this, much appreciated!
@abhimalyachowdhury7835
@abhimalyachowdhury7835 2 жыл бұрын
I absolutely love your approach and explanation.... Please upload more Amazon interview questions..I have interview coming up....
@hacksbsb
@hacksbsb Жыл бұрын
did you get the offer
@deckardbarnes6715
@deckardbarnes6715 2 жыл бұрын
Wish I found this channel before I got this question during my interview
@Cruzylife
@Cruzylife 2 жыл бұрын
neetcode is the best.. I am thinking of doing the neetcode gauntlet!! Do every problem that neetcode has completed from his first upload!!! Then I will be ready for MANGA
@atulkumar-bb7vi
@atulkumar-bb7vi Жыл бұрын
Nice insights of simple algorithm. Thanks!
@jesussepulveda9992
@jesussepulveda9992 2 жыл бұрын
Thank you for your work neet :D
@kalyaninagre2148
@kalyaninagre2148 11 ай бұрын
your efforts are appreciated !!!!
@subhamthemusicalguy8851
@subhamthemusicalguy8851 2 жыл бұрын
Thanks a lot for this clear explanation
@shadon_official2510
@shadon_official2510 2 жыл бұрын
This is such an awesome video
@PremPal-uy4nm
@PremPal-uy4nm Жыл бұрын
I was confused in this line I thought He did not wrote the hole condition but then I realise if 0 is present at ith index it will return fasle and if not then it will reurn true. So we don't hav to write hole condition here. Interesting humm!
@Andrypka
@Andrypka Жыл бұрын
Greet explanation, thanks alot!
@durgeshkudalkar6574
@durgeshkudalkar6574 2 жыл бұрын
Really good explanation!
@fabiajero
@fabiajero Жыл бұрын
Thank you for your work, It would be amazing if we can get more than 1 solution, I guess that we have to find the worse and the best solution in an interview. Is this the best one? Cheers!
@pl5778
@pl5778 Жыл бұрын
great video! A followup question is how would you keep all the zeros at the beginning and keeping the non zeros in order? E.g. [1,0,3,0,12] The only way I've found is using your method but start iterating at the end of the array. Wondering if there is another way to solve it. Thanks
@MaazKhan-lw6kz
@MaazKhan-lw6kz 5 ай бұрын
def solution(nums: list)->list: count = nums.count(0) for i in range(count): nums.remove(0) for i in range(count): nums.append(0) return nums #Leetcode test cases nums = [0, 1, 0, 3, 12] result = solution(nums) expected_output = [1, 3, 12, 0, 0] assert result == expected_output, f"Expected {expected_output}, got {result}" nums = [0] result = solution(nums) expected_output = [0] assert result == expected_output, f"Expected {expected_output}, got {result}"
@sameer_sah
@sameer_sah 11 ай бұрын
If you are confused about where does this patterns fits, read about partition alorithm. Thanks Neetcode.
@mkum2141
@mkum2141 2 ай бұрын
specifically, lomuto's partition algorithm
@Kushagra_21
@Kushagra_21 2 жыл бұрын
Hi , You are doing great job!!....Could you please help in the question -- Making a Large Island (Leetcode 827). Would Really appreciate that!! Thanks a lot for all these videos :)
@user-ft1rj5jh3n
@user-ft1rj5jh3n 2 жыл бұрын
Hi neetcode, thanks for posting i love ur videos so much! I would appreciate if u can post video on Longest Increasing Path in a Matrix!!
@NeetCode
@NeetCode 2 жыл бұрын
I got you fam, I'll upload it tomorrow morning!
@user-ft1rj5jh3n
@user-ft1rj5jh3n 2 жыл бұрын
@@NeetCode i love you ❤️
@sherifessam1560
@sherifessam1560 Жыл бұрын
Man, you are just great
@dhruva1221
@dhruva1221 4 ай бұрын
Thanks a ton for simplifying problem statement at beginning because i derived similar logic with input = {0,0,0,12,4} but when change input = {8, 2, 0, 1,...} from java algo tutorial course, i got confused thinking my logic doing swap when leading pos elements are not zero but your simplifying problem here is trick i learn to justify to interviewers my var name was zeroPos but later renamed to slowPointer but left & right seem more suited :)
@sawyerburnett8319
@sawyerburnett8319 8 ай бұрын
Ugh. I had this so close doing the problem on my own but caught up on some edge cases. Explanation is helpful!
@bellemcky
@bellemcky 6 ай бұрын
Same
@dhruva1221
@dhruva1221 4 ай бұрын
me too unless i un-pause other youtuber video tutorial for java who said to use pointer for zero;s position
@karthikraghuraman3352
@karthikraghuraman3352 7 ай бұрын
Wouldnt this solution swap even the non zeroes? for e.g. if the array is 1,4,3,0,2,1. During the second iteration wouldnt the numbers get swapped? How does this code ensure that only zeroes get swapped?
@gremlan6419
@gremlan6419 Жыл бұрын
When I attempted myself, I kept trying to push the zeros forward rather than push the non-zeros back. I missed this insight and couldn't solve it.
@SzSzilard
@SzSzilard 3 ай бұрын
I coudln't solve this myself, so thanks a bunch!
@madeehabalouch6648
@madeehabalouch6648 7 ай бұрын
You're Amazing!
@TURALOWEN
@TURALOWEN Жыл бұрын
thank you!
@IdiotOfftheInternet
@IdiotOfftheInternet 2 жыл бұрын
How can " if nums[r]:" mean that number is not zero?
@CostaKazistov
@CostaKazistov 2 жыл бұрын
boolean conversion of number greater than 0
@hellowrld9888
@hellowrld9888 Жыл бұрын
Block of code after If statememt will run only if the condition is True. The condition will be False if it has a value of 0, anything other than 0 is True.
@venkatasaivs5566
@venkatasaivs5566 11 ай бұрын
Not zero
@user-pt4kl4ww2h
@user-pt4kl4ww2h 6 ай бұрын
U can also write num[r]!=0
@Jack-ss4re
@Jack-ss4re 22 күн бұрын
@@hellowrld9888thats not what he asked
@closingtheloop2593
@closingtheloop2593 5 ай бұрын
clean af
@prateek8837
@prateek8837 Жыл бұрын
when 0s are not present in the list, this method swaps all the elements with itself. However, the following doesn't var moveZeroes = function(nums) { let left = 0; let right = 1; while(right < nums.length){ if(nums[left]){ left++; } if(nums[right] && nums[left] === 0){ const temp = nums[right]; nums[right] = nums[left]; nums[left] = temp; left++; } right++; } return nums; };
@inrmh
@inrmh 4 ай бұрын
thanks : )
@ChaseHatch
@ChaseHatch 2 жыл бұрын
integs = [0,1,0,3,12] integs.sort() for x in range(len(integs)-1,-1,-1): if integs[x] == 0: a = integs.pop(x) integs.append(a) In [47]: integs Out[47]: [1, 3, 12, 0, 0]
@MrMinecraftGamer456
@MrMinecraftGamer456 2 жыл бұрын
sort doesn’t work. You need to maintain order of non-zeros, which doesn’t necessarily mean sorted ordsr
@ChaseHatch
@ChaseHatch 2 жыл бұрын
@@MrMinecraftGamer456 the for loop will still work here without the sort
@ChaseHatch
@ChaseHatch 2 жыл бұрын
@@MrMinecraftGamer456 In [7]: integs = [0,1,0,3,12] In [10]: [integs.append(integs.pop(x)) for x in range(len(integs)-1,-1,-1) if integs[x] == 0] In [11]: integs Out[11]: [1, 3, 12, 0, 0]
@avijitdey992
@avijitdey992 Жыл бұрын
@@ChaseHatch bro shut up
@miglioredroid9446
@miglioredroid9446 10 ай бұрын
Too many functions, you should know how to do it with basic data and structures.
@bishowahib2736
@bishowahib2736 2 жыл бұрын
how about the following solution, is it as efficient? for i in range(len(nums)): if nums[i] == 0: nums.remove(nums[i]) nums.append(0)
@NeetCode
@NeetCode 2 жыл бұрын
Very clean, but I think removing from the middle of an array is O(n) time complexity. So this would be O(n^2)
@abhimalyachowdhury7835
@abhimalyachowdhury7835 2 жыл бұрын
Won't it through an error as list size changed while iteration...
@anshbhatia1
@anshbhatia1 2 жыл бұрын
Doesn't work for [0,0,1] Try this: i = 0 while i < len(nums): if nums[i] == 0: nums.remove(nums[i]) nums.append('0') else: i+=1
@anonymoustv8604
@anonymoustv8604 2 жыл бұрын
@@anshbhatia1 what do you mean it won't work for [0,0,1]? It will work
@Ivan-ek6kg
@Ivan-ek6kg 2 жыл бұрын
nums[l], nums[r] = nums[r], nums[l], Do you means it will de these two at the same time, so we do not need a temp variable to swap. But we can not separate it to two line in python, right?
@theworldofrandomness2734
@theworldofrandomness2734 Жыл бұрын
Either you can do this way swapping or the temp one, it depends on you
@PremPal-uy4nm
@PremPal-uy4nm Жыл бұрын
My notes for this problem """ Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements. Note that you must do this in-place without making a copy of the array. """ """ Approach 1: Using 2 pointer TC O(n) & SC O(1) 1. Basically, It is 2 pointer quesion. It seems very easy but the way it works is quite interesting. 2. Left pointer is putting every none-zero element at the right place. Wheneve left pointer find zero elemnt it will stick with it. 3. Right pointer is helping left pointer to find and put non-zero element at right place. we can say that right pointer is showing way to left pointer where to go. 4. What happens if we start right pointer from the second element instead of first? - In this case it will give wrong output. Because right pointer swap every non-zero item to left pointing item. so it will chage the order of list. - Swapping also occurs when right and left pointer both start from 0th position but in this case the swapping of element happens at the same place. which does not changes the order. """ def moveZeroes(nums): l=0 for r in range(0,len(nums)): #4 if nums[r]: nums[l],nums[r]=nums[r],nums[l] l+=1 return nums print(moveZeroes([0,1,0,3,12]))
@user-pc9wm8pr3b
@user-pc9wm8pr3b 7 ай бұрын
or just do : def moveZeroes(self, nums): for i in range(len(nums)): if nums[i] == 0: nums.pop(i) nums.append(0)
@PixelPulse168
@PixelPulse168 Жыл бұрын
You are assuming the first element must be a zero. You need to initialize l and r by iterating until the first zero is encountered.
@JustFuguFish
@JustFuguFish 2 жыл бұрын
If you pop the 0 and append a 0 at the end of the list wont work?
@d3v1n302418
@d3v1n302418 2 жыл бұрын
I'm not sure that would count as in place because it would technically change the size of the array, ex in Java its a sized array where the size can't change
@ayoubalem865
@ayoubalem865 2 жыл бұрын
If you mean by poping (removing) you will end up with an O(n^2) because removing from the middle is O(n) for arrays ! btw it is correct but not efficient !
@timanb2491
@timanb2491 2 жыл бұрын
maaaaaaan i failed with this taks on interview 2 weeks ago
@AryanChaurasia10
@AryanChaurasia10 2 жыл бұрын
which company?
@shubhanshusingh8529
@shubhanshusingh8529 Жыл бұрын
#Easy Python Solution - Two Pointers Approach class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums in-place instead. """ l = 0 for r in range(1,len(nums)): if nums[l] == 0 and nums[r] != 0: nums[l],nums[r] = nums[r],nums[l] l += 1 elif nums[l] != 0: l += 1
@LauraWinterisYourMom
@LauraWinterisYourMom 2 жыл бұрын
Where is the partition though i am confused
@theworldofrandomness2734
@theworldofrandomness2734 Жыл бұрын
No partition is performed. It is a pointer method in which left starts from start index and right, one greater than start index. if R is greater than L, swap is performed else R moves +1
@farazahmed7
@farazahmed7 10 ай бұрын
partition is done in quick sort only.
@whammie9497
@whammie9497 Жыл бұрын
On the last line, you don't need to return anything because the problem says so
@angryman5517
@angryman5517 6 ай бұрын
Why are you returning? It's clearly mentioned not to return anything
@tcgys
@tcgys Жыл бұрын
7:24 bro just made ad for python
@barnoma-soz
@barnoma-soz Жыл бұрын
Unfortunately, your solution doesn't go with this input: nums = [1,0,1] The below solution deals with the abovementioned cases as well: def move_zeros(arr): i, j = 0, 1 while j < len(arr): if arr[i] == 0 and arr[j] != 0: arr[i], arr[j] = arr[j], arr[i] i += 1 j += 1 elif arr[i] != 0: i += 1 j += 1 else: j += 1
@cherylto5898
@cherylto5898 Жыл бұрын
I would also move j+=1 outside the if/else and just write it once.
@barnoma-soz
@barnoma-soz Жыл бұрын
@@cherylto5898 yeahh) it would be better
@ronsinha21
@ronsinha21 Жыл бұрын
Why the solution doesn't work for [1,0,1] coding is based on logic...if it doesn't work for some input then the logic is wrong....Logic is correct and it will work
@wayne4591
@wayne4591 Жыл бұрын
Of course the solution will work. See below step by step: 1. L = 0, R = 0, nums[R=0] = 1. So nums[R=0] != 0, Swap nums[L=0] = 1and nums[R=0] = 1, and L += 1. Current Array [1, 0 ,1] 2. L = 1, R = 1, nums[R=1] = 0, So nums[R=1] == 0, No action. Current Array[1, 0 ,1] 3. L = 1, R = 2, nums[R=2] = 1, So nums[R=2] != 0, Swap nums[L=1] = 0 and nums[R=2] = 1 and L += 1. Current Array [1, 1, 0] R = 3 > 2 , loop ends. And final array is [1, 1, 0], which is the correct output
@vishnu00764
@vishnu00764 2 ай бұрын
I just did remove and append like an idiot lol
@diabhattacharya3425
@diabhattacharya3425 2 ай бұрын
Why did we assume that 0th index has element zero
@saraseghidleab4145
@saraseghidleab4145 2 жыл бұрын
Where the videos that people are talking about. How helpful the videos are. Do you have to pay for it???
@prashanthpradeep326
@prashanthpradeep326 11 ай бұрын
they clearly told don't return anything
@abisheknair3545
@abisheknair3545 11 ай бұрын
How about just moving all the non-zero values to the start and just adding zeroes to the end. Beats 99.48 python users apparently
@jjhassy
@jjhassy Ай бұрын
it frustrates me how simple the solution was
@peskovdev
@peskovdev 9 ай бұрын
LeetCode: Do not return anything, modify nums in-place instead NeetCode: return nums
@mjohnson510
@mjohnson510 2 жыл бұрын
it says don't return anything lol
@NeetCode
@NeetCode 2 жыл бұрын
lol whoops i missed that part
@mjohnson510
@mjohnson510 2 жыл бұрын
@@NeetCode I think now you have to for i = l in range(nums) // set the remaining elements to zero // at the index starting from i // num[i] = 0 But it happens 🤣🙃
@CostaKazistov
@CostaKazistov 2 жыл бұрын
well spotted👍
@sairamkandgule8957
@sairamkandgule8957 2 жыл бұрын
void moveZeroes(vector& v) { int n=v.size(); int next=0; for(int i=0;i
@hideme420
@hideme420 2 жыл бұрын
my approach is accepted but, with 283ms is it worthfull ?
@whimsicalkins5585
@whimsicalkins5585 10 ай бұрын
my approach was around 69ms and it only beat 7 % of people. its better to learn an algorithm that works in o(n). Your code worked for 238ms because of o(n)^2 time complexity like mine
Top K Frequent Elements - Bucket Sort - Leetcode 347 - Python
13:13
Now THIS is entertainment! 🤣
00:59
America's Got Talent
Рет қаралды 38 МЛН
🤔Какой Орган самый длинный ? #shorts
00:42
Double Stacked Pizza @Lionfield @ChefRush
00:33
albert_cancook
Рет қаралды 73 МЛН
Little girl's dream of a giant teddy bear is about to come true #shorts
00:32
Fabiosa Animated
Рет қаралды 4,7 МЛН
Remove Duplicates from Sorted Array - Leetcode 26 - Python
10:38
Find All Anagrams in a String - Leetcode 438 - Python
12:14
NeetCode
Рет қаралды 77 М.
5 Useful F-String Tricks In Python
10:02
Indently
Рет қаралды 281 М.
This video will change your mind about the AI hype
17:07
NeetCode
Рет қаралды 132 М.
Valid Anagram - Leetcode 242 - Python
12:01
NeetCode
Рет қаралды 477 М.
Move Zeros Python Leetcode 283
10:04
Persistent Programmer
Рет қаралды 33 М.
Valid Palindrome - Leetcode 125 - Python
14:58
NeetCode
Рет қаралды 232 М.
Majority Element - Leetcode 169 - Python
14:39
NeetCode
Рет қаралды 94 М.
Battery  low 🔋 🪫
0:10
dednahype
Рет қаралды 12 МЛН
Отдых для геймера? 😮‍💨 Hiper Engine B50
1:00
Вэйми
Рет қаралды 1,3 МЛН
Choose a phone for your mom
0:20
ChooseGift
Рет қаралды 7 МЛН
S24 Ultra and IPhone 14 Pro Max telephoto shooting comparison #shorts
0:15
Photographer Army
Рет қаралды 9 МЛН
Сколько реально стоит ПК Величайшего?
0:37
😱Хакер взломал зашифрованный ноутбук.
0:54
Последний Оплот Безопасности
Рет қаралды 981 М.