Сегодня мой 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; } }