Leetcode题解 0016期

( 做人要有梦想???)

0055题 跳跃游戏【Jump Game】

题目:
给定一个非负整数数组,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
判断你是否能够到达最后一个位置。

示例:

输入: [2,3,1,1,4]
输出: true
解释: 从位置 011 步, 然后跳 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值