在本教程中,我們將實(shí)現(xiàn)一個(gè) JavaScript 程序來查找偶數(shù)和奇數(shù)的頻率。我們將得到一個(gè) MXN 大小的 2D 矩陣,我們必須找到矩陣中存在的所有奇數(shù)和偶數(shù)的頻率(意味著存在的元素的數(shù)量)。我們將看到兩種方法,一種是強(qiáng)力方法(使用 for 循環(huán)),另一種是按位與運(yùn)算符方法。
問題簡介
在這個(gè)問題中,我們得到一個(gè)二維矩陣,其中以未排序的方式包含奇數(shù)和偶數(shù),我們必須找到二維矩陣中奇數(shù)和偶數(shù)的頻率。例如 –
在這個(gè)問題中,我們得到一個(gè)二維矩陣,其中以未排序的方式包含奇數(shù)和偶數(shù),我們必須找到二維矩陣中奇數(shù)和偶數(shù)的頻率。例如 –
Row ( m ) = 3; Column ( n ) = 3; Matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
登錄后復(fù)制
根據(jù)給定的大小為 3X3 的矩陣,我們得到奇數(shù)和偶數(shù)的頻率為 –
Frequency of odd number = 5 Frequency of even number = 4
登錄后復(fù)制
我們可以返回頻率,我們可以簡單地按原樣打印它們,讓我們轉(zhuǎn)向解決問題的方法 –
方法 1(使用 mod ‘%’ 運(yùn)算符)
在這種方法中,我們簡單地使用嵌套 for 循環(huán)遍歷矩陣。在遍歷 for 循環(huán)時(shí),我們計(jì)算了二維矩陣中奇數(shù)和偶數(shù)的頻率。為了檢查該值是奇數(shù)還是偶數(shù),我們使用 mod (‘%’) 運(yùn)算符,基本上對數(shù)字取 2 的模,如果 mod 值為 ‘1’,則表示它是奇數(shù),否則它是偶數(shù),并且最后,我們返回奇數(shù)和偶數(shù)的計(jì)數(shù)。讓我們轉(zhuǎn)到此方法的代碼以更好地理解。
示例
下面是一個(gè) JavaScript 程序,用于使用模式運(yùn)算符查找矩陣中偶數(shù)和奇數(shù)的頻率 –
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);
登錄后復(fù)制
時(shí)間和空間復(fù)雜度
上述代碼的時(shí)間復(fù)雜度為 O(M*N),其中 M 是二維矩陣的行大小,N 是列大小。
上述代碼的空間復(fù)雜度為 O(1),因?yàn)槲覀兪褂昧?int 值來僅存儲(chǔ)整數(shù)。
方法 2(使用按位‘&’運(yùn)算符)
在這種方法中,我們將使用嵌套的 for 循環(huán)簡單地遍歷矩陣。在遍歷 for 循環(huán)時(shí),我們計(jì)算了二維矩陣中奇數(shù)和偶數(shù)的頻率。為了檢查該值是奇數(shù)還是偶數(shù),我們使用了按位(“&”)運(yùn)算符,基本上將數(shù)字按位取 1,如果按位值為“0”,則表示它是偶數(shù),否則表示它是奇數(shù)。最后我們返回奇數(shù)和偶數(shù)的計(jì)數(shù)。讓我們轉(zhuǎn)到此方法的代碼以更好地理解。
示例
下面是一個(gè) JavaScript 程序,使用按位 & 運(yùn)算符查找矩陣中偶數(shù)和奇數(shù)的頻率 –
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);
登錄后復(fù)制
時(shí)間和空間復(fù)雜度
上述代碼的時(shí)間復(fù)雜度為 O(M*N),其中 M 是二維矩陣的行大小,N 是列大小。
上述代碼的空間復(fù)雜度為 O(1),因?yàn)槲覀兪褂昧?int 值來僅存儲(chǔ)整數(shù)。
結(jié)論
在本教程中,我們實(shí)現(xiàn)了一個(gè) JavaScript 程序,用于查找二維矩陣中偶數(shù)和奇數(shù)的頻率。我們給定了一個(gè)大小為 NXM 的二維矩陣,我們必須找到該二維矩陣奇數(shù)值和偶數(shù)值的頻率。我們已經(jīng)看到了兩種方法,一種是使用 mod 運(yùn)算符,另一種是使用按位運(yùn)算符。
以上就是JavaScript 程序計(jì)算矩陣中偶數(shù)和奇數(shù)的頻率的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!