BS 23. Row with maximum number of 1s | Binary Search on 2D Arrays

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

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

  • @dawarvaibhav
    @dawarvaibhav 10 หลายเดือนก่อน +40

    O(m + n)
    int rowWithMax1s(vector arr, int m, int n) {
    int i = 0, j = n - 1;
    int ans = -1;
    while(i < m && j >= 0)
    {
    if(arr[i][j] == 1)
    {
    ans = i;
    j--;
    }
    else
    i++;
    }
    return ans;
    }

    • @az-zm4ji
      @az-zm4ji 6 หลายเดือนก่อน

      good solution

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

      nice

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

      I came to look for this in video, thanks man

    • @TarunGautam-r7g
      @TarunGautam-r7g 4 หลายเดือนก่อน

      good👍

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

      @@urstrulyjatin Worst case of yours is still O(row * col) in case there are no 1's

  • @kuldeeprawat-zp7od
    @kuldeeprawat-zp7od ปีที่แล้ว +2

    Int row = -1;
    Int j = m-1;
    While(j>=0 and arr[0][j]==1){
    J--;
    Row=0;
    }
    For(int i =1;i=0 and arr[i][j]==1){
    J--;
    Row=i;
    }
    }
    Return row;

  • @adityarajvermaa
    @adityarajvermaa ปีที่แล้ว +3

    i coded this by myself.........firstly the iterative approach n*m comp..... and then n*log(m) comp..........thanks bhai

  • @Dipanshutripathi2407
    @Dipanshutripathi2407 ปีที่แล้ว +4

    Finished one more video with ease . Thank you very much for such amazing content.

  • @rashid_iiitd
    @rashid_iiitd ปีที่แล้ว +9

    Thank you striver. Eagerly waiting for String

  • @oye_pritpal
    @oye_pritpal 8 หลายเดือนก่อน +54

    day 124 of asking striver to post the series on strings!

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

      Day 124 of wasting your precious time

    • @dumpster-jackson
      @dumpster-jackson 6 หลายเดือนก่อน

      @@trueemperor3647 Day 169 of wasting my time

    • @ImpactTao
      @ImpactTao 4 หลายเดือนก่อน +3

      You would have learnt it yourself than counting days, lol

    • @Gokul-gkl
      @Gokul-gkl หลายเดือนก่อน

      tataa bye bye.., gud bye

  • @cinime
    @cinime ปีที่แล้ว +1

    Understood! Such a great explanation as always, thank you very much for your effort!!

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

    This playlist is priceless. Trust me.

  • @RiteshKumar-ge5ee
    @RiteshKumar-ge5ee ปีที่แล้ว +18

    One observation would be that since rows are sorted, so if we start from top-left and check column-wise, then the first 1 we encounter would mean that this row has all 1's ahead and below rows may have 1 or 0, but since we are required to give least row, so this would be the answer. That's it.
    Code:
    for(int j=0;j

    • @akshattripathi5756
      @akshattripathi5756 ปีที่แล้ว +2

      yeah same, i also thought of that after first looking at the problem

    • @TechHeda7
      @TechHeda7 ปีที่แล้ว +11

      What if all the elements in the matrix are zeroes??..then we will end up with travesing through all the elements..which makes the TC at worst case as O(N*M)

    • @Nikhil-Tomar
      @Nikhil-Tomar 7 หลายเดือนก่อน

      Yeah that is the O(N+M) solution, I remember solving a similar question like this. It is the best approach because even with binary search it is O(M * log(N)).

    • @Nikhil-Tomar
      @Nikhil-Tomar 7 หลายเดือนก่อน

      ​​@@TechHeda7nah, if we see current element is 0 we move to next row, column will only move backward with current element is 1. Therefore if everything is 0, it would only take O(M)
      Also, I am not talking about the code above, I am talking about its real solution

    • @trashcan-md7cw
      @trashcan-md7cw 4 หลายเดือนก่อน

      But this also has the worst time complexity as O(N*M)
      If the matrix is :-
      0 0 0 0 0
      0 0 0 0 0
      0 0 0 0 1
      then it traversed the whole array to find the answer, Yeah but it is more efficient than the brute force.

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

    Once again a fabulous explanation ❤

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

    Understood,thanks striver for this amazing video.

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

    I think this can be solved in m+n by traversing from right most end of first row and moving left whenever it's a 1, whenever 0 comes, we go down and we maintain the min row index in a variable

    • @harigs72
      @harigs72 11 วันที่ผ่านมา

      class Solution {
      public int[] findMaxRow(int mat[][], int N) {
      // code here
      int row=0;
      int count=0;
      int j=N-1;
      for(int i=0;i-1&&mat[i][j]==1){
      row=i;
      count++;
      j--;

      }
      }
      int[]ans={row,count};
      return ans;
      }
      };
      Yeah ! Your are absolutely correct
      Time complexity - O(N+M)

  • @adebisisheriff159
    @adebisisheriff159 ปีที่แล้ว +1

    Thanks Striver!

  • @YourCodeVerse
    @YourCodeVerse ปีที่แล้ว +1

    Understood✅🔥🔥

  • @senseiAree
    @senseiAree ปีที่แล้ว +2

    Understood ❤

  • @myamazonproducts1683
    @myamazonproducts1683 ปีที่แล้ว +8

    hi striver im big fan of you.
    please explain O(n+m) sloution as well.

    • @kuldeeprawat-zp7od
      @kuldeeprawat-zp7od ปีที่แล้ว +2

      Int row = -1;
      Int j = m-1;
      While(j>=0 and arr[0][j]==1){
      J--;
      Row=0;
      }
      For(int i =1;i=0 and arr[i][j]==1){
      J--;
      Row=i;
      }
      }
      Return row;

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

      int rowWithMax1s(vector &matrix, int n, int m)
      {
      int i=0,j=m-1;
      int ind=-1;
      while(i=0){
      if(matrix[i][j]==1){
      j--;
      ind=i;
      }else{
      i++;
      }
      }
      return ind;
      }

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

    Can also pass whole matrix to lowerbound and do arr[rowindex][mid] but also need to pass rowindex to function .

  • @per.seus._
    @per.seus._ ปีที่แล้ว +1

    UNDERSTOOD EVERYTHING

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

    better sol =>
    int rowWithMax1s(vector &arr) {
    // code here
    int n = arr.size(), m = arr[0].size();
    int row = 0, col = m-1;
    int index = -1;
    int count = -1, ans = -1;
    while(row=0){
    if(arr[row][col] == 1){
    count ++;
    col--;
    }
    else{
    row ++ ;
    }
    if(count > ans){
    ans = count;
    index = row;
    }
    }
    return index;
    }

  • @mriduljain1981
    @mriduljain1981 ปีที่แล้ว +5

    hey striver this question could also be solved using a basic observation of sorted rows ,in tc -> O(max(n,m))
    int rowWithMax1s(vector &matrix, int n, int m){
    int i=0,row=0,j=m-1;
    while(j>=0 && i

    • @bevanmehra1706
      @bevanmehra1706 ปีที่แล้ว

      bro he is teaching BS not how to do question in less time complexity ,I think.

    • @mriduljain1981
      @mriduljain1981 ปีที่แล้ว

      @@bevanmehra1706 but he did the next question in the series with the same concept which i just told , so ig he is focusing on less time complexity , i think

    • @knani2034
      @knani2034 ปีที่แล้ว

      ​@@mriduljain1981Thank You🎉

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

    Understood

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

    This was asked in Amazon interview

  • @misbashaikh3357
    @misbashaikh3357 ปีที่แล้ว +11

    Please upload more and more videos. I know you'll be busy but please upload as soon as you can . Thank you so this content ❤

  • @culeforever5408
    @culeforever5408 ปีที่แล้ว +2

    understood 😀

  • @ArpanChakraborty-do6yz
    @ArpanChakraborty-do6yz 10 หลายเดือนก่อน +1

    Understood 10:01

  • @utsavseth6573
    @utsavseth6573 ปีที่แล้ว +1

    Keep it up.

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

    if you put inside the for loop then time complexity is just o(n)
    count=sum(mat[i])
    if count>f_count:
    ans=i
    f_count=count

  • @cricketzonet10
    @cricketzonet10 ปีที่แล้ว +1

    Sir please upload strings question approach.❤

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

    understood! Thanks bhaiya

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

    Understood, thank you.

  • @tuhinbanerjee158
    @tuhinbanerjee158 ปีที่แล้ว +1

    Opposite Polarity concept also works over here....

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

      2:44 it works as long as any array is sorted

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

    UNDERSTOOD;

  • @TechHeda7
    @TechHeda7 ปีที่แล้ว +1

    The required TC should be O(N+M) as per the question..but we have achieved O(nlogm)

  • @KAMLESHSINGH-vr3bl
    @KAMLESHSINGH-vr3bl ปีที่แล้ว +1

    understood

  • @pratishdewangan132
    @pratishdewangan132 ปีที่แล้ว +4

    There is some error in submission in coding ninja,

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

    Awesome lecture..................

  • @gauravkabdwal309
    @gauravkabdwal309 ปีที่แล้ว +1

    Understood

  • @shiwanginarayan1398
    @shiwanginarayan1398 6 หลายเดือนก่อน +3

    The Java code using BS is not working in code ninja. It throws NPE. Anyone facing this ?

    • @RiyaDey2296
      @RiyaDey2296 24 วันที่ผ่านมา

      yes i too facing the same problem

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

    Understood!!!

  • @SajanKumar-ec2us
    @SajanKumar-ec2us ปีที่แล้ว +1

    Tc is given o(m+n)

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

    Showing runtime error even after submitting the correct code

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

    Simple O(n+m) solution :
    int rowWithMax1s(vector &arr) {
    int n= arr.size();
    int m=arr[0].size();
    int maxRow=-1;
    int i=0,j=m-1;
    while(i=0){
    if(arr[i][j]==0)
    i++;
    else{
    maxRow=i;
    j--;
    }
    }
    return maxRow;
    }

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

    understood bro🙇🏿‍♂🙇🏿‍♂

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

    understood bhaiya

  • @dhruvdonsahu9972
    @dhruvdonsahu9972 7 วันที่ผ่านมา

    what about this one:
    int a=arr.size();
    int b=arr[0].size();
    for(int i=0;i

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

    understood!

  • @arihantjammar8888
    @arihantjammar8888 ปีที่แล้ว +1

    understood

  • @girikgarg8
    @girikgarg8 ปีที่แล้ว +1

    Done

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

    class Solution {
    public int rowWithMax1s(int arr[][]) {
    int rows = arr.length;
    int cols = arr[0].length;
    int i =0;
    int j =0;
    while(i

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

    One test case is failing in coding ninjas I have checked the code 5 times

  • @pratyakshhhhhhhhhhhhhhhhhhhhh
    @pratyakshhhhhhhhhhhhhhhhhhhhh ปีที่แล้ว +1

    🎉🎉❤❤

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

    i got brute force by myself eventhough it is not acceptable but i thank striver to make me to do the brute method myself

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

    tysm sir

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

    I am getting nullPointerException in one ip where first row =[3,3] whereas other rows are having 3 values

  • @raghavkansal3765
    @raghavkansal3765 ปีที่แล้ว +1

    "understood"

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

    understood : )

  • @rahulkarki6857
    @rahulkarki6857 ปีที่แล้ว +1

    int rowWithMax1s(vector &matrix, int n, int m) {
    int ans=-1;
    for(int i=0;i

    • @thenikhildaiya.
      @thenikhildaiya. ปีที่แล้ว +1

      Imagine matrix to be :
      [0 , 0 , 0 , 0 , 0]
      [0 , 0 , 0 , 0 , 0]
      [0 , 0 , 0 , 0 , 0]
      [0 , 0 , 0 , 0 , 1]
      In this case, your solution will check every element column wise and will stop at the last column at index [3][4]
      Since it is checking all elements one by one. I will say O(N x M)!
      But nice approach for checking 1s in rows👌

  • @user-kk4qv5fy6k
    @user-kk4qv5fy6k 4 หลายเดือนก่อน

    When I run this below java code in coding ninja ,always gives me run time error
    Can anyone help me resolve this?
    public static int lowerBound(ArrayList arr, int n, int x) {
    int low = 0;
    int high = n - 1;
    int ans = n;
    while (low = x) {
    ans = mid;
    // look for smaller index on the left
    high = mid - 1;
    } else {
    low = mid + 1; // look on the right
    }
    }
    return ans;
    }
    public static int rowMaxOnes(ArrayList matrix, int n, int m) {
    int cnt_max = 0;
    int index = 0;
    // traverse the rows:
    for (int i = 0; i < n; i++) {
    // get the number of 1's:
    int cnt=lowerBound(matrix.get(i), m, 1);
    int cnt_ones=m-cnt;
    if (cnt_ones > cnt_max) {
    cnt_max = cnt_ones;
    index = i;
    }
    }
    return index;
    }

  • @mahimagautam1810
    @mahimagautam1810 ปีที่แล้ว

    leetcode soln:
    class Solution {
    public int lowerBound(int[] mat,int n,int x){
    int low =0;
    int high = n-1;
    int ans =n;
    Arrays.sort(mat);
    while(low=x){
    ans = mid;
    high =mid-1;
    }
    else{
    low =mid+1;
    }
    }
    return ans;
    }
    public int[] rowAndMaximumOnes(int[][] mat) {
    int count_max = -1;
    int no_of_ones =0;
    int index = -1;
    int output[] = new int[2];
    int n = mat.length;
    int m = mat[0].length;
    for(int i=0;icount_max){
    count_max =no_of_ones;
    index =i;
    output[0] = index;
    output[1] = count_max;
    }
    }
    return output;
    }
    }

  • @abhishek_dagar
    @abhishek_dagar ปีที่แล้ว +2

    LeetCode Solution :
    class Solution {
    public:
    int lower(vector arr,int n,int x){
    int low = 0;
    int high = n-1;
    int ans = n;
    while(low = x){
    ans = mid;
    high = mid-1;
    }
    else{
    low = mid+1;
    }
    }
    return ans;
    }
    vector rowAndMaximumOnes(vector& mat) {
    int n = mat.size();
    int index = -1;
    int max_count = -1;
    int m = mat[0].size();
    for(int i = 0;i max_count){
    max_count = count_ones;
    index = i;
    }
    }
    return {index,max_count};
    }
    };

  • @TIMETOTECH
    @TIMETOTECH ปีที่แล้ว +5

    This is not the optimal approach the optimal approach is O(n+m)

    • @abhishek_dagar
      @abhishek_dagar ปีที่แล้ว +1

      that is not valid in all the cases in worst case that apporach also take O(n*m)

    • @TIMETOTECH
      @TIMETOTECH ปีที่แล้ว

      Nope bro try using the search in a sorted Matrix 2 it is always be valid

  • @Ag-pr1uo
    @Ag-pr1uo ปีที่แล้ว +2

    // This is also a good solution!
    int rowWithMax1s(vector &matrix, int n, int m) {
    for(int i = 0;i

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

    int rowWithMax1s(int arr[][], int n, int m) {
    int ans = -1;
    int j = m - 1;
    for (int i = 0; i < n; i++) {
    while (j >= 0 && arr[i][j] == 1) {
    j--;
    ans = i;
    }
    }
    return ans;
    }

  • @_let_me_check_338
    @_let_me_check_338 ปีที่แล้ว +1

    @take U forward
    // Is this solution any different... tried to optimize by row since elements are only 0 and 1
    import java.util.ArrayList;
    public class Solution
    {
    private static int onePresent(ArrayList matrix, int n, int m, int col) {

    for (int i = 0; i < n; ++i) {
    if (matrix.get(i).get(col) == 1) {
    return i;
    }
    }
    return -1;
    }
    public static int maximumOnesRow(ArrayList matrix, int n, int m) {
    // Write your code here.
    int low = 0, high = m - 1, ans = -1;
    while (low

  • @apoorva5961
    @apoorva5961 22 วันที่ผ่านมา

    😇

  • @cenacr007
    @cenacr007 ปีที่แล้ว

    us

  • @rajeshkumar-ws5ku
    @rajeshkumar-ws5ku 10 หลายเดือนก่อน +1

    int rowWithMax1s(vector &matrix, int n, int m) {
    if (n == 0 || m == 0) {
    return -1; // Matrix is empty
    }
    int i = 0;
    int j = m - 1;
    int ans = -1;
    while (i < n && j >= 0) {
    if (matrix[i][j] == 1) {
    ans = i;
    j--;
    } else {
    i++;
    }
    }
    return ans;
    }
    can we solve this questions using this approach it's time complexity is 0(m+n)

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

    Understood

  • @daljeetsingh7261
    @daljeetsingh7261 ปีที่แล้ว +1

    Understood

  • @abhinanda7049
    @abhinanda7049 ปีที่แล้ว +1

    understood

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

    understood!

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

    understood!

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

    Understood

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

    understood

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

    understood!

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

    Understood

  • @m.gopalakrishnan12-acs27
    @m.gopalakrishnan12-acs27 7 หลายเดือนก่อน

    understood

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

    Understood

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

    understood

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

    Understood

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

    understood

  • @ShubhamMIshra-hv5nz
    @ShubhamMIshra-hv5nz 5 หลายเดือนก่อน

    Understood

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

    understood

  • @SitaRam-m1i
    @SitaRam-m1i 2 หลายเดือนก่อน

    Understood

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

    understood

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

    understood