Тёмный

Word Break II - Leetcode 140 - Python 

NeetCodeIO
Подписаться 155 тыс.
Просмотров 11 тыс.
50% 1

🚀 neetcode.io/ - A better way to prepare for Coding Interviews
🧑‍💼 LinkedIn: / navdeep-singh-3aaa14161
🐦 Twitter: / neetcode1
⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
Problem Link: leetcode.com/problems/word-br...
0:00 - Read the problem
0:39 - Backtracking Explanation
6:02 - Backtracking Coding
8:37 - Memoization Explanation
15:08 - Memoization Coding
leetcode 140
#neetcode #leetcode #python

Опубликовано:

 

28 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 24   
@rostyslavmochulskyi159
@rostyslavmochulskyi159 2 месяца назад
Thank you! Outdated: I believe these sections should be Cache/Memo, not Backtracking as sections 2-3 8:37 - Backtracking Explanation 15:08 - Backtracking Coding
@csam11100
@csam11100 2 месяца назад
Build same DFS + Memoization like your flow but your explanation makes me realize I can totally remove the extra work like creating a preprocessed DP array that DP[i] checks s[i:] is breakable or not. If that was used, it could be added as a condition before Line 16 in your code. Again, thank you so much NC
@pastori2672
@pastori2672 2 месяца назад
i saw people brag about solving this problem but all thanks to you i was able to solve it like it was an easy Thank you bro ❤
@johnniewalkerjohnniewalker2459
@johnniewalkerjohnniewalker2459 2 месяца назад
Great work!
@MP-ny3ep
@MP-ny3ep 2 месяца назад
Thank you for this
@antondonohue8943
@antondonohue8943 2 месяца назад
Is there a reason you prefer to have state saved outside of your recursive function? Like in this case you have to append and pop from cur. I think it would be neater if made cur and argument `backtrack(i, cur + [w])` or something. On another note I am very grateful for what you're doing. You've helped me a lot
@MehmetDemir-xi3yy
@MehmetDemir-xi3yy 2 месяца назад
Isn't substring is an O(n) operation? So I think total time complexity is N * 2^n. What do you think?
@ItachiUchiha-xi7ox
@ItachiUchiha-xi7ox 2 месяца назад
yeah but N can be max up to 20 so N*2^n will also work fine
@deathbombs
@deathbombs 2 месяца назад
Approach 1: "using up"letters, then use remainder" backtracking from where we're at Sln 2: BFS check if word fits at current index
@aashishbathe
@aashishbathe 2 месяца назад
Can you think of / give us a trie based solution? Topics suggested it can be done with trie?
@sarthakjohnsonprasad3909
@sarthakjohnsonprasad3909 2 месяца назад
Store all the words in the trie and then dfs?
@Nishit_369
@Nishit_369 2 месяца назад
So, word break 1 was a decision problem and word break 2 is an enumeration problem. Right?
@chien-yuyeh9386
@chien-yuyeh9386 2 месяца назад
First🎉
@thelindayz2087
@thelindayz2087 2 месяца назад
It's not really O(2^n), it is O(n*2^n) because you do s[i:j] which takes O(n) time in the worst case
@momenwadood1342
@momenwadood1342 2 месяца назад
Please add the difficulty of problems in the thumbnail or title
@ritikaagrawal769
@ritikaagrawal769 2 месяца назад
why have a nested function when you can use recursion on the given one...? For this specific problem, i found that the most basic(recursive) solution works just as good as a backtracking. but what do i know... def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: if not s : return [ ] res = [ ] for i in range(len(s)-1) : if s[:i+1] in wordDict : ans = s[:i+1] output = self.wordBreak(s[i+1:],wordDict) for out in output : if out : res.append(ans+" "+out) if s in wordDict : res.append(s) return res
@pranithtirumalsetti1453
@pranithtirumalsetti1453 2 месяца назад
Second🎉
@Antinormanisto
@Antinormanisto 2 месяца назад
I don't understand why I couldn't come to the first solution... I'm feel depresion
@rahulnegi456
@rahulnegi456 2 месяца назад
lol same it was fairly simple and easy
@MehmetDemir-xi3yy
@MehmetDemir-xi3yy 2 месяца назад
Btw word by word solution might be inefficient if we have same words 1000 times. Suppose string is "catscats" (or longer) and words are [cats, cats, cats.......] (1000 or 100000) So we need to have multiply big o with wordDict size. But if we do substring approach since we have set, we are safe
@1vader
@1vader 2 месяца назад
The description says all given words are unique. Also, even if not, you can use a set with that approach as well. Though checking 1000 words vs max 20 substrings is still less efficient in practice but I guess not in big O.
@MehmetDemir-xi3yy
@MehmetDemir-xi3yy 2 месяца назад
Thank you. Yes I read the constraints but I was talking about general comparison between them. As you said 1000 words is less efficient and it depends on string length and word dict size. If word dict size are small and unique, word by word is efficient than substring approach but if string length is small and word dict size are big or not unique then substring approach is more efficient
@nikhil199029
@nikhil199029 2 месяца назад
i chose xxx
@Mappy13Neb
@Mappy13Neb 2 месяца назад
Solution that uses your previous Word Break solution: class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: dp = [[False, []] for _ in range(len(s) + 1)] dp[len(s)] = [True, [""]] for i in range(len(s) - 1, -1, -1): for word in wordDict: if i + len(word)
Далее
Student Attendance Record II - Leetcode 552 - Python
27:10
How I would learn Leetcode if I could start over
18:03
Просмотров 374 тыс.
ЭТОТ ПЕНЁК ИЗ PLANTS VS ZOMBIES - ИМБА!
00:48
Что не так с воздухом в Корее?
00:45
WHY did this C++ code FAIL?
38:10
Просмотров 234 тыс.
5 Useful F-String Tricks In Python
10:02
Просмотров 284 тыс.
I Solved 1583 Leetcode Questions  Here's What I Learned
20:37
25 nooby Python habits you need to ditch
9:12
Просмотров 1,7 млн
All Rust string types explained
22:13
Просмотров 156 тыс.
Where Does Bad Code Come From?
42:21
Просмотров 187 тыс.
How to Solve ANY LeetCode Problem (Step-by-Step)
12:37
Просмотров 146 тыс.
ЭТОТ ПЕНЁК ИЗ PLANTS VS ZOMBIES - ИМБА!
00:48