( 做人要有梦想???)
0055题 跳跃游戏【Jump Game】
题目:
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个位置。
示例:
输入: [2,3,1,1,4]
输出: true
解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。
输入: [3,2,1,0,4]
输出: false
解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。
题目相对严谨
除Robust以外无需注意太多
解题思路:
哦,这是跳跃游戏1,之前那个跳跃游戏2的前传,emmm,这题还是贪心,就看能不能到最后一点,其实方法是一样的。
0056题 合并区间【Merge Intervals】
题目:
给出一个区间的集合,请合并所有重叠的区间。
示例:
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。
题目相对严谨
除Robust外无需注意太多
解题思路:
一开始先想到自定义排序,然后直接试了一下发现不能像C++那样做到直接自定义,而且Leetcode不允许再重新定义类,只好新建一个Class Section,然后……
主要是python3如何给一个class自定义一个大小或者如何将sorted应用到python3的class中,终于从stackoverflow上面找到了一种写法,在class中加入如下代码:
def __lt__(self, other):
return self.start < other.start
def __le__(self, other):
return self.start <= other.start
def __eq__(self, other):
return self.start == other.start
def __ge__(self, other):
return self.start >= other.start
def __gt__(self, other):
return self.start > other.start
def __ne__(self, other):
return self.start != other.start
写完之后看了一下第一的表现,发现了python中key和lambda的结合使用,来完成sort
intervals.sort(key=lambda x: x.start)
0057题 插入区间【Insert Interval】
题目:
给出一个无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
示例:
输入: intervals = [[1,3],[6,9]], newInterval = [2,5]
输出: [[1,5],[6,9]]
输入: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
输出: [[1,2],[3,10],[12,16]]
解释: 这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。
题目相对严谨
除Robust以外相对严谨
解题思路:
这题就是上一题的变种,直接append就好,我估计是有人在面试的时候遇到这题的变种,所以才分了两道题,另外话说只是多一个这点根本用不着标成困难啊(小声)。
0058题 最后一个单词的长度【Length of Last Word】
题目:
给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。
如果不存在最后一个单词,请返回 0 。
说明:一个单词是指由字母组成,但不包含任何空格的字符串。
示例:
输入: "Hello World"
输出: 5
题目相对严谨
这种题目额外需要注意Robust,除此之外无需注意太多
解题思路:
没有什么好说的,python你直接去吧。
class Solution:
def lengthOfLastWord(self, s):
res = s.split()
if len(res) != 0 and res[-1].isalpha():
return len(res[-1])
else:
return 0