Matrix Zeroes Leetcode Həllini təyin edin

Çətinlik səviyyəsi Mühit
Tez-tez soruşulur Çiy kərpic Amazon alma Bloomberg Expedia Facebook google microsoft Mintra Kahin Samsung VMware
Geyim HashMap Juspay MatrisBaxılıb 31

Problem bəyanat

The Matris sıfırlarını təyin edin LeetCode Həll - “Set Matrix Zeroes” sizə verildiyini bildirir m x n tam matris matrix.Biz giriş matrisini elə dəyişməliyik ki, əgər hər hansı xanada element varsa  0, sonra onun bütün sətir və sütununu təyin edin 0.

Siz bunu etməlisiniz yerində.

Misal:

Matrix Zeroes Leetcode Həllini təyin edinPin

 

Matrix Zeroes Leetcode Həllini təyin edinPin

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

Explanation:

  • Yuxarıdakı matris (1,1) mövqeyində sıfırı ehtiva edir.
  • Beləliklə, bütün 1-ci cərgəni və 1-ci sütunu sıfıra çevirməliyik.
Input:  matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
Output: [[0,0,0,0],[0,4,5,0],[0,3,1,0]]

Explanation:

  • Yuxarıdakı matris (0,0) və (0,3) mövqelərində sıfırları ehtiva edir.
  • Beləliklə, biz bütün 0-cı sətir, 0-cu sütun və 3-cü sütunu sıfır etməliyik.

Yanaşma

Idea:

  1. Əsas ideya bu problemi səmərəli şəkildə həll etməkdir O (1) əlavə yer istifadə etməkdir 0th sıra və 0thhansı sətir və sütunların bütün sıfırlarla işarələnəcəyini izləmək üçün sütun.
  2. matrix[i][0]==0bütövlükdə olduğunu ifadə edəcək ith sıra ilə işarələnməlidir 0.
  3. matrix[0][j]==0bütövlükdə olduğunu ifadə edəcək jth sütunu ilə işarələnməlidir 0.
  4. İlk təkrarlama 0thsıra və0thsütununu seçin və sıfırın olub olmadığını yoxlayın. Nəticələri boolean dəyişənində saxlayın f1f2.
  5. İndi, qalan sətir və sütunlarda təkrarlayın və müvafiq işarələyin matrix[i][0]matrix[0][j]if (i,j)hüceyrə ehtiva edir 0.
  6. İndi biz giriş matrisini dəyişdirməliyik.
  7. İstisna bütün sətir və sütunlar üçün təkrarlayın 0th sıra və 0thsütun və dəst 0 lazım gələrsə, məlumatlardan istifadə etməklə matrix[i][0]matrix[0][j].
  8. Nəhayət, boolean dəyişənlərindən istifadə edin f1f2 qeyd etmək 0th sıra və 0thsütun.

Kodu

Matris sıfırlarını təyin edin Leetcode C++ Həlli:

class Solution {
public:
    void setZeroes(vector<vector<int>>& matrix) {
        bool f1 = false,f2 = false;
        int n = matrix.size(),m = matrix.back().size();
        for(int i=0;i<n;i++){
            if(matrix[i][0]==0){
                f1 = true;
            }
        }
        for(int j=0;j<m;j++){
            if(matrix[0][j]==0){
                f2 = true;
            }
        }
        for(int i=1;i<n;i++){
            for(int j=1;j<m;j++){
                if(matrix[i][j]==0){
                    matrix[i][0] = matrix[0][j] = 0;
                }
            }
        }
        for(int i=1;i<n;i++){
            for(int j=1;j<m;j++){
                if(matrix[i][0]==0 || matrix[0][j]==0){
                    matrix[i][j] = 0;
                }
            }
        }
        if(f1){
            for(int i=0;i<n;i++){
                matrix[i][0] = 0;
            }
        }
        if(f2){
            for(int j=0;j<m;j++){
                matrix[0][j] = 0;
            }
        }
    }
};

Matrix Zeroes Leetcode Java Həllini təyin edin:

class Solution {
    public void setZeroes(int[][] matrix) {
        boolean f1 = false,f2 = false;
        int n = matrix.length,m = matrix[0].length;
        for(int i=0;i<n;i++){
            if(matrix[i][0]==0){
                f1 = true;
            }
        }
        for(int j=0;j<m;j++){
            if(matrix[0][j]==0){
                f2 = true;
            }
        }
        for(int i=1;i<n;i++){
            for(int j=1;j<m;j++){
                if(matrix[i][j]==0){
                    matrix[i][0] = matrix[0][j] = 0;
                }
            }
        }
        for(int i=1;i<n;i++){
            for(int j=1;j<m;j++){
                if(matrix[i][0]==0 || matrix[0][j]==0){
                    matrix[i][j] = 0;
                }
            }
        }
        if(f1){
            for(int i=0;i<n;i++){
                matrix[i][0] = 0;
            }
        }
        if(f2){
            for(int j=0;j<m;j++){
                matrix[0][j] = 0;
            }
        }
    }
}

Set Matrix Zeroes Leetcode Həlli üçün Mürəkkəblik Təhlili

Zamanın mürəkkəbliyi

Yuxarıdakı kodun zaman mürəkkəbliyi O (M * N) burada M = matrisin sətirlərinin sayı və N = matrisin sütunlarının sayı.

Kosmik Mürəkkəblik

Yuxarıdakı kodun kosmik mürəkkəbliyi O (1) çünki biz heç bir əlavə yerdən istifadə etmirik.

Translate »