Разновидности «Поиск в матрице, которая сортируется построчно и столбцы»Возвращает количество отрицательных чисел в оптимальном пути
Данного 2D-матрица, которая сортируется построчно и столбцы. Вы должны вернуть счет отрицательных чисел наиболее оптимальным способом.
я мог думать об этом решении
Initialise RowIndex = 0
если RowIndex> 0 RowIndex ++
еще применить бинарный поиск
и реализован с использованием этого кода для матрицы 5X5
#include<iostream>
#include<cstdio>
using namespace std;
int arr[5][5];
int func(int row)
{
int hi=4;
int lo=0;
int mid=(lo+hi)/2;
while(hi>=lo)
{
mid=(lo+hi)/2;
.
if(mid==4)
{
return 5;
}
if(arr[row][mid]<0 && arr[row][mid+1]<0)
{
lo=mid+1;
}
else if(arr[row][mid]>0 && arr[row][mid+1]>0)
{
hi=mid-1;
}
else if(arr[row][mid]<0 && arr[row][mid+1]>0)
{
return mid+1;
}
}
}
int main()
{
int ri,ci,sum;
ri=0; //rowindex
ci=0; //columnindex
sum=0;
for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
cin>>arr[i][j];
}
}
while(ri<5)
{
if(arr[ri][ci]>=0)
{
ri++;
}
else if(arr[ri][ci]<0)
{
int p=func(ri);
sum+=p;
ri++;
}
}
printf("%d\n",sum);
}
Я побежал код здесь http://ideone.com/PIlNd2 выполнения O (xlogy) для матрицы х строк и у столбцов
Поправьте меня, если я ошибаюсь, во временной сложности или реализации кода
Есть ли у кого-либо лучшая идея, чем это, для улучшения сложности во время выполнения?
Что такое -ve номер? – user2357112
-ve число означает число меньше нуля – x0v
Просто скажите отрицательный, то. – user2357112