Aerial Movie(双指针,2sum)
Description
Example
Explanation:
87-30=57
20+25=45,57-45=12
20+19=39,57-39=19
20+37=57,57-57=0
25+19=44,57-44=13
25+37=62,57
<
62
19+37=56,57-56=1Last updated
Explanation:
87-30=57
20+25=45,57-45=12
20+19=39,57-39=19
20+37=57,57-57=0
25+19=44,57-44=13
25+37=62,57
<
62
19+37=56,57-56=1Last updated
Explanation:
67-30=37
17+20=37,18+19=37
The longest movie in the first group is 20,and 19 in the second grouo, so output`[17,20]`class Solution:
"""
@param t: the length of the flight
@param dur: the length of movies
@return: output the lengths of two movies
"""
def aerial_Movie(self, t, dur):
# Write your code here
target = t - 30
if not dur:
return []
dur.sort()
mindiff=float('inf')
s,e = 0,len(dur)-1
res = []
while s < e:
localsum = dur[s] + dur[e]
diff = target - localsum
if diff == 0:
return [dur[s],dur[e]]
else:
if diff < 0:
e -= 1
else:
if diff < mindiff:
mindiff = diff
res = [dur[s],dur[e]]
s +=1
return res