JavaScript程式:檢查矩陣是否為下三角矩陣
矩陣可以定義為儲存元素的二維陣列,在數學上它儲存其中的數字。下三角矩陣是一個方陣,它具有相同數量的行和列,並且所有位於從第一個單元格(位於左上角)到最後一個單元格(位於右下角)的主對角線上方的元素都為零。我們將實現一個完整的程式碼,並討論時間和空間複雜度。
示例
Input 1: mat = [ [ 1, 0, 0, 0], [ 2, 3, 0, 0], [4, 5, 6, 0], [7, 8, 9, 1] ] Output 1: Yes,
說明:我們可以看到,主對角線包含元素1、3、6和1,並且主對角線上方的所有單元格的值都為零。
Input 2: mat = [ [ 1, 0, 0, 1], [ 2, 3, 0, 0], [4, 5, 6, 0], [7, 8, 9, 1] ] Output 1: No
說明:我們可以看到,主對角線包含元素1、3、6和1,並且主對角線上方的所有單元格的值不都為零。
方法
我們上面已經看到一個例子,現在讓我們看看實現程式碼的步驟。
首先,我們將建立一個函式,在這個函式中我們將傳入給定的矩陣。我們將只遍歷矩陣中位於主對角線上方的部分,即對於每個單元格(i,j),其中j大於i。如果我們找到任何非零值的單元格,我們將返回false,否則,最後我們將返回true。
示例
// function to traverse over the matrix
function check(mat){
// getting total number of rows of matrix
var rows = mat.length
// getting columns of the given matrix
var cols = mat[0].length
// traversing over the section present above the main diagonal
for(var i = 0; i < rows; i++){
for(var j = i+1; j < cols; j++){
if(mat[i][j] != 0){
return false;
}
}
}
return true;
}
// defining the matrix
var mat = [ [ 1, 0, 0, 0],
[ 2, 3, 0, 0],
[4, 5, 6, 0],
[7, 8, 9, 1]]
// given matrix
console.log("The given matrix is: ");
console.log(mat)
if(check(mat)){
console.log("The given matrix is a lower triangular matrix");
}
else{
console.log("The given matrix is not a lower triangular matrix");
}
// updating matrix
mat = [ [ 1, 0, 0, 1],
[ 2, 3, 0, 0],
[4, 5, 6, 0],
[7, 8, 9, 1]]
// given matrix
console.log("The given matrix is: ");
console.log(mat)
if(check(mat)){
console.log("The given matrix is a lower triangular matrix");
}
else{
console.log("The given matrix is not a lower triangular matrix");
}
輸出
The given matrix is: [ [ 1, 0, 0, 0 ], [ 2, 3, 0, 0 ], [ 4, 5, 6, 0 ], [ 7, 8, 9, 1 ] ] The given matrix is a lower triangular matrix The given matrix is: [ [ 1, 0, 0, 1 ], [ 2, 3, 0, 0 ], [ 4, 5, 6, 0 ], [ 7, 8, 9, 1 ] ] The given matrix is not a lower triangular matrix
時間和空間複雜度
上述程式碼的時間複雜度為O(N*N),其中N是給定矩陣的行數。這是因為我們只遍歷了矩陣一次。
上述程式碼的空間複雜度為O(1),因為我們沒有使用任何額外的空間。
結論
在本教程中,我們實現了一個JavaScript程式,用於查詢給定的矩陣是否為下三角矩陣。下三角矩陣是一個方陣,它具有相同數量的行和列,並且主對角線上方的所有元素都為零。我們已經實現了一個程式碼,其時間複雜度為O(N*N),空間複雜度為O(1)。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP