Skip to main content

Cells with Odd Values in a Matrix

Problem - https://leetcode.com/problems/cells-with-odd-values-in-a-matrix/


Given n and m which are the dimensions of a matrix initialized by zeros and given an array indices where indices[i] = [ri, ci]. For each pair of [ri, ci] you have to increment all cells in row ri and column ci by 1.
Return the number of cells with odd values in the matrix after applying the increment to all indices.

Example 1:

Input: n = 2, m = 3, indices = [[0,1],[1,1]]
Output: 6
Explanation: Initial matrix = [[0,0,0],[0,0,0]].
After applying first increment it becomes [[1,2,1],[0,1,0]].
The final matrix will be [[1,3,1],[1,3,1]] which contains 6 odd numbers.

Approach -

  1.  Iterate over indices and fetch row and column indices.
  2.  First loop keep row index constant and increment column index and updated each cell values until it reaches column max size.
  3. Repeat same step and keep column index constant and increment row index and update all cell values until it reaches row max size.
  4.  Iterate over matrix and count each cell value if divisible by 2 and keep count of odd numbers.


Solution -

class Solution:
    def oddCells(self, n: int, m: int, indices: List[List[int]]) -> int:
        oddcount = 0
       
        if ((n < 1 and n > 50) or (m < 1 and m > 50)):
            return 0
       
        matrix = [[0 for i in range(m)] for j in range(n)]
        for idx in indices:
            row, col = idx[0], idx[1]
           
            for j in range(m):
                matrix[row][j] += 1
               
            for i in range(n):
                matrix[i][col] += 1
           
        for i in range(n):
            for j in range(m):
                if matrix[i][j] % 2:
                    oddcount += 1
        return oddcount

Comments

Popular posts from this blog

Sampling and FFT Size derivation in LTE

Sampling and FFT Size derivation in LTE Ts = 1 / (15000 x 2048) seconds, which corresponds to the 30.72 MHz sample clock for the 2048 point FFT used with the 20 MHz system bandwidth. In the frequency domain, the number of sub-carriers N ranges from 128 to 2048, depending on channel bandwidth with 512 and 1024 for 5 and 10 MHz, respectively, being most commonly used in practice. The sub-carrier spacing is ∆f = 1/T u = 15 kHz. The sampling rate is fs = ∆f · N = 15000 N. This results in a sampling rate that’s multiple or sub-multiple of the WCDMA chip rate of 3.84 Mcps: LTE parameters have been chosen such that FFT lengths and sampling rates are easily obtained for all operation modes while at the same time ensuring the easy implementation of dual-mode devices with a common clock reference. Sampling frequency is Multiple's of 2, For 15 Mhz Bandwidth - Sampling Frequency = 23.04 (6 * 3.84). FFT SIZE = S...

C Programming Questions – Part 1

1. W hat do curly braces denote in C? Why does it make sense to use curly brac es to surround the body of a function?   Answer: The curly braces denote a block of code, in which variables can be declared. Variables declared within the block are valid only until the end of the block, marked by the matching right curly brace ’}’. The body of a function is one such type of block, and thus, curly braces are used to describe the extent of that block . 2.Describe the difference between the literal values 7, "7", and ’7 ’ ?   Answer: The first literal is integer 7.Second literal is null terminated string value '7'.Third literal is character '7' having ASCII character code (55). 3. Consider the statement double ans = 10.0+2.0/3.0−2.0∗2.0; Rewrite this statement, inserting parentheses to ensure that ans = 11.0 upon evaluation of this statement ? Answer: double ans = 10.0+2.0/ (( 3.0−2.0 ) ∗2.0 ) ; 4 .C...

C program to suppress the multiple space and tabs in a line

--> C program to suppress the multiple space and tabs in a line of input to single space,(Dennis Ritchie exercise 1.9 page 19. #include<stdio.h> /* Copy and replace multiple blanks and tabs by single space Autor:- Surendra Patil Date:- july 9th 2013 */ int main() { int c; printf("\n enter the input with tabs and spaces \n"); while ((c=getchar()) != EOF) {   if(c ==' ' || c == '\t') {      putchar(' ');      /* squeze all the blanks and tabs */     while ( ((c = getchar()) != EOF) && (c == ' ' || c == '\t'));   }    putchar(c); } return 0; } Input:- surendra patil nidasoshi Output:- surendra patil nidasoshi