内容简介:正式刷题第三天。之前看了个说法,挺认可的。就是不要太在意一天的能呈现的价值,但是要在意累计的价值。
刷题第三天
正式刷题第三天。
之前看了个说法,挺认可的。
就是不要太在意一天的能呈现的价值,但是要在意累计的价值。
之前很多时候我会对今天一天没有完成的计划而沮丧,事实上,算法的实践,统计学的学习这些都是需要时间去积累去吃透。
所以,持之以恒的学习更为重要。
现在的目标是每天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 的方法其实都非常的便捷,简单的代码就可以完成算法的实现。
还是要多学习方法,比如今天的逆序遍历,以及左侧插入等。
实践出真知,古人诚不我欺。
以上所述就是小编给大家介绍的《小李飞刀:刷题第三弹!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learning Vue.js 2
Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99
About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!