标签:ips upper 分治 href 最大 选择 maximum slow false
Dec 16, 2019 ~ Dec 22, 2019
Problem 53 Maximum Subarray 最大子数组 题目链接
题目描述:给定一个数组,在所有连续的子数组中,求得其中的最大值,举例如下:
数组:[-2,1,-3,4,-1,2,1,-5,4]
返回结果:6, 子数组 [4, -1, 2, 1] 的和最大
思路:该题目有多种可以解决思路。比如分治法,动态规划,贪心法。本次为了方便理解,采用贪心法。贪心法的贪心策略是在某个位置的一个数与其下一个数的和 和 下一个数 中,选择更大的,即 currsum = max(currsum+nums[i], nums[i]) 。若想求得数组中的最大子数组,只需要把每个位置的最大和进行比较,便可以得到最大子数组和,即 maxsum = max(maxsum, currsum)
通过的代码如下
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
maxsum = currsum = nums[0]
for i in range(1, len(nums)):
currsum = max(currsum+nums[i], nums[i])
maxsum = max(maxsum, currsum)
return maxsum
本周继续 Review 每个程序员需要知道的97件事(英文名:97 Things Every Programmer Should Know)。原文链接。下面是本周的5个小内容:
Python中检查字符串中是否由某些字符组成的函数有很多,下面是一些详细的解释:
str.islower()、str.isupper()、str.istitle():这三个方法很类似,其结果为 True 的有两个条件,其一字符串中至少有一个字符是可以有大小写的,这个条件三个方法是相同的。不同的是第二个条件,islower 指的是所有这些可以有大小写的字符均为小写,isupper 指的是所有这些可以有大小写的字符均为大写,istitle 指的是字符串中的所有单词都是标题化的(即首字符有大小写字符的大写字符,其余字符中有大小写字符的均为小写字符)。具体举例如下:
print('123')
print('123.islower() is ' + str('123'.islower())) # False
print('123.isupper() is ' + str('123'.isupper())) # False
print('123.istitle() is ' + str('123'.istitle())) # False
print('1q@#')
print('1q@#.islower() is ' + str('1q@#'.islower())) # True
print('1q@#.isupper() is ' + str('1q@#'.isupper())) # False
print('1q@#.istitle() is ' + str('1q@#'.istitle())) # False
print('QAQ')
print('QAQ.islower() is ' + str('QAQ'.islower())) # False
print('QAQ.isupper() is ' + str('QAQ'.isupper())) # True
print('QAQ.istitle() is ' + str('QAQ'.istitle())) # False
print('Qaq')
print('Qaq.islower() is ' + str('Qaq'.islower())) # False
print('Qaq.isupper() is ' + str('Qaq'.isupper())) # False
print('Qaq.istitle() is ' + str('Qaq'.istitle())) # True
print('Q123-q.istitle() is ' + str('Q123-q'.istitle())) # False
print('Q123-Q.istitle() is ' + str('Q123-Q'.istitle())) # True
str.isspace(),str.isalpha(),str.isalnum():这三个方法很接近,其含义分别为:isspace 表示字符串中至少有一个字符,且所有字符均在此字符集合中 { ‘ ‘, ‘\t‘, ‘\n‘, ‘\v‘, ‘\f‘, ‘\r‘ },则结果为 True;isalpha 表示字符串中至少有一个字符,且所有字符均字母字符,则结果为 True;isalnum 表示字符串中至少有一个字符,且所有字符均字母或数字字符,则结果为 True。
print("'qwe asd'.isspace() is " + str('qwe asd'.isspace())) # False
print("''.isspace() is " + str(''.isspace())) # False
print("' \t\n\v\f\r'.isspace() is " + str(' \t\n\v\f\r'.isspace())) # True
print("''.isalpha() is " + str(''.isalpha())) # False
print("'qwe'.isalpha() is " + str('qwe'.isalpha())) # True
print("'123qwe'.isalpha() is " + str('123qwe'.isalpha())) # False
print("''.isalnum() is " + str(''.isalnum())) # False
print("'qwe'.isalnum() is " + str('qwe'.isalnum())) # True
print("'123qwe'.isalnum() is " + str('123qwe'.isalnum())) # True
最后,还剩下三个类似于上面六个的函数,分别为str.isdecimal()、str.isdigit()、str.isnumeric()。它们之间的区别我现在还没有太清楚,等我清楚后再记录下来。更新:它们三者之间的区别我将其记录在了下一周的ARTS中,文章链接如下:ARTS Week 9
在 Review 部分中,提到谨慎选择工具,我觉得很不错。很多人喜欢用现有的库来完成某一任务,如果你的软件仅仅是像学生时代交作业时检查通过后便不再维护,那么用这些库来完成任务是可以的。但是,如果你的软件需要长时间维护,那么用现有的库则需要谨慎。具体优缺点见 Review 部分。
标签:ips upper 分治 href 最大 选择 maximum slow false
原文地址:https://www.cnblogs.com/mengxinayan/p/12288012.html