Maximum Profit in Job Scheduling - Leetcode 1235 - Python

  Рет қаралды 34,881

NeetCodeIO

NeetCodeIO

Күн бұрын

Пікірлер
@ignazioperez4725
@ignazioperez4725 10 ай бұрын
Hey neetcode, I want to say thank you. Currently I’m in the final round for both Meta and Amazon for swe internships and your videos and website have been so helpful! I’ve been watching you for the last year and your ability to explain complicated concepts in a simple way has made me much more confident in my computer science abilities, thank you!
@saanikagupta1508
@saanikagupta1508 2 ай бұрын
So you joined Meta? Can't find you in Amazon internal portal
@kedi9987
@kedi9987 Ай бұрын
@@saanikagupta1508 😆So you are busy policing us ?
@VenomIsLazy
@VenomIsLazy 10 ай бұрын
Neetcode please keep uploading videos this helps alot thank you so much❤
@MP-ny3ep
@MP-ny3ep 10 ай бұрын
Great explanation as always. Thank you for going through different methods in the beginning of the video and explaining why you would or wouldn't consider them. That really helps a lot and that's what sets you apart from other youtubers !
@KnightMirkoYo
@KnightMirkoYo 10 ай бұрын
Thank you Navdeep so much for these daily videos.
@corvo8754
@corvo8754 10 ай бұрын
Thank you for this video, I've recently started doing Leetcode dailies and through your videos I really understood the problems :)
@MingHuang-r4t
@MingHuang-r4t 10 ай бұрын
Excellent work! Thank you for your explaination!
@randomforest_dev
@randomforest_dev 10 ай бұрын
Thanks for the video. It would be great if you can also show step by step progress by printing out values because for beginners, it is easier to understand.
@KhyatiSatija
@KhyatiSatija 10 ай бұрын
thank you so much ! may god always bless you with happiness n prosperity. you hv taught me a lot, thaanksss from the bottom ofmy heart. please never stop making these videos of the daily challenges.
@aryansingh-by9nq
@aryansingh-by9nq 10 ай бұрын
Why you have used -1, -1 in the binary search tuple, how is that working, can you please explain.
@XboxHero2
@XboxHero2 10 ай бұрын
I actually struggled to understand your solution, but then I remembered that the task is to only find the output max value, not the path itself 😂 And then it all clicked, thanks as always. You are up there among the greats such as Abdul Bari ❤
@KhyatiSatija
@KhyatiSatija 10 ай бұрын
Best explanation EVER in this entire history of DP
@siddharthaddagudi7255
@siddharthaddagudi7255 10 ай бұрын
You are my glorious king NeetCode I love you
@satyamjha68
@satyamjha68 10 ай бұрын
Ok neetcode , love your videos . By the way is it necessary to write the tabulation solution also in interview. We can obviously convert this solution into tabulation but the thing is that recursive solution is intutive but tabulation solution is not. So what i generally do is write recursive solution and then memoize it and then tabulate it
@ashwinvarma9349
@ashwinvarma9349 10 ай бұрын
awesome explanation man!
@rostislav_engineer
@rostislav_engineer 4 ай бұрын
Thanks for this video
@verma_jay
@verma_jay 10 ай бұрын
your explanation is too good
@tasneemayham974
@tasneemayham974 10 ай бұрын
Yes, he's the best! Although I code in java, his explanation is so clear that I understand the code in python and can recode it by myself in java!! Amazing!
@sourvad
@sourvad 10 ай бұрын
In NeetCode's video, he used: j = bisect.bisect(intervals, (intervals[i][1], -1, -1)) to efficiently get the next index. My questions is this: Python's documentation says that the returned index is > than all indices to its left. That would mean that the start time of j would be > end time of i. But in the problem definition, >= is allowed. What am I missing here?
@tasneemayham974
@tasneemayham974 10 ай бұрын
May you please link the documentation where you read this from?
@OwenWu-f9t
@OwenWu-f9t 9 ай бұрын
and is it because for [(1, 3, 50), (2, 4, 10), (3, 5, 40), (3, 6, 70)], we are inserting (3, -1, -1), which corresponds to the end time for (1, 3, 50) between (3, 5, 40) and (3, 6, 70) because 40 < 50 < 70?
@GurnurW
@GurnurW 6 ай бұрын
According to this video logic, he is comparing one complete tuple (e.g.: end, -1, -1) with the current tuple. Since -1 is smaller than any valid profit or end time, the tuple (end, -1, -1) will fit into the correct position considering the list is sorted by start times. So, it would give the next index whose start time is >= end time of current. If you just want to compare the start times out of the tuple, you can use bisect_left as bisect.bisect_left(intervals, intervals[i][1], key= lambda x: x[0])
@BurhanAijaz
@BurhanAijaz 10 ай бұрын
I coudnt understand this one , can you please tell me all the prerequisites for this one
@ShyGuy_16
@ShyGuy_16 10 ай бұрын
i too need the prerequisites, can somebody help?
@Kan-JenLiu
@Kan-JenLiu 10 ай бұрын
@@ShyGuy_16 backtracking
@saipriyakarnati2275
@saipriyakarnati2275 10 ай бұрын
Please upload videos of leetcode contests too
@prajjwaldubey5787
@prajjwaldubey5787 10 ай бұрын
why we can't sort it on the basis of end time, because if we sort with endtime then the minimum endtime will be in ascending order will that not work ????
@saagerbabung5652
@saagerbabung5652 10 ай бұрын
I did like that do sort and then binary search
@mikerico6175
@mikerico6175 10 ай бұрын
@neetcode Why do you so cache dict instead of @cache ?
@kathirchidhambarapandy929
@kathirchidhambarapandy929 10 ай бұрын
Great explanation
@1950NavyaOberoi
@1950NavyaOberoi 10 ай бұрын
pls help for take condition cant we just do profit[i] + helper(endTime[i]) cuz we cant start a new process until the current one is finished?
@loltubemsic
@loltubemsic 10 ай бұрын
What would the binary search code look like if we implemented it ourselves?
@ianalexthompson
@ianalexthompson 10 ай бұрын
Like this: def search_right_index( self, arr: list[tuple[int, int, int]], val: int ): left, right = 0, len(arr) - 1 while left = val: right = mid - 1 if arr[mid][0] < val: left = mid + 1 return left So you can change it in the solution: j = self.search_right_index(schedule, schedule[i][1])
@KhyatiSatija
@KhyatiSatija 10 ай бұрын
same question
@yang5843
@yang5843 10 ай бұрын
class Solution { int max = 0; int[][] s; Map map = new HashMap(); public int jobScheduling(int[] startTime, int[] endTime, int[] profit) { s = new int[startTime.length][3]; for (int i=0;ia[0]-b[0]); dfs(0); return max; } int dfs(int i) { if ( i == s.length ) return 0; if ( map.containsKey(i) ) return map.get(i); int next = dfs(i+1); int j = i; while ( j < s.length && s[j][0] < s[i][1] ) j++; max = Math.max(next,s[i][2] + dfs(j)); map.put(i,max); return max; } }
@debadattabhattacharjee3171
@debadattabhattacharjee3171 10 ай бұрын
How do I get the intuition? I understand the logic, but I cant help build up logic without watching your video? Please help sensei.
@tasneemayham974
@tasneemayham974 10 ай бұрын
Just keep practicing, bro! The more you practice the more similar problems you encounter and you'll eventually become a pro! Remember there are endless LeetCode problems but only a couple of algorithms! Practice makes perfect!
@kethankumarreddy4446
@kethankumarreddy4446 10 ай бұрын
why aren't editorial are opening?
@itsexpel
@itsexpel 9 ай бұрын
can someone explain why the recursion is n^2 and not 2^n?
@jasondubon
@jasondubon 6 ай бұрын
before caching the runtime was 2^n, after caching it became n^2
@average6317
@average6317 Ай бұрын
This doesn’t account for blocks with the same start time. It’s not a binary tree, it’s an N-tree
@shashwatkumar3079
@shashwatkumar3079 10 ай бұрын
Great video as always sir. I have learned a lot from your videos and these videos have always motivated me to go for solving problems cause I know there is someone for my help. For this video I have a question that is there a way to solve this problem by sorting the endTime values and if not then why ? I am asking this question because often time I have this confusion that whether I should sort by ending times or starting times. Again thanks a lot for your explainations.
@MrWuggles
@MrWuggles 10 ай бұрын
Oof a hard one
@karthikkongara2265
@karthikkongara2265 10 ай бұрын
bro i done my code in c++ as class Solution { public: int recur(int i,vector &v,vector &dp){ if(i >= v.size()) return 0; if(dp[i] != -1) return dp[i]; int ans = INT_MIN; // dont include dp[i] = recur(i+1,v,dp); ans = max(ans,dp[i]); // include auto it = lower_bound(v.begin()+i,v.end(),vector{v[i][1],-1,-1}); if(it != v.end()){ int ind = it - v.begin(); dp[i] = max(dp[i],v[i][2] + recur(ind,v,dp)); } ans = max(ans,dp[i]); return ans; } int jobScheduling(vector& startTime, vector& endTime, vector& profit) { int n = endTime.size(); vector v; for(int i=0;i
@Dancedfsk8
@Dancedfsk8 10 ай бұрын
Doing this in c++ is like 10x harder... I'll try to put my answer if I finished it.
@shreehari2589
@shreehari2589 10 ай бұрын
Bro just do it in python
@civilizedmonster
@civilizedmonster 10 ай бұрын
Here you go: class Solution { public: int jobScheduling(vector& startTime, vector& endTime, vector& profit) { vector jobs; int n=startTime.size(); for(int i=0; i
@karthikkongara2265
@karthikkongara2265 10 ай бұрын
@@civilizedmonster yeah got my mistake thanks bro
@tonyz2203
@tonyz2203 7 ай бұрын
my stupid brain cant handle this problem.
@RamSankarHarikrishnan
@RamSankarHarikrishnan 7 ай бұрын
this is literally a greedy problem
@ashutoshjha2648
@ashutoshjha2648 10 ай бұрын
why it will not work if i don't sort it,and just memoize with maxEndTime,index? i could't able to figure out the why
@kathirchidhambarapandy929
@kathirchidhambarapandy929 10 ай бұрын
u need to sort to check for overlap its a greedy activity selection problem
@吳倩怡男朋友
@吳倩怡男朋友 10 ай бұрын
Since that is not optimal substructure for dp. An anology would be you need to calculate all parent nodes before calculating dp[this] in topological sort.
Arithmetic Slices II - Leetcode 446 - Python
21:19
NeetCodeIO
Рет қаралды 17 М.
Making an Algorithm Faster
30:08
NeetCodeIO
Рет қаралды 147 М.
If people acted like cats 🙀😹 LeoNata family #shorts
00:22
LeoNata Family
Рет қаралды 9 МЛН
Real Man relocate to Remote Controlled Car 👨🏻➡️🚙🕹️ #builderc
00:24
Medium Google Coding Interview With Ben Awad
51:27
Clément Mihailescu
Рет қаралды 1,3 МЛН
Job Sequencing Problem | Greedy Algorithms
17:00
take U forward
Рет қаралды 161 М.
Rotating the Box - Leetcode 1861 - Python
15:14
NeetCodeIO
Рет қаралды 6 М.
L6. Job Sequencing Problem | Greedy Algorithm Playlist
16:07
take U forward
Рет қаралды 51 М.
Freedom Trail - Leetcode 514 - Python
25:18
NeetCodeIO
Рет қаралды 14 М.
LeetCode was HARD until I Learned these 15 Patterns
13:00
Ashish Pratap Singh
Рет қаралды 577 М.
Dynamic Programming isn't too hard. You just don't know what it is.
22:31
DecodingIntuition
Рет қаралды 197 М.
Cherry Pickup II - Leetcode 1463 - Python
24:00
NeetCodeIO
Рет қаралды 16 М.
BEST MEETING POINT | LEETCODE 296 | PYTHON OPTIMAL SOLUTION
18:06
Cracking FAANG
Рет қаралды 2,4 М.
If people acted like cats 🙀😹 LeoNata family #shorts
00:22
LeoNata Family
Рет қаралды 9 МЛН