কম্পিউটার টিউটোরিয়াল

পাইথনে Set Matrix Zeroes (ম্যাট্রিক্সে শূন্য সেট করা)


বিবেচনা করুন একটি ম্যাট্রিক্স আছে, সেটিতে যদি কোনো একক উপাদান ০ হয়, তবে সেই ম্যাট্রিক্সের পুরো সারি এবং কলামকে ০ করুন। কনভার্সন ইন-প্লেস হবে। ম্যাট্রিক্স যদি নিচের মতো হয়:

101
111
111

তবে আউটপুট হবে:

000
101
101

ধাপগুলো (O(1) স্পেস কমপ্লেক্সিটি):

  • n := সারি সংখ্যা, m := কলাম সংখ্যা, flag := false
  • যদি mat[0][0] == 0, তবে flag := true
  • row := false, col := false
  • i ১ থেকে n পর্যন্ত
    • যদি mat[i][0] == 0, তবে col := True এবং লুপ ব্রেক
  • i ১ থেকে m পর্যন্ত
    • যদি mat[0][i] == 0, তবে row := True এবং লুপ ব্রেক
  • i ১ থেকে n পর্যন্ত
    • j ১ থেকে m পর্যন্ত
      • যদি mat[i][j] == 0, তবে mat[i][0] = 0 এবং mat[0][j] := 0
  • i ১ থেকে n পর্যন্ত
    • j ১ থেকে m পর্যন্ত
      • যদি mat[i][0] == 0 এবং mat[0][j] == 0, তবে mat[i][j] = 0
  • যদি flag সেট
    • i ০ থেকে n, mat[i][0] := 0
    • i ০ থেকে m, mat[0][i] := 0
  • অন্যথায়
    • যদি col সেট, তবে i ০ থেকে n, mat[i][0] := 0
    • যদি row সেট, তবে i ০ থেকে m, mat[0][i] := 0

নিচে ইমপ্লিমেন্টেশন দেওয়া হলো:

উদাহরণ

class Solution(object):
    def setZeroes(self, matrix):
        n = len(matrix)
        m = len(matrix[0])
        flag = False
        if matrix[0][0] == 0:
            flag = True
        row = False
        column = False
        for i in range(1, n):
            if matrix[i][0] == 0:
                column = True
                break
        for i in range(1, m):
            if matrix[0][i] == 0:
                row = True
                break
        for i in range(1, n):
            for j in range(1, m):
                if matrix[i][j] == 0:
                    matrix[0][j] = 0
                    matrix[i][0] = 0
        for i in range(1, n):
            for j in range(1, m):
                if not matrix[i][0] or not matrix[0][j]:
                    matrix[i][j] = 0
        if flag:
            for i in range(n):
                matrix[i][0] = 0
            for i in range(m):
                matrix[0][i] = 0
        else:
            if column:
                for i in range(n):
                    matrix[i][0] = 0
            if row:
                for i in range(m):
                    matrix[0][i] = 0
        return matrix

ob1 = Solution()
print(ob1.setZeroes([[1, 0, 1], [1, 1, 1], [1, 1, 1]]))

ইনপুট

[[1,0,1],[1,1,1],[1,1,1]]

আউটপুট

[[0, 0, 0], [1, 0, 1], [1, 0, 1]]
  1. পাইথনে ম্যাট্রিক্স ট্রান্সপোজ (Transpose) করা

  2. পাইথন সেট টাইপস (Set Types)

  3. পাইথন সেট অপারেশন: পূর্ণ নির্দেশিকা

  4. পাইথন সেট এক্সপ্লেইন: ইউনিকনেস, ইমিউটেবিলিটি এবং অপারেশন