Сегодня мой 57-й день кодинга. Сегодня решил 3 задачи.
Проблема 1: Медиана в массиве, отсортированном по строкам
Для заданной построчной сортировки матрицы размером R*C, где R и C всегда нечетны, найдите медиану матрицы.
Пример 1:
Input:
R = 3, C = 3
M = [[1, 3, 5],
[2, 6, 9],
[3, 6, 9]]
Output: 5
Explanation: Sorting matrix elements gives
us {1,2,3,3,5,6,6,9,9}. Hence, 5 is median.
Пример 2:
Input:
R = 3, C = 1
M = [[1], [2], [3]]
Output: 2
Explanation: Sorting matrix elements gives
us {1,2,3}. Hence, 2 is median.
Ваша задача:
вам не нужно ничего читать или печатать. Ваша задача — выполнить функцию median(), которая принимает целые числа R и C вместе с двумерной матрицей. в качестве входных параметров и возвращает медиану матрицы.
Ожидаемая временная сложность: O(32 * R * log(C))
Ожидаемое вспомогательное пространство:O(1)
Решение (в Java):
lass Solution {
int median(int matrix[][], int R, int C) {
List<Integer> l=new ArrayList<>();
int m=0;
for( int i=0; i<R; i++){
for( int j=0; j<C; j++)
l.add(matrix[i][j]);
}
Collections.sort(l);
int n=l.size();
if( n%2==1){
m=l.get(((n+1)/2)-1);
}
else
m=l.get((n/2)-1)+l.get((n/2)/2);
return m;
}
}
Проблема 2: Строка с максимальным числом секунд 1
Дан логический двумерный массив размером n x m, где каждая строка отсортирована. Найдите отсчитываемый от 0 индекс первой строки с максимальным количеством 1.
Пример 1:
Input:
N = 4 , M = 4
Arr[][] = {{0, 1, 1, 1},
{0, 0, 1, 1},
{1, 1, 1, 1},
{0, 0, 0, 0}}
Output: 2
Explanation: Row 2 contains 4 1's (0-based
indexing).
Пример 2:
Input:
N = 2, M = 2
Arr[][] = {{0, 0}, {1, 1}}
Output: 1
Explanation: Row 1 contains 2 1's (0-based
indexing).
Ваша задача.
Вам не нужно ничего читать или печатать. Ваша задача — завершить функцию rowWithMax1s(), которая принимает в качестве входных параметров массив логических значений arr[][], n и m и возвращает отсчитываемый от 0 индекс первой строки с наибольшим количеством единиц. Если такой строки не существует, вернуть -1.
Ожидаемая временная сложность: O(N+M)
Ожидаемое вспомогательное пространство: O(1)
Решение (в Java):
class Solution {
int rowWithMax1s(int arr[][], int n, int m) {
int ans=0, max=-1;
for( int i=0; i<n; i++){
int count=0;
for( int j=0; j<m; j++){
if(arr[i][j]==1)
count++;
}
if(count>ans){
ans=count;
max=i;
}
}
return max;
}
}
Проблема 3: Отсортированная матрица
Дана матрица NxN Матем. Отсортируйте все элементы матрицы.
Пример 1:
Input: N=4 Mat=[[10,20,30,40], [15,25,35,45] [27,29,37,48] [32,33,39,50]] Output: 10 15 20 25 27 29 30 32 33 35 37 39 40 45 48 50 Explanation: Sorting the matrix gives this result.
Пример 2:
Input: N=3 Mat=[[1,5,3],[2,8,7],[4,6,9]] Output: 1 2 3 4 5 6 7 8 9 Explanation: Sorting the matrix gives this result.
Ваша задача
Вам не нужно ничего читать или печатать. Ваша задача — завершить функцию sortedMatrix(), которая принимает целое число N и матрицу Mat в качестве входных параметров и возвращает отсортированную матрицу.
Ожидаемая временная сложность: O(N2LogN)
Ожидаемое вспомогательное пространство:O(N2)
Решение (в Java):
class Solution {
int[][] sortedMatrix(int N, int Mat[][]) {
List<Integer> l= new ArrayList<>();
for(int i=0; i<N; i++){
for(int j=0;j<N; j++)
l.add(Mat[i][j]);
}
Collections.sort(l);
int k=0;
for( int i=0;i<N; i++){
for(int j=0; j<N; j++){
Mat[i][j]=l.get(k++);
}
}
return Mat;
}
}