5
线段旅行的面试难题
在length为的数字行上M,其中0 < M <= 1,000,000,000您给N(1 < N <= 100,000)整数对点。在每对中,第一个点表示对象当前所在的位置,第二个点表示对象应移动到的位置。(记住的second一点可能是更小的比first)。 现在,假设您从这一点开始,0并有一个可以容纳1物体的推车。您希望将所有对象从其初始位置移动到各自的最终位置,同时沿数字线移动最短距离(而不是位移)。你必须结束点M。 现在,我一直试图将这个问题简化为一个更简单的问题。老实说,我什至都没有想到过蛮力(可能贪婪)的解决方案。但是,我的第一个想法是将后退运动退化为两个前进运动,但这似乎并非在所有情况下都有效。 我3在这里绘制了这些样本测试用例: 第一个测试用例的答案是12。首先,您red在位置拿起物品0。然后移动到点6(距离= 6),red暂时放下该项目,然后拿起该green项目。然后,您移至点5(距离= 1)并放下该green项目。然后,您移至点6(distance = 1)并拾取放置的red项目,移至点9(distance = 3),然后移至点10(distance = 1)以完成序列。 行驶的总距离为6 + 1 + 1 + 3 + 1 = 12,这是最小的可能距离。 12我相信其他两种情况的答案是。但是,我找不到解决该问题的一般规则。 任何人有任何想法吗?
10
algorithms
math