贪心_leetcode435

#coding=utf-8

# Definition for an interval.
class Interval(object):
def __init__(self, s=0, e=0):
self.start = s
self.end = e

def compare1(x, y):
if x.start < y.start:
return -1
elif x.start > y.start:
return 1
else:
if x.end < y.end:
return -1
elif x.end > y.end:
return 1
else:
return 0
# 动态规划
# 最长上升子序列
class Solution1(object):
def eraseOverlapIntervals(self, intervals):
"""
:type intervals: List[Interval]
:rtype: int
"""

if not intervals:
return 0

intervals.sort(key=lambda x:(x.start,x.end))

memo = [1 for i in range(len(intervals))]


for i in range(1,len(intervals)):
for j in range(i):
if intervals[i].start >= intervals[j].end:
memo[i] = max(memo[i],memo[j]+1)


res = 0
for i in range(len(memo)):
res = max(res,memo[i])

return len(intervals) - res

# 贪心
class Solution2(object):
def eraseOverlapIntervals(self, intervals):
"""
:type intervals: List[Interval]
:rtype: int
"""
if not intervals:
return 0

intervals.sort(key=lambda x: (x.end, x.start))

res = 1

pre = 0

for i in range(1,len(intervals)):
if intervals[i].start >= intervals[pre].end:
res += 1
pre = i



return len(intervals) - res








猜你喜欢

转载自www.cnblogs.com/lux-ace/p/10556877.html