网易首页 > 网易号 > 正文 申请入驻

2024-02-28:用go语言,有一个由x轴和y轴组成的坐标系, “y下“

0
分享至

2024-02-28:用go语言,有一个由x轴和y轴组成的坐标系,

"y下"和"y上"表示一条无限延伸的道路,"y下"表示这个道路的下限,"y上"表示这个道路的上限,

给定一批长方形,每一个长方形有(x1, x2, y1, y2),4个坐标可以表示一个长方形,

判断这条道路整体是不是可以走通的。

以下为正式题目:

图片在计算机处理中往往是使用二维矩阵来表示的,

给你一个大小为 m x n 的二进制矩阵 image 表示一张黑白图片,0 代表白色像素,1 代表黑色像素,

黑色像素相互连接,也就是说,图片中只会有一片连在一块儿的黑色像素。像素点是水平或竖直方向连接的。

给你两个整数 x 和 y 表示某一个黑色像素的位置。

请你找出包含全部黑色像素的最小矩形(与坐标轴对齐),并返回该矩形的面积。

你必须设计并实现一个时间复杂度低于 O(m*n) 的算法来解决此问题。

输入:image = [[“0”,“0”,“1”,“0”],[“0”,“1”,“1”,“0”],[“0”,“1”,“0”,“0”]], x = 0, y = 2。

输出:6。

答案2024-02-28:

来自左程云。

灵捷3.5

大体步骤如下:

1.定义一个辅助函数,用于计算包含全部黑色像素的最小矩形的面积。

minArea(image [][]byte, x int, y int) int

2.在函数中,使用二分查找来确定矩形的左边界、右边界、上边界和下边界。

minArea

3.实现辅助函数,用于确定左边界。采用二分查找方法,在给定的列col中向左查找,直到找到第一个出现黑色像素的位置。

left(image [][]byte, col int) int

4.实现辅助函数,用于确定右边界。采用二分查找方法,在给定的列col中向右查找,直到找到最后一个出现黑色像素的位置。

right(image [][]byte, col int) int

5.实现辅助函数,用于确定上边界。采用二分查找方法,在给定的行row中从左边界到右边界之间查找,直到找到第一个出现黑色像素的位置。

up(image [][]byte, row int, left int, right int) int

6.实现辅助函数,用于确定下边界。采用二分查找方法,在给定的行row中从左边界到右边界之间查找,直到找到最后一个出现黑色像素的位置。

down(image [][]byte, row int, left int, right int) int

7.在函数中,调用辅助函数获取左边界、右边界、上边界和下边界,并计算矩形的面积()。

minArea

(right - left + 1) * (down - up + 1)

8.在函数中,定义一个示例图片和给定的点,调用函数并将结果打印出来。

main

image

(x, y)

minArea

总的时间复杂度:由于每个辅助函数都采用了二分查找的方法,时间复杂度为O(logn),所以总的时间复杂度为O(logn)。

总的额外空间复杂度:除了存储输入数据和输出结果的额外空间外,代码没有使用其他额外的空间,因此总的额外空间复杂度为O(1)。

go完整代码如下:

packagemain
import"fmt"
funcminArea(image[][]byte,xint,yint)int{
left:=left(image,y)
right:=right(image,y)
up:=up(image,x,left,right)
down:=down(image,x,left,right)
return(right-left+1)*(down-up+1)
}
funcleft(image[][]byte,colint)int{
l,r,m,ans:=0,col-1,0,col
find:=false
forl<=r{
m=(l+r)/2
find=false
fori:=0;iifimage[i][m]=='1'{
find=true
break
}
}
iffind{
ans=m
r=m-1
}else{
l=m+1
}
}
returnans
}
funcright(image[][]byte,colint)int{
l,r,m,ans:=col+1,len(image[0])-1,0,col
find:=false
forl<=r{
m=(l+r)/2
find=false
fori:=0;iifimage[i][m]=='1'{
find=true
break
}
}
iffind{
ans=m
l=m+1
}else{
r=m-1
}
}
returnans
}
funcup(image[][]byte,rowint,leftint,rightint)int{
u,d,m,ans:=0,row-1,0,row
find:=false
foru<=d{
m=(u+d)/2
find=false
fori:=left;i<=right;i++{
ifimage[m][i]=='1'{
find=true
break
}
}
iffind{
ans=m
d=m-1
}else{
u=m+1
}
}
returnans
}
funcdown(image[][]byte,rowint,leftint,rightint)int{
u,d,m,ans:=row+1,len(image)-1,0,row
find:=false
foru<=d{
m=(u+d)/2
find=false
fori:=left;i<=right;i++{
ifimage[m][i]=='1'{
find=true
break
}
}
iffind{
ans=m
u=m+1
}else{
d=m-1
}
}
returnans
}
funcmain(){
image:=[][]byte{{'0','0','1','0'},{'0','1','1','0'},{'0','1','0','0'}}
x:=0
y:=2
result:=minArea(image,x,y)
fmt.Println(result)
}



