একটি ২D ম্যাট্রিক্স এবং কিছু সেল ইনডেক্স (i, j) দেওয়া আছে। প্রতিটি সেল ইনডেক্সের জন্য, i-তম সারি এবং j-তম কলাম বাদ দিয়ে বাকি সব উপাদানের যোগফল বের করতে হবে।
উদাহরণ
ম্যাট্রিক্স: [[2, 2, 3], [4, 5, 7], [6, 4, 3]]
সেল ইনডেক্স: [(0, 0), (1, 1), (0, 1)]
আউটপুট: [19, 14, 20]
সমাধানের পদ্ধতি
- প্রতিটি কোয়েরি (cell index) এর জন্য পুরো ম্যাট্রিক্স ট্রাভার্স করা হয়।
- যদি বর্তমান সারি != কোয়েরি সারি AND বর্তমান কলাম != কোয়েরি কলাম হয়, তবে যোগফলে যোগ করা হয়।
- অপ্টিমাইজেশন: সারি ও কলামের যোগফল প্রি-কম্পিউট করে রাখলে O(1) কোয়েরি সম্ভব।
পাইথন কোড
def show_sums(mat, ind_arr):
n = len(ind_arr)
ans = []
for i in range(n):
Sum = 0
row = ind_arr[i][0]
col = ind_arr[i][1]
for j in range(len(mat)):
for k in range(len(mat[0])):
if j != row and k != col:
Sum += mat[j][k]
ans.append(Sum)
return ans
mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]]
ind_arr = [(0, 0), (1, 1), (0, 1)]
print(show_sums(mat, ind_arr))
ইনপুট
mat = [[2, 2, 3], [4, 5, 7], [6, 4, 3]], ind_arr = [(0, 0), (1, 1), (0, 1)]
আউটপুট
[19, 14, 20]