11(March) Count pairs Sum in matrices
11. Count Pairs with Given Sum in Two Sorted Matrices
The problem statement can be found at the following link: Question Link
Approach Explanation
Initialization:
Initialize
countto 0 to keep track of the number of pairs found.Initialize
r1,c1,r2, andc2to appropriate indices for traversing both matrices.
Pair Sum Calculation:
Traverse both matrices using pointers
r1,c1,r2, andc2.Calculate the sum of the elements at indices
(r1, c1)frommat1and(r2, c2)frommat2.
Sum Comparison and Increment:
If the sum equals the target value 'x', increment the
countand adjust pointersc1andc2.If the sum is less than 'x', move the pointer
c1to the right to increase the sum.If the sum is greater than 'x', move the pointer
c2to the left to decrease the sum.
Boundary Handling:
Handle boundary conditions within the loop to ensure pointers stay within bounds.
Return Count:
Return the
countrepresenting the total number of pairs found.
Time and Auxiliary Space Complexity
Time Complexity: O(n^2), where n is the size of the matrices.
Auxiliary Space Complexity: O(1), since no extra space is used except for a few variables.
Code (C++)
class Solution {
public:
int countPairs(vector<vector<int>> &mat1, vector<vector<int>> &mat2, int n, int x) {
int count = 0;
int r1 = 0, c1 = 0;
int r2 = n - 1, c2 = n - 1;
while ((r1 < n) && (r2 >= 0)) { // Ensure r2 doesn't become negative
int val = mat1[r1][c1] + mat2[r2][c2];
if (val == x) {
count++;
c1++;
c2--;
} else if (val < x) {
c1++;
} else {
c2--;
}
// Handle boundary conditions within the loop
if (c1 == n) {
c1 = 0;
r1++;
}
if (c2 == -1) { // Avoid negative index
c2 = n - 1;
r2--;
}
}
return count;
}
};
Contribution and Support
For discussions, questions, or doubts related to this solution, feel free to connect on LinkedIn: Any Questions. Let’s make this learning journey more collaborative!
⭐ If you find this helpful, please give this repository a star! ⭐
📍Visitor Count
Last updated