python代码如下:

#-*-coding:utf-8-*-
defminArea(image,x,y):
left=left_boundary(image,y)
right=right_boundary(image,y)
up=upper_boundary(image,x,left,right)
down=lower_boundary(image,x,left,right)
return(right-left+1)*(down-up+1)
defleft_boundary(image,col):
l,r,m,ans=0,col-1,0,col
find=False
whilel<=r:
m=(l+r)//2
find=False
foriinrange(len(image)):
ifimage[i][m]=='1':
find=True
break
iffind:
ans=m
r=m-1
else:
l=m+1
returnans
defright_boundary(image,col):
l,r,m,ans=col+1,len(image[0])-1,0,col
find=False
whilel<=r:
m=(l+r)//2
find=False
foriinrange(len(image)):
ifimage[i][m]=='1':
find=True
break
iffind:
ans=m
l=m+1
else:
r=m-1
returnans
defupper_boundary(image,row,left,right):
u,d,m,ans=0,row-1,0,row
find=False
whileu<=d:
m=(u+d)//2
find=False
foriinrange(left,right+1):
ifimage[m][i]=='1':
find=True
break
iffind:
ans=m
d=m-1
else:
u=m+1
returnans
deflower_boundary(image,row,left,right):
u,d,m,ans=row+1,len(image)-1,0,row
find=False
whileu<=d:
m=(u+d)//2
find=False
foriinrange(left,right+1):
ifimage[m][i]=='1':
find=True
break
iffind:
ans=m
u=m+1
else:
d=m-1
returnans
image=[['0','0','1','0'],['0','1','1','0'],['0','1','0','0']]
x=0
y=2
result=minArea(image,x,y)
print(result)



声明:个人原创,仅供参考

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
江苏南京,王先生存了500万元,当月就获得了35万元的利息。3个月后,他又获得了67万元的利息

江苏南京,王先生存了500万元,当月就获得了35万元的利息。3个月后,他又获得了67万元的利息

别人都叫我阿腈
2024-06-16 07:15:02
完蛋了,国民党再无重新执政的机会

完蛋了,国民党再无重新执政的机会

雪中风车
2024-06-13 05:04:09
美联储对中国的第二波攻击已经发动,目标是掐死人民币国际化道路

美联储对中国的第二波攻击已经发动,目标是掐死人民币国际化道路

王思聪爱音乐
2024-06-15 22:37:27
是什么让发展中国家毫无翻身希望?

是什么让发展中国家毫无翻身希望?

智先生
2024-06-15 21:04:01
奔驰车主持棍打女骑手后续:真实身份及朋友圈曝光,竟是个假富豪

奔驰车主持棍打女骑手后续:真实身份及朋友圈曝光,竟是个假富豪

洛洛女巫
2024-06-15 19:27:00
对华加征关税仅1天,中方预告反击,法国或将成为“出头鸟”

对华加征关税仅1天,中方预告反击,法国或将成为“出头鸟”

老俞说道
2024-06-15 15:14:43
欧文:不管怎样历史都会被创造 我们希望站在正确的一边

欧文:不管怎样历史都会被创造 我们希望站在正确的一边

直播吧
2024-06-16 11:33:07
“税务倒查30年”孰是孰非,看一下法律依据是什么,不妨讨论一下

