HomeCodingalgorithmic problemsHow to Find the Row with Maximum Number of 1's in a...

How to Find the Row with Maximum Number of 1’s in a Binary Matrix

Published on

spot_img

Finding the row with the maximum number of 1’s in a binary matrix is a common problem encountered in coding interviews and competitive programming. A binary matrix is a matrix where each element is either 0 or 1. If the matrix is sorted row-wise, where each row is sorted in non-decreasing order (all 0’s followed by 1’s), then finding the row with the maximum number of 1’s becomes an interesting and efficient task.

In this blog, we’ll discuss different approaches to solving this problem, from the brute-force method to the optimized solution, focusing on how to efficiently find the row that contains the most number of 1’s.


DALL·E 2024 10 15 13.07.24 A wide horizontally stretched illustration of a binary matrix with 0s and 1s arranged in rows and columns. One row is highlighted to show it has th

How to Find the Row with Maximum Number of 1’s in a Binary Matrix

Problem Statement

Given a binary matrix where each row is sorted in non-decreasing order (i.e., all the 0’s appear before the 1’s in each row), find the index of the row that has the maximum number of 1’s.

Example:

Input: 
matrix = [
    [0, 0, 1, 1],
    [0, 1, 1, 1],
    [0, 0, 0, 1],
    [1, 1, 1, 1]
]

Output: 3

Explanation:
The row at index 3 has the maximum number of 1’s (4 in total), so the output is 3.


DALL·E 2024 10 15 12.52.56 A wide horizontally oriented illustration of a binary matrix with numbers 0 and 1 arranged in rows and columns. One row should be highlighted to show 2

How to Find the Row with Maximum Number of 1’s in a Binary Matrix

Approaches

1. Brute Force Approach

The simplest way to solve this problem is to iterate through each row of the matrix, count the number of 1’s in each row, and keep track of the row with the maximum number of 1’s.

Steps:

  1. Iterate over each row in the matrix.
  2. For each row, count the number of 1’s.
  3. Keep track of the maximum count and the corresponding row index.
  4. Return the index of the row with the maximum number of 1’s.

Code Example:

def rowWithMaxOnes(matrix):
    max_ones = 0
    row_index = -1

    for i, row in enumerate(matrix):
        ones_count = sum(row)  # Count the number of 1's in the row
        if ones_count > max_ones:
            max_ones = ones_count
            row_index = i

    return row_index

# Example usage
matrix = [
    [0, 0, 1, 1],
    [0, 1, 1, 1],
    [0, 0, 0, 1],
    [1, 1, 1, 1]
]

print("Row with maximum 1's is:", rowWithMaxOnes(matrix))

Time Complexity: O(m * n), where m is the number of rows and n is the number of columns. This is because for each row, we count the number of 1’s, which takes O(n) time.

2. Optimized Approach for Sorted Rows

Since each row in the matrix is sorted, we can take advantage of this property to optimize our solution. We can use a binary search to find the first occurrence of 1 in each row. Once we know the index of the first 1, the remaining elements in that row will all be 1’s, so the total number of 1’s in the row is n - first_1_index.

Steps:

  1. For each row, use binary search to find the index of the first occurrence of 1.
  2. Calculate the number of 1’s in the row as n - first_1_index.
  3. Keep track of the row with the maximum number of 1’s.
  4. Return the index of the row with the maximum number of 1’s.

Code Example (Using Binary Search):

import bisect

def firstOneIndex(row):
    # Binary search to find the first occurrence of 1 in the row
    index = bisect.bisect_left(row, 1)
    return index if index < len(row) else len(row)

def rowWithMaxOnes(matrix):
    max_ones = 0
    row_index = -1
    n = len(matrix[0])  # Number of columns

    for i, row in enumerate(matrix):
        first_1_idx = firstOneIndex(row)  # Find the first 1 in the row
        ones_count = n - first_1_idx  # Count the number of 1's
        if ones_count > max_ones:
            max_ones = ones_count
            row_index = i

    return row_index

# Example usage
matrix = [
    [0, 0, 1, 1],
    [0, 1, 1, 1],
    [0, 0, 0, 1],
    [1, 1, 1, 1]
]

print("Row with maximum 1's is:", rowWithMaxOnes(matrix))

Time Complexity: O(m * log n), where m is the number of rows and n is the number of columns. This is because we are performing a binary search on each row, which takes O(log n) time.

3. Most Efficient Approach: Traverse Once

The most efficient solution leverages the sorted property of the matrix and allows you to find the row with the maximum 1’s in a single pass. You start from the top-right corner of the matrix, and each time you encounter a 1, you move left. If you encounter a 0, you move down. This ensures that you visit only the necessary elements.

Steps:

  1. Start from the top-right corner of the matrix.
  2. If the current element is 1, move left and update the maximum row index.
  3. If the current element is 0, move down.
  4. Continue this until you reach the end of the matrix.
  5. Return the index of the row with the maximum number of 1’s.

Code Example (Traverse Once):

def rowWithMaxOnes(matrix):
    row_index = -1
    max_ones = 0
    m = len(matrix)  # Number of rows
    n = len(matrix[0])  # Number of columns

    # Start from the top-right corner
    row, col = 0, n - 1

    while row < m and col >= 0:
        if matrix[row][col] == 1:
            # Move left and update the row index
            max_ones = n - col
            row_index = row
            col -= 1
        else:
            # Move down
            row += 1

    return row_index

