Java 汽车和交通黑客排名的差距
你能帮我解决最近在一次校外采访中被问到的以下问题吗 问题陈述: 给定一条有n个位置的2车道道路,以及从开始位置到结束位置从左到右行驶的总共m辆车,在不考虑车道的情况下,确定所有车辆位置的最大间隙 例如: n=10 开始=[1,2,5,8] 完成=[2,2,6,10] 上面描述的道路长度为n=10个单位,车辆数为m=4辆: 1.第一节车厢从位置开始[0]=1跨越到位置结束[0]=2 2.第二节车厢从位置开始[1]=2跨越到位置结束[1]=2 3.第三节车厢从位置开始[2]=5到位置结束[1]=6 4.第四节车厢从位置开始[3]=8到位置结束[3]=10 5.位置3-4和7处存在间隙。两辆车之间最大的差距是2 功能描述 在下面的编辑器中完成WidtGap函数 WideTGAP具有以下参数: int n:路段的长度 int start[m]:每辆车后部的位置 int finish[m]:每辆车前部的位置 返回 int:车与车之间最大间隙的长度 约束Java 汽车和交通黑客排名的差距,java,linked-list,Java,Linked List,你能帮我解决最近在一次校外采访中被问到的以下问题吗 问题陈述: 给定一条有n个位置的2车道道路,以及从开始位置到结束位置从左到右行驶的总共m辆车,在不考虑车道的情况下,确定所有车辆位置的最大间隙 例如: n=10 开始=[1,2,5,8] 完成=[2,2,6,10] 上面描述的道路长度为n=10个单位,车辆数为m=4辆: 1.第一节车厢从位置开始[0]=1跨越到位置结束[0]=2 2.第二节车厢从位置开始[1]=2跨越到位置结束[1]=2 3.第三节车厢从位置开始[2]=5到位置结束[1]=6
->1我为此尝试了python解决方案,在某些情况下进行了测试,得到了正确的答案,不能说它是否完全正确 解决方案:
def WidestGap(n, start, finish):
maxgap = 0
i = 1
min_start = 0
while i < len(start):
if finish[min_start] > start[i] and start[i] < start[min_start]:
maxgap = 0
min_start = i
elif finish[min_start] < start[i]:
maxgap = max(maxgap, (start[i] - finish[min_start]) -1)
min_start = i
i +=1
if (n - max(finish)) > maxgap:
maxgap = n - max(finish)
if min(start) -1 > maxgap:
maxgap = min(start) -1
return maxgap
def宽标(n,开始,结束):
maxgap=0
i=1
最小启动时间=0
当我start[i]和start[i]最大间隙:
最大间隙=n-最大值(光洁度)
如果最小(开始)-1>最大间隙:
最大间隙=最小(启动)-1
返回最大间隙
请让我知道任何失败的测试用例,如果有更好的方法
def largestGap(start,finish,n):
cars = list(zip(start,finish))
cars.sort()
cars.append((n+1,n+1))
max_fin = 0
max_gap = 0
for st,fin in cars:
if st > max_fin:
max_gap = max(max_gap, st - max_fin - 1)
max_fin = max(max_fin,fin)
return max_gap
让我知道是否有任何失败的测试可以使用暴力方法
brute force approach could be
traffic = ["*"]*n
positions = list(zip(start,finish))
for s,f in positions:
for i in range(s-1,f):
traffic[i]="&"
count,max_val=0,0
for i in traffic:
if i=="&":
count+=1
if i=="*":
if max_val<count:
max_val=count
count=0
print(max_val)
流量=[“*”]*n
位置=列表(压缩(开始、结束))
对于处于以下位置的s、f:
对于范围(s-1,f)内的i:
交通量[i]=“&”
计数,最大值=0,0
在交通方面:
如果i==“&”:
计数+=1
如果i==“*”:
如果max_Valu你被困在哪里?你对问题的解释给了你一个算法。找到汽车在路上的位置。找出路上所有的空隙。返回最大间距的长度。有效的方法可能是合并两个数组并创建*和&数组。您可以简要解释逻辑,或共享一些参考资料吗
brute force approach could be
traffic = ["*"]*n
positions = list(zip(start,finish))
for s,f in positions:
for i in range(s-1,f):
traffic[i]="&"
count,max_val=0,0
for i in traffic:
if i=="&":
count+=1
if i=="*":
if max_val<count:
max_val=count
count=0
print(max_val)