“税务倒查30年”孰是孰非,看一下法律依据是什么,不妨讨论一下

涛涛生活搞笑
2024-06-15 17:56:11
张若昀翻车?刘芮麟闪婚?孙楠发言被扒?郭晋安晚节不保?

张若昀翻车?刘芮麟闪婚?孙楠发言被扒?郭晋安晚节不保?

gogoDaily
2024-06-15 10:00:03
叠滘龙船“飙”上央视背后:参赛者并非房东,全村参赛,外村人称“难以想象”

叠滘龙船“飙”上央视背后:参赛者并非房东,全村参赛,外村人称“难以想象”

红星新闻
2024-06-16 11:00:19
反俄领导人终于下岗回家,俄罗斯放心了,乌克兰传来噩耗

反俄领导人终于下岗回家,俄罗斯放心了,乌克兰传来噩耗

星辰故事屋
2024-06-13 18:40:02
曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

曝45岁伏明霞离婚,净身出户原因揭晓,71岁百亿丈夫只说6个字

深度知局
2024-05-20 19:25:53
安徽将迎大雨、暴雨!

安徽将迎大雨、暴雨!

中安在线
2024-06-16 07:53:07
曝豆得儿曾为王思聪打过胎,看到黄一鸣爆料后破防,本人发文怒斥

曝豆得儿曾为王思聪打过胎,看到黄一鸣爆料后破防,本人发文怒斥

拾娱先生
2024-06-13 15:04:40
走路是长寿的良药!再次提醒:到了60岁,走路须牢记“4不要”

走路是长寿的良药!再次提醒:到了60岁,走路须牢记“4不要”

碧晴养生汇
2024-06-15 11:02:15
0-2到3-2!中国女排击败世界第一,晋级决赛!张常宁立功了

0-2到3-2!中国女排击败世界第一,晋级决赛!张常宁立功了

体育哲人
2024-06-15 23:02:19
中国女排绝杀世界第一!全队冲进场庆祝,蔡斌朱婷笑了,热血沸腾

中国女排绝杀世界第一!全队冲进场庆祝,蔡斌朱婷笑了,热血沸腾

体坛扒客
2024-06-15 23:05:47
前几天我光着屁股在男朋友的床上坐了一会,后来就感觉屁股痒痒的

前几天我光着屁股在男朋友的床上坐了一会,后来就感觉屁股痒痒的

今日养生之道
2024-06-16 02:40:47
江苏海安发现罕见的三角桥,三个桥面却没有桥墩,如今成了危桥

江苏海安发现罕见的三角桥,三个桥面却没有桥墩,如今成了危桥

大宗看萌宠
2024-06-16 07:05:18
大胃王浪胃仙现身贵州狂吃火锅,从大叔变美女,身体暴瘦疑变性!

大胃王浪胃仙现身贵州狂吃火锅,从大叔变美女,身体暴瘦疑变性!

八卦爱侃娱
2024-06-15 16:55:28
2024-06-16 12:14:44
moonfdd
moonfdd
福大大架构师每日一题
423文章数 7关注度
往期回顾 全部

科技要闻

iPhone 16会杀死大模型APP吗?

头条要闻

法国股市暴跌引发恐慌 马克龙:法国处于非常严峻时刻

头条要闻

法国股市暴跌引发恐慌 马克龙:法国处于非常严峻时刻

体育要闻

没人永远年轻 但青春如此无敌还是离谱了些

娱乐要闻

上影节红毯:倪妮好松弛,娜扎吸睛

财经要闻

打断妻子多根肋骨 上市公司创始人被公诉

汽车要闻

售17.68万-21.68万元 极狐阿尔法S5正式上市

态度原创

时尚
本地
艺术
亲子
军事航空

中年女性还是穿连衣裙最有气质!裙摆过膝、腰部收紧,巨显瘦

本地新闻

粽情一夏|海河龙舟赛,竟然成了外国人的大party!

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

亲子要闻

孩子吃饭时习惯让别人盛饭,外婆是这样做的...

军事要闻

普京提停火和谈条件 美防长迅速回应

无障碍浏览 进入关怀版