JavaScript 矩陣中奇數和偶數頻率的程式


在本教程中,我們將實現一個 JavaScript 程式來查詢奇數和偶數的頻率。我們將得到一個 MXN 大小的二維矩陣,並且我們必須找到矩陣中所有奇數和偶數的頻率(表示元素出現的次數)。我們將看到兩種方法,一種是蠻力方法(使用 for 迴圈),另一種是按位與運算子方法。

問題介紹

在這個問題中,我們得到一個包含奇數和偶數的二維矩陣,這些奇數和偶數以無序的方式排列,我們必須找到二維矩陣中奇數和偶數的頻率。例如 -

在這個問題中,我們得到一個包含奇數和偶數的二維矩陣,這些奇數和偶數以無序的方式排列,我們必須找到二維矩陣中奇數和偶數的頻率。例如 -

Row ( m ) = 3; Column ( n ) = 3;
Matrix = [[1, 2, 3], 
          [4, 5, 6], 
          [7, 8, 9]];

從給定的 3X3 大小的矩陣中,我們有奇數和偶數的頻率為 -

Frequency of odd number =  5 
Frequency of even number = 4

我們可以返回頻率,也可以簡單地打印出來,讓我們進入問題的解決方法 -

方法 1(使用模運算子 ‘%’)

在這種方法中,我們簡單地使用巢狀 for 迴圈遍歷矩陣。在遍歷 for 迴圈時,我們計算了二維矩陣中奇數和偶數的頻率。為了檢查值是奇數還是偶數,我們使用了模運算子(‘%’),基本上是用數字對 2 取模,如果模值為 ‘1’,則表示它是奇數值,否則它是偶數值,最後,我們返回這些奇數和偶數的計數。讓我們進入此方法的程式碼以更好地理解。

示例

下面是一個 JavaScript 程式,用於使用模運算子查詢矩陣中奇數和偶數的頻率 -

let MAX = 100;
// function for calculating frequency
function freq(arr,row,col) {
   let evenNum = 0, oddNum = 0;
   for (let i = 0; i < row; ++i) {
      for (let j = 0; j < col; ++j) {
         // checking evenNum or oddNum using mod operator
         if ((arr[i][j] % 2) == 0)
         ++evenNum;
         else
         ++oddNum;
      }
   }
   // print Frequency of odd and even numbers
   console.log(" Frequency of odd numbers = " + oddNum );
   console.log(" Frequency of even numbers = " + evenNum );
}
let m = 3, n = 3;
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
freq(arr, m, n);

時間和空間複雜度

以上程式碼的時間複雜度為 O(M*N),其中 M 是二維矩陣的行大小,N 是列大小。

以上程式碼的空間複雜度為 O(1),因為我們只使用了一個 int 值來儲存一個整數。

方法 2(使用按位 ‘&’ 運算子)

在這種方法中,我們將簡單地使用巢狀 for 迴圈遍歷矩陣。在遍歷 for 迴圈時,我們計算了二維矩陣中奇數和偶數的頻率。為了檢查值是奇數還是偶數,我們在這裡使用了按位 (‘&’) 運算子,基本上是用數字與 1 進行按位運算,如果按位值為 ‘0’,則表示它是偶數值,否則它是奇數值,最後,我們返回這些奇數和偶數的計數。讓我們進入此方法的程式碼以更好地理解。

示例

下面是一個 JavaScript 程式,用於使用按位 & 運算子查詢矩陣中奇數和偶數的頻率 -

let MAX = 100;
// function for calculating frequency
function freq(arr,row,col) {
   let evenNum = 0, oddNum = 0;
   for (let i = 0; i < row; ++i) {
      for (let j = 0; j < col; ++j) {
         // checking evenNum or oddNum using bitwise operator
         if ((arr[i][j] & 1) == 0)
         ++evenNum;
         else
         ++oddNum;
      }
   }
   // print Frequency of odd and even numbers
   console.log(" Frequency of odd numbers = " + oddNum );
   console.log(" Frequency of even numbers = " + evenNum );
}
let m = 3, n = 3;
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
freq(arr, m, n);

時間和空間複雜度

以上程式碼的時間複雜度為 O(M*N),其中 M 是二維矩陣的行大小,N 是列大小。

以上程式碼的空間複雜度為 O(1),因為我們只使用了一個 int 值來儲存一個整數。

結論

在本教程中,我們實現了一個 javascript 程式,用於查詢二維矩陣中奇數和偶數的頻率。我們給定一個大小為 NXM 的二維矩陣,並且我們必須找到二維矩陣中奇數值和偶數值的頻率。我們看到了兩種方法,一種是使用模運算子,另一種是使用按位運算子。

更新於: 2023年3月24日

133 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.