# Example usage
matrix = [
    [0, 0, 1, 1],
    [0, 1, 1, 1],
    [0, 0, 0, 1],
    [1, 1, 1, 1]
]

print("Row with maximum 1's is:", rowWithMaxOnes(matrix))

Time Complexity: O(m + n), where m is the number of rows and n is the number of columns. This is because we traverse at most m + n elements by either moving left or down in the matrix.


Comparison of Approaches

ApproachTime ComplexitySpace Complexity
Brute ForceO(m * n)O(1)
Binary Search per RowO(m * log n)O(1)
Traverse Once (Optimal)O(m + n)O(1)

The problem of finding the row with the maximum number of 1’s in a binary matrix can be solved efficiently using the sorted property of each row. While the brute-force approach works, it’s not optimal for large matrices. The binary search method improves the efficiency, but the most efficient approach is the one that leverages the matrix’s structure to traverse only necessary elements. By starting from the top-right corner and moving left or down, we can find the solution in O(m + n) time, making this method ideal for large matrices.


Call-to-Action

Now that you’ve learned how to find the row with the maximum number of 1’s efficiently, try implementing this solution on coding platforms like LeetCode and HackerRank. For more coding tutorials and tips, subscribe to our newsletter and stay updated with the latest programming guides!


Frequently Asked Questions

  1. Can this method work for unsorted rows?
  • No, the optimized and most efficient methods work because the rows are sorted. For unsorted rows, you would need to count the number of 1’s in each row.
  1. What happens if multiple rows have the same number of 1’s?
  • The code returns the index of the first row that has the maximum number of 1’s.
  1. What is the best approach for very large matrices?
  • The best approach for large matrices is the one-pass traversal method, which works in O(m + n) time.
  1. Can this solution be applied to 3D matrices?
  • No, this solution is designed for 2D matrices. For 3D matrices, additional logic would be needed.
  1. **Where can I practice this problem?**
  • You can practice this problem on platforms like LeetCode, GeeksforGeeks, or Codeforces.

How to Find the Row with Maximum Number of 1’s in a Binary Matrix”:

  1. LeetCode – Find Row with Maximum 1’s:
    LeetCode Problem: Row with Maximum 1’s
    This LeetCode problem provides a coding challenge similar to finding the row with the most 1’s in a binary matrix.
  2. GeeksforGeeks – Row with Maximum 1’s:
    GeeksforGeeks: Row with Maximum 1’s
    A detailed explanation and approach to solving the problem of finding the row with the maximum number of 1’s, using different strategies like binary search.
  3. Programiz – Binary Search in Python:
    Programiz: Binary Search in Python
    Learn more about binary search in Python, which can be applied in solving this problem efficiently.
  4. Khan Academy – Binary Search Algorithm:
    Khan Academy: Binary Search
    This resource provides an in-depth explanation of binary search, a technique used in optimizing the solution to find the row with maximum 1’s.

Latest articles

Social Proof Marketing: How to Build Trust and Boost Conversions Fast

Social Proof Marketing is a powerful strategy to build trust and influence customer decisions using reviews, testimonials, and real experiences. In this blog, learn how businesses and every digital marketer in 2026 use social proof to Boost Conversions Fast and grow using smart digital marketing services.

7 Proven Scarcity Marketing Strategies to Boost Sales Fast

Learn how Scarcity Marketing Strategies can help you create urgency, attract more customers, and boost conversions. This blog explains simple and proven techniques every digital marketer in 2026 can use to grow their digital marketing services and drive Sales Fast.

FOMO Marketing Strategy: How Brands Use Scarcity to Drive Instant Sales

Learn how the FOMO Marketing Strategy helps Brands create urgency and drive instant sales. This blog explains simple techniques used by every digital marketer in 2026 to boost conversions using smart digital marketing services. Discover how scarcity, social proof, and limited-time offers influence customer decisions and increase engagement.

The Psychology Behind Viral Content: Why Content Goes Viral

Discover the Psychology Behind Viral Content and learn why content goes viral. This guide helps every digital marketer in 2026 create engaging Content using smart digital marketing services.

More like this

Social Proof Marketing: How to Build Trust and Boost Conversions Fast

Social Proof Marketing is a powerful strategy to build trust and influence customer decisions using reviews, testimonials, and real experiences. In this blog, learn how businesses and every digital marketer in 2026 use social proof to Boost Conversions Fast and grow using smart digital marketing services.

7 Proven Scarcity Marketing Strategies to Boost Sales Fast

Learn how Scarcity Marketing Strategies can help you create urgency, attract more customers, and boost conversions. This blog explains simple and proven techniques every digital marketer in 2026 can use to grow their digital marketing services and drive Sales Fast.

FOMO Marketing Strategy: How Brands Use Scarcity to Drive Instant Sales

Learn how the FOMO Marketing Strategy helps Brands create urgency and drive instant sales. This blog explains simple techniques used by every digital marketer in 2026 to boost conversions using smart digital marketing services. Discover how scarcity, social proof, and limited-time offers influence customer decisions and increase engagement.