750. Number Of Corner Rectangles
LeetCode
medium
оригинал: C#
#array
#csharp
#leetcode
#linked-list
#matrix
#medium
#string
#two-pointers
Дан указатель на начало односвязного списка и два целых числа left и right, где left <= right. Необходимо перевернуть узлы списка, начиная с позиции left и заканчивая позицией right, и вернуть измененный список.
Пример:
Input: grid = [[1,0,0,1,0],[0,0,1,0,1],[0,0,0,1,0],[1,0,1,0,1]]
Output: 1
C# решение
сопоставлено/оригиналpublic class Solution {
public int CountCornerRectangles(int[][] grid) {
int count = 0;
for (int i = 0; i < grid.Length; i++) {
for (int j = i + 1; j < grid.Length; j++) {
int numPairs = 0;
for (int k = 0; k < grid[0].Length; k++) {
if (grid[i][k] == 1 && grid[j][k] == 1) {
numPairs++;
}
}
if (numPairs > 1) {
count += numPairs * (numPairs - 1) / 2;
}
}
}
return count;
}
}
C++ решение
auto-draft, проверить перед отправкой#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int CountCornerRectangles(int[][] grid) {
int count = 0;
for (int i = 0; i < grid.size(); i++) {
for (int j = i + 1; j < grid.size(); j++) {
int numPairs = 0;
for (int k = 0; k < grid[0].size(); k++) {
if (grid[i][k] == 1 && grid[j][k] == 1) {
numPairs++;
}
}
if (numPairs > 1) {
count += numPairs * (numPairs - 1) / 2;
}
}
}
return count;
}
}
Java решение
сопоставлено/оригиналpublic class Solution {
public int countCornerRectangles(int[][] grid) {
int count = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = i + 1; j < grid.length; j++) {
int numPairs = 0;
for (int k = 0; k < grid[0].length; k++) {
if (grid[i][k] == 1 && grid[j][k] == 1) {
numPairs++;
}
}
if (numPairs > 1) {
count += numPairs * (numPairs - 1) / 2;
}
}
}
return count;
}
}
JavaScript решение
сопоставлено/оригиналvar countCornerRectangles = function(grid) {
let count = 0;
for (let i = 0; i < grid.length; i++) {
for (let j = i + 1; j < grid.length; j++) {
let numPairs = 0;
for (let k = 0; k < grid[0].length; k++) {
if (grid[i][k] === 1 && grid[j][k] === 1) {
numPairs++;
}
}
if (numPairs > 1) {
count += numPairs * (numPairs - 1) / 2;
}
}
}
return count;
};
Python решение
сопоставлено/оригиналdef countCornerRectangles(grid):
count = 0
for i in range(len(grid)):
for j in range(i + 1, len(grid)):
num_pairs = 0
for k in range(len(grid[0])):
if grid[i][k] == 1 and grid[j][k] == 1:
num_pairs += 1
if num_pairs > 1:
count += num_pairs * (num_pairs - 1) // 2
return count
Go решение
сопоставлено/оригиналpackage main
func countCornerRectangles(grid [][]int) int {
count := 0
for i := 0; i < len(grid); i++ {
for j := i + 1; j < len(grid); j++ {
numPairs := 0
for k := 0; k < len(grid[0]); k++ {
if grid[i][k] == 1 && grid[j][k] == 1 {
numPairs++
}
}
if numPairs > 1 {
count += numPairs * (numPairs - 1) / 2
}
}
}
return count
}
Algorithm
Пройдите по строкам матрицы. Для каждой пары строк, найдите все столбцы, где оба значения равны 1.
Подсчитайте количество таких столбцов. Если их больше одного, то они образуют прямоугольники.
Для каждой пары строк добавьте количество возможных прямоугольников в общий счетчик.
😎
Вакансии для этой задачи
Показаны активные вакансии с пересечением по тегам задачи.
Активных вакансий пока нет.