L9. Insert Intervals | Greedy Algorithms Playlist

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 ม.ค. 2025

ความคิดเห็น • 53

  • @sohamsonwane1534
    @sohamsonwane1534 7 หลายเดือนก่อน +47

    while(i

  • @KartikeyTT
    @KartikeyTT 6 หลายเดือนก่อน +24

    CORRECTION : In the 2nd while loop initialization it will be while(i < n && intervals[i][0]

  • @pratikshakumbhar1874
    @pratikshakumbhar1874 หลายเดือนก่อน +2

    Hey striver, for the following test case Input: intervals = [[1,3], [4,5], [6,7], [8,10]], newInterval = [5,6]; the above code might give an error a very small change in your code is this insertInterval(intervals, newInterval) {
    // Your code here
    let n=intervals.length;
    let res=[];
    let i=0;
    while(i

  • @govindjain424
    @govindjain424 5 หลายเดือนก่อน +4

    We can use binary search to find the overlapping region. The remaining left and right parts have just been added without any modification. The time complexity remains the same but just a slight optimization.

  • @samratbhattacharya593
    @samratbhattacharya593 7 หลายเดือนก่อน +10

    small recomendations in the code:
    1. use different variables to find the starting and ending ranges for intersection values
    2. use a = in the 2nd while to take in the range when the newInterval[1] matches the intervals[i][1] in any case, for eg: newInterval={4,8} and the one of the intervals is [.......{8,10},.....]
    code:
    vector insert(vector& intervals, vector& newInterval) {
    vectorans;
    int i=0;
    while(i

    • @anoopkumaryadav5084
      @anoopkumaryadav5084 7 หลายเดือนก่อน +1

      It would give wrong output. Inside the second while loop condition should be i

    • @cs_in_10_minutes
      @cs_in_10_minutes 5 หลายเดือนก่อน +1

      @@anoopkumaryadav5084 both are same buddy

    • @Nene_Anonymous
      @Nene_Anonymous หลายเดือนก่อน +1

      ​@cs_in_10_minutes both are not same.. intervalEnd value is changing but not newinterval[1]. You have to update the value in each comparison. So you need to use intervalEnd

  • @apmotivationakashparmar722
    @apmotivationakashparmar722 3 หลายเดือนก่อน +1

    Thank you so much for great Explaination.

  • @sohamsonwane1534
    @sohamsonwane1534 7 หลายเดือนก่อน +7

    for java
    class Solution {
    public int[][] insert(int[][] intervals, int[] newInterval) {
    ArrayList ans = new ArrayList();
    int start= 0;
    int end= 1;
    int n = intervals.length;
    int i = 0;
    //left part which do not have overlap
    while(i

    • @jayaramallamsetti2219
      @jayaramallamsetti2219 6 หลายเดือนก่อน +1

      Here is the smaller code:
      class Solution {
      public int[][] insert(int[][] intervals, int[] newInterval) {
      int n = intervals.length;
      List ans = new LinkedList();
      int i =0;
      while(i

  • @purushottam108
    @purushottam108 6 หลายเดือนก่อน +2

    class Solution {
    public:
    vector insert(vector& intervals, vector& newInterval) {
    int n = intervals.size();
    int i = 0;
    vectorresult;
    while(i

  • @tusharsingh9802
    @tusharsingh9802 5 หลายเดือนก่อน +19

    old videos were better

  • @tasnimul0096
    @tasnimul0096 24 วันที่ผ่านมา +1

    what if i just take the new interval as input, then sort it, and the find the overlapping part and fix it using min and max?

  • @AmanjotSingh-rj7ox
    @AmanjotSingh-rj7ox 4 หลายเดือนก่อน +1

    we can do binary search

  • @yashmundada2483
    @yashmundada2483 6 หลายเดือนก่อน +2

    This could have been done with binary search as well.
    Thats the point of this question otherwise what's the difference in this question and merge intervals.
    Could have just added the new interval into the old and applied merge intervals ?

  • @psinity
    @psinity 7 หลายเดือนก่อน

    CPP
    class Solution {
    public:
    vector insertNewEvent(int n, vector &intervals, vector &newEvent)
    {
    vector ans;
    int i = 0;
    while(i < n && intervals[i][1] < newEvent[0])
    {
    ans.push_back(intervals[i]);
    i++;
    }
    // int start = -1
    while(i < n && intervals[i][0] newEvent[1])
    {
    ans.push_back(intervals[i]);
    i++;
    }
    return ans;
    }
    };

  • @DeadPoolx1712
    @DeadPoolx1712 3 หลายเดือนก่อน +1

    UNDERSTOOD;

  • @Dsa_kabaap
    @Dsa_kabaap 7 หลายเดือนก่อน +2

    Sir please start making videos on strings and stacks

  • @abhishekraj_8268
    @abhishekraj_8268 2 หลายเดือนก่อน

    struct Range {
    int start;
    int end;
    };
    class Solution {
    static bool comparator(const Range &a, const Range &b) {
    return a.start < b.start;
    }
    public:
    vector insert(vector& intervals, vector& newInterval) {
    int n = intervals.size();
    Range arr[n + 1];


    for (int i = 0; i < n; i++) {
    arr[i].start = intervals[i][0];
    arr[i].end = intervals[i][1];
    }


    arr[n].start = newInterval[0];
    arr[n].end = newInterval[1];


    sort(arr, arr + n + 1, comparator);

    vector ans;

    ans.push_back({arr[0].start, arr[0].end});

    for (int i = 1; i < n + 1; i++) {

    vector& last = ans.back();


    if (arr[i].start > last[1]) {
    ans.push_back({arr[i].start, arr[i].end});
    } else {

    last[1] = max(last[1], arr[i].end);
    }
    }

    return ans;
    }
    };

  • @abhishekraj_8268
    @abhishekraj_8268 2 หลายเดือนก่อน

    class Solution {

    public:
    vector insert(vector& intervals, vector& newInterval) {

    int n = intervals.size();
    vector ans;
    intervals.push_back(newInterval);
    sort(intervals.begin(),intervals.end());
    ans.push_back(intervals[0]);

    for (int i = 1; i last[1]) {
    ans.push_back(intervals[i]);
    } else {

    last[1] = max(last[1], intervals[i][1]);
    }
    }

    return ans;
    }
    };

  • @nikhilmadaan29
    @nikhilmadaan29 7 หลายเดือนก่อน +1

    in the last question (1,2) & (2,3) were not considered as overlapping but in this one it will considered, how can we be sure ?

  • @hk_56754
    @hk_56754 9 วันที่ผ่านมา

    can't we use a modified version of binary search ??

  • @akshayr6104
    @akshayr6104 2 หลายเดือนก่อน

    We could use binary search to find the middle portion, right?

    • @Catharsiswitharthritis
      @Catharsiswitharthritis หลายเดือนก่อน

      Yes it is optimal, but still the algorithm will be O(n) only

  • @shreyxnsh.14
    @shreyxnsh.14 2 หลายเดือนก่อน

    solved after a couple of wrong answers unfortunately:
    bool comp(vector & a, vector &b){
    if(a[0] == b[0])
    return a[1] < b[1];
    return a[0] < b[0];
    }
    class Solution {
    public:
    vector insert(vector& intervals, vector& newInterval){
    if(intervals.empty())
    return {newInterval};
    if(newInterval.empty())
    return intervals;

    if(newInterval[1] < intervals[0][0]){
    intervals.push_back(newInterval);
    sort(intervals.begin(), intervals.end(), comp);
    return intervals;
    }
    if(newInterval[0] > intervals[intervals.size()-1][1]){
    intervals.push_back(newInterval);
    sort(intervals.begin(), intervals.end(), comp);
    return intervals;
    }
    vector ans;
    int i = 0;
    while(i < intervals.size() && (intervals[i][1] < newInterval[0])){
    ans.push_back({intervals[i]});
    i++;
    }
    int j = intervals.size() - 1;
    while(j >=0 && (intervals[j][0] > newInterval[1])){
    ans.push_back({intervals[j]});
    j--;
    }
    int start = min(intervals[i][0], newInterval[0]);
    int end = max(intervals[j][1],newInterval[1]);
    ans.push_back({start, end});
    sort(ans.begin(), ans.end(), comp);
    return ans;
    }
    };

  • @poshalabharath241
    @poshalabharath241 5 หลายเดือนก่อน

    notes link is not a correct one for code

  • @Shivi32590
    @Shivi32590 6 หลายเดือนก่อน

    thank you

  • @fazilshafi8083
    @fazilshafi8083 5 หลายเดือนก่อน

    JAVA SOLUTION 👇
    class Solution {
    public int[][] insert(int[][] intervals, int[] newInterval) {
    ArrayList ans = new ArrayList();
    int n = intervals.length;
    int i = 0;

    // Add all intervals before the new interval
    while (i < n && intervals[i][1] < newInterval[0]) {
    ArrayList temp = new ArrayList();
    temp.add(intervals[i][0]);
    temp.add(intervals[i][1]);
    ans.add(temp);
    i++;
    }

    // Merge overlapping intervals with the new interval
    while (i < n && intervals[i][0]

  • @silent-st1no
    @silent-st1no 7 หลายเดือนก่อน

    super simple
    class Solution {
    public:
    vector insert(vector& intervals, vector& newInterval) {
    intervals.push_back(newInterval);
    sort(intervals.begin(),intervals.end());
    int n=intervals.size();
    vectorans;
    for(int i=0;ians.back()[1])
    ans.push_back(intervals[i]);
    else
    ans.back()[1]=max(ans.back()[1],intervals[i][1]);
    }
    return ans;
    }
    };

    • @anubhav0355
      @anubhav0355 7 หลายเดือนก่อน +1

      given intervals are already sorted, use it rather than sorting it again and converting this question into merge intervals!

    • @kashvibhanderi771
      @kashvibhanderi771 7 หลายเดือนก่อน

      ​​@@anubhav0355Look carefully this is converted into merge interval question

    • @psinity
      @psinity 7 หลายเดือนก่อน

      this is an nlogn approach, will give TLE, we need O(n). And yeah as it is already sorted we shouldn't sort again

    • @silent-st1no
      @silent-st1no 7 หลายเดือนก่อน

      @@psinity However it is accepted

    • @dabhijay4997
      @dabhijay4997 6 หลายเดือนก่อน

      May be you can identify where to insert newInterval into given intervals using binary search after that you can use merge interval problem solution.(No need to sort in merge interval problem solution)
      Time complexity:O(logn) + O(n).

  • @learn_vinod
    @learn_vinod 3 หลายเดือนก่อน +1

    ⚠ mistake in 2nd while loop -> use

  • @yashpokar
    @yashpokar 4 หลายเดือนก่อน +1

    Best explaination for perticular problem

  • @KeigoEdits
    @KeigoEdits 6 หลายเดือนก่อน +2

    when I saw this question, there was in my mind that it is saying to insert, ofcourse it will be inplace and end up doing inplace which beats 5% people in runtime😂 BUT beats 98% people in terms of Memory
    Here is the code, if anyone wanna see this approach
    class Solution {
    public:
    vector insert(vector& inter, vector& newinter) {
    int n=inter.size(),low=0,high=n-1,ans=-11;
    while(low

    • @iamnottech8918
      @iamnottech8918 5 หลายเดือนก่อน +1

      bro are u able to understand your code now

    • @KeigoEdits
      @KeigoEdits 5 หลายเดือนก่อน +1

      @@iamnottech8918 lol I mean still know what intuition I took and code again, but not the exact code

  • @KartikeyTT
    @KartikeyTT 6 หลายเดือนก่อน

    tysm sir

  • @shikhartomar3329
    @shikhartomar3329 7 หลายเดือนก่อน

    phenomenal playlist

  • @ashishpradhan6250
    @ashishpradhan6250 6 หลายเดือนก่อน

    understood

  • @RachitKala-cp4uh
    @RachitKala-cp4uh 6 หลายเดือนก่อน

    Understood

  • @pranavmisra5870
    @pranavmisra5870 6 หลายเดือนก่อน

    nice

  • @HarishchandraKumar-ew4oh
    @HarishchandraKumar-ew4oh 7 หลายเดือนก่อน

    very well explained playlist

  • @silent-st1no
    @silent-st1no 7 หลายเดือนก่อน +1

    super simple code
    class Solution {
    public:
    vector insert(vector& intervals, vector& newInterval) {
    intervals.push_back(newInterval);
    sort(intervals.begin(),intervals.end());
    int n=intervals.size();
    vectorans;
    for(int i=0;ians.back()[1])
    ans.push_back(intervals[i]);
    else
    ans.back()[1]=max(ans.back()[1],intervals[i][1]);
    }
    return ans;
    }
    };

  • @MEGHANAM2022BatchPESUniversity
    @MEGHANAM2022BatchPESUniversity 6 หลายเดือนก่อน

    watched

  • @UECAshutoshKumar
    @UECAshutoshKumar 4 หลายเดือนก่อน +2

    Thank you

  • @SibiRanganathL
    @SibiRanganathL 3 หลายเดือนก่อน

    Understood