当前位置:网站首页>Lesson 1: finding the minimum of a matrix
Lesson 1: finding the minimum of a matrix
2022-07-07 09:32:00 【Fight! Sao Nian!】
subject :AcWing 1452. Find the minimum of the matrix
Given a n×n Matrix , The matrix contains n×n individual Different from each other The integer of .
Define the minimum : If the value of a number is smaller than that of all adjacent numbers , Then this value is called the minimum .
The adjacent numbers of a number refer to the four adjacent numbers in the upper, lower, left and right directions , Also note , The number at the boundary or corner may have less than four adjacent numbers .
Ask for in O(nlogn) Find the position of any minimum within the time complexity , And output its rows and columns .
The matrix in this question is hidden , You can use our preset int function query To get the value of a certain position in the matrix .
for example ,query(a,b) You can get the... In the matrix a Xing di b The value of the position of the column .
Be careful :
The rows and columns of the matrix are from 0 Numbered starting .
query() Function cannot be called more than (n+2)×⌈log2n⌉+n.
The answer is not unique , Output the position of any minimum value .
Data range
1≤n≤300, The integers in the matrix are int Within the scope of .
sample input :
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
sample output :
[0, 0]
Topic analysis :
The first way to think about it is to start from the starting point and find something smaller than yourself , Keep looking for , Then we will definitely find the minimum ( Because the points are different )
But the worst case is to visit n2 Time .
The second method is dichotomy , First find the minimum value in the middle column , Then look at the left and right
1. If v<l,v<r that v Is the minimum
2. If l<v, Then there is a minimum on the left
3. If r<v, Then there is a minimum on the right
Why? ?
Suppose the right r<v, So in the middle mid This column is better than r Be big , Then we use the first method to find that it is definitely impossible to cross mid This column ( Because I will look for something better than r Small number ), So in mid There must be a minimum on the right , This reduces the amount of search by half , Such repetition will finally find .
// Forward declaration of queryAPI.
// int query(int x, int y);
// return int means matrix[x][y].
class Solution {
public:
vector<int> getMinimumValue(int n) {
typedef long long LL;
const LL INF = 1e15;
int l=0,r=n-1;
while(l<r) // Dichotomy
{
int mid = l + r >> 1;
LL val=INF;
int k=0; // Which row to save is the smallest
for(int i=0;i<n;i++)
{
int t=query(i,mid);
if(t<val)
{
val=t;
k=i;
}
}
LL left=mid?query(k,mid-1):INF; // Query left
LL right=mid+1<n?query(k,mid+1):INF; // Query the right
if(val<left&&val<right)return {
k,mid}; // If the current point is the minimum
else if(left<val)r=mid-1;
else l=mid+1;
}
int k;
LL val=INF;
for(int i=0;i<n;i++)
{
int t=query(i,l);
if(t<val)
{
val=t;
k=i;
}
}
return {
k,l};
}
};
边栏推荐
- Mysql database lock learning notes
- 其实特简单,教你轻松实现酷炫的数据可视化大屏
- esp8266使用TF卡并读写数据(基于arduino)
- NATAPP内网穿透
- SAP MM STO单据的外向交货单创建后新加ITEM?
- Self awakening from a 30-year-old female programmer
- STM32 and motor development (from stand-alone version to Networking)
- Information Security Experiment 3: the use of PGP email encryption software
- Redis common commands
- Jemter operation
猜你喜欢

信息安全实验三 :PGP邮件加密软件的使用

Run can start normally, and debug doesn't start or report an error, which seems to be stuck

Unity uses mesh to realize real-time point cloud (I)

Cesium load vector data

Octopus future star won a reward of 250000 US dollars | Octopus accelerator 2022 summer entrepreneurship camp came to a successful conclusion

其实特简单,教你轻松实现酷炫的数据可视化大屏

Error: selenium common. exceptions. WebDriverException: Messag‘geckodriver‘ execute
![[cloud native] Devops (I): introduction to Devops and use of code tool](/img/e0/6152b3248ce19d0dbba3ac4845eb65.png)
[cloud native] Devops (I): introduction to Devops and use of code tool

4、 Fundamentals of machine learning

Locust performance test 5 (analysis)
随机推荐
如何成为一名高级数字 IC 设计工程师(5-3)理论篇:ULP 低功耗设计技术精讲(下)
flinkcdc 用sqlclient可以指定mysqlbinlog id执行任务吗
Huawei hcip datacom core_ 03day
Jenkins automated email
nlohmann json
Add new item after the outbound delivery order of SAP mm sto document is created?
Communication mode between processes
Unittest simple project
In fact, it's very simple. It teaches you to easily realize the cool data visualization big screen
Nested (multi-level) childrn routes, query parameters, named routes, replace attribute, props configuration of routes, params parameters of routes
Run can start normally, and debug doesn't start or report an error, which seems to be stuck
【BW16 应用篇】安信可BW16模组/开发板AT指令实现MQTT通讯
Jmeters use
Binary tree high frequency question type
第一讲:鸡蛋的硬度
信息安全实验三 :PGP邮件加密软件的使用
Unity shader (to achieve a simple material effect with adjustable color attributes only)
Sublime Text4 download the view in bower and set the shortcut key
Idea development environment installation
LeetCode每日一题(2316. Count Unreachable Pairs of Nodes in an Undirected Graph)