Це відео не доступне.
Перепрошуємо.
Out of Boundary Paths - Leetcode 576 - Python
- Додати в
- Мій плейлист
- Переглянути пізніше
- Поділитися
Поділитися
Вставка
Розмір відео:
- Опубліковано 14 сер 2024
КОМЕНТАРІ • 27
Наступне
Автоматичне відтворення
K Inverse Pairs Array - Leetcode 629 - PythonNeetCodeIO
Переглядів 15 тис.
Largest Divisible Subset - Leetcode 368 - PythonNeetCodeIO
Переглядів 15 тис.
Longest Ideal Subsequence - Leetcode 2370 - PythonNeetCodeIO
Переглядів 11 тис.
КУРСК в ОГНЕ, кадыровцы грызутся с ГЕНШТАБОМ РФ, а СКАБЕЕВУ послалиТелеканал ICTV
Переглядів 1,3 млн
В ДЕТСТВЕ ОТПРАШИВАЕШЬСЯ НА РЕЧКУ У МАМЫSIDELNIKOVVV
Переглядів 3,6 млн
Hardest Basketball Shots Ever 😳Red Bull
Переглядів 46 млн
ЗСУ в Суджі надали місцевій бабусі можливість вільно висловитися про путіна #shorts #суджа #путинАпостроф TV
Переглядів 479 тис.
Coin Change - Dynamic Programming Bottom Up - Leetcode 322NeetCode
Переглядів 470 тис.
Regions Cut By Slashes - Leetcode 959 - PythonNeetCodeIO
Переглядів 14 тис.
Furthest Building You Can Reach - Leetcode 1642 - PythonNeetCodeIO
Переглядів 15 тис.
Most Common Concepts for Coding InterviewsNeetCode
Переглядів 299 тис.
Minimum Deletions to Make String Balanced - Leetcode 1653 - PythonNeetCodeIO
Переглядів 11 тис.
Partition Array for Maximum Sum - Leetcode 1043 - PythonNeetCodeIO
Переглядів 17 тис.
The Clever Way to Count Tanks - NumberphileNumberphile
Переглядів 899 тис.
I gave 127 interviews. Top 5 Algorithms they asked me.Sahil & Sarra
Переглядів 637 тис.
Delete and Earn - Dynamic Programming - Leetcode 740 - PythonNeetCode
Переглядів 49 тис.
Гордон. Что Арестович пообещал русским, армия предала Путина, Лукашенко сбежал на Запад, конец РПЦВ гостях у Гордона
Переглядів 771 тис.
🔥 Война пришла в РОССИЮ! Глубинный народ глотает ОТВЕТКУ за атаки по УкраинеFREEДOM. LIVE
Переглядів 406 тис.
Replacing a valve on a full water tank! 🫣💦 - 🎥 the_ladyplumberUNILAD
Переглядів 113 млн
❓А кого бы выбрал ты?! (👩🏻Мисс Делайт vs 🐱Кетнеп 💏🏻Родители)Ной Анимация
Переглядів 4,1 млн
Удар по російській колоні в Курській області #shorts #війна #курськ #арміярфBBC News Україна
Переглядів 796 тис.
Кадиров пішов НА ПЕРЕГОВОРИ із ЗСУ? АХМАТівці ТІКАЮТЬ! Київ захоплює НОВІ МІСТА РФ | НОВИНИ СЬОГОДНІУКРАЇНА СЬОГОДНІ
Переглядів 514 тис.
Обман ради папы #юмор #топКостя Павлов
Переглядів 3,4 млн
Jerry Heil & Volodymyr Dantes - ГУБИ У ГУБАХ (ПРЕМʼЄРА 2024)Jerry Heil
Переглядів 1,2 млн
That 3D DP solution is wild. I was able to get the memoization solution on my own today, but I still have trouble translating that into bottom up approaches. But honestly, I've come a long ways already for being able to solve a problem like this by myself with memo. Thanks Neet!
is it necessary to learn the iterative solutions? do interviewers ask that?
they will mostly expect that one if you give only the memo one there is no guarantee you will pass the round unless if its a very hard dp problem or not a trivial one. @@zaki_1337
@@zaki_1337 I think it depends on your interviewer. I think most would probably accept memo, but I had a friend who had a TikTok interview where he tried memo for a problem but it was hitting a stack limit, indicating that they wanted the bottom up approach.
@@AMakYu oh :/
3D DP it is! I was thinking in terms of 2D and didn't know how to memoize it. Thanks NeetCode!
Thanks for doing these daily problems. Very helpful
You mentioned a BFS solution wouldn't work but in one of my approaches I considered it and it somehow worked. Gave TLE at 22/94 but it could possibly be optimized?
# BFS solution
MOD = 10**9 + 7
directions = [(0, -1), (0, 1), (-1, 0), (1, 0)]
queue = [(startRow, startColumn, maxMove)]
res = 0
while queue:
node_i, node_j, curMoves = queue.pop(0)
if curMoves > 0:
curMoves -= 1
for delrow, delcol in directions:
new_i, new_j = node_i + delrow, node_j + delcol
if not (0
i actually got MLE on a bfs solution and a TLE on the dfs one xd
Your solutions are so real, nothing fancy, they are simple and easy to understand
One thing I was confused about the recursive brute force solution is that why are we allowed to go back to the node we just came from? Would that not consitute a path?
The second solution is less efficient in LC because we are calculating the possibilities for all positions in the grid. Different from the dfs solution were we calculate for the startRow/startCol, but in a case where we wanted to calculate all of them the DP is much more faster and memory efficient.
Great explanation as always. Thank you .
thanks, man
Thank you so much
Memoization solution is pretty straightforward, I dunno bout da tabu sol tho
Well explained
For a Brute Force Memoization I am getting TLE.
always on top
Thanks ❤
for the if statments I mada a helper function:
class Solution:
def findPaths(self, m: int, n: int, maxMove: int, startRow: int, startColumn: int) -> int:
ROWS,COLS = m,n
MODULO = pow(10,9)+7
curGrid = [[0] * COLS for _ in range(ROWS)]
prevGrid = [[0] * COLS for _ in range(ROWS)]
def helper(r,c):
if r < 0 or c < 0 or r == ROWS or c == COLS:
return 1
return prevGrid[r][c]
for _ in range(maxMove):
for r in range(ROWS):
for c in range(COLS):
val = helper(r+1,c)
val += helper(r-1,c)
val += helper(r,c+1)
val += helper(r,c-1)
val %=MODULO
curGrid[r][c] = val
prevGrid, curGrid = curGrid,prevGrid
return prevGrid[startRow][startColumn]
💪💪
Not to brag NeetCode, but I got the 15 view on this video.
did you solve it at least? :D
day 26
Leetcode
Great explanation as usual!
A suggestion, is it not a bit more readible to remove the if/else checks with something similar to this? (I added this vcrsion to neetcode github if that's ok, instead of having all the if statements)
class Solution {
fun findPaths(m: Int, n: Int, maxMove: Int, startRow: Int, startColumn: Int): Int {
val mod = 1_000_000_007
val dirs = intArrayOf(0, 1, 0, -1, 0)
val dp = Array (m) { Array (n) { LongArray (maxMove + 1) } }
for (k in 1..maxMove) {
for (i in 0 until m) {
for (j in 0 until n) {
for (dir in 0..3) {
val i2 = i + dirs[dir]
val j2 = j + dirs[dir + 1]
if (i2 < 0 || i2 == m || j2 < 0 || j2 == n)
dp[i][j][k]++
else
dp[i][j][k] = (dp[i][j][k] + dp[i2][j2][k - 1]) % mod
}
}
}
}
return dp[startRow][startColumn][maxMove].toInt()
}
}