小李飞刀:刷题第三弹!

栏目: Python · 发布时间: 5年前

内容简介:正式刷题第三天。之前看了个说法,挺认可的。就是不要太在意一天的能呈现的价值,但是要在意累计的价值。

刷题第三天

正式刷题第三天。

之前看了个说法,挺认可的。

就是不要太在意一天的能呈现的价值,但是要在意累计的价值。

之前很多时候我会对今天一天没有完成的计划而沮丧,事实上,算法的实践,统计学的学习这些都是需要时间去积累去吃透。

所以,持之以恒的学习更为重要。

现在的目标是每天2题,当适合的时候就提高每天的题量!

第一题

20. 有效的括号

难度:简单

类型:堆栈

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

我的解答代码:

class Solution:
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        stack = []
        dic = {'(':')',')':'(','{':'}','}':'{','[':']',']':'['}
        if len(s) < 2:
            return (len(s)==0)
        stack.append(s[0])
        for i in s[1:]:
            if len(stack) == 0:
                stack.append(i)
            elif i != dic[stack[-1]]:
                stack.append(i)
            else:
                stack.pop()
        return (len(stack)==0)

用了堆栈的方法和字典的方法,字典查询速度会比较快。

然后对比当前字符和对应的堆栈里的最末字符对应的另一半。

小李飞刀:刷题第三弹!

错误的一次是因为没有考虑空字符串,当存在为 "" 的时候,结果应该为true。

小李飞刀:刷题第三弹!

相对而言效率还是是可以的。

本题主要关键点

  • 使用dictionary地图的方式,类似扫描来确认对应的关系。

第二题

66. 加一

难度:简单

类型:??

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

我的解题代码是:

class Solution:
    def plusOne(self, digits):
        """
        :type digits: List[int]
        :rtype: List[int]
        """
        a = -1
        for i in digits[::-1]:
            if i != 9 :
                digits[a] = i+1
                return digits
            else:
                digits[a] = 0
                if (a + len(digits)) == 0:
                    digits.insert(0,1)
                    return digits
                a = a - 1

用的办法比较土。

简单来说就是逆序遍历,因为十进制下,逢9进位,所以我们逆向计算有存在9的情况。

emmm.....感觉这个方法也很适合用递归来做。

小李飞刀:刷题第三弹!

效率上居然还可以的,错误过一次,主要原因是因为在数据例子为 [9] 的时候,输出结果应该为 [1,0] ,所以重新进行了调整。

本题主要关键点

insert(位置点,数值)

总结

很多 python 的方法其实都非常的便捷,简单的代码就可以完成算法的实现。

还是要多学习方法,比如今天的逆序遍历,以及左侧插入等。

实践出真知,古人诚不我欺。


以上所述就是小编给大家介绍的《小李飞刀:刷题第三弹!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Letting Go of the Words

Letting Go of the Words

Janice (Ginny) Redish / Morgan Kaufmann / 2007-06-11 / USD 49.95

"Redish has done her homework and created a thorough overview of the issues in writing for the Web. Ironically, I must recommend that you read her every word so that you can find out why your customer......一起来看看 《Letting Go of the Words》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具