Leetcode 刷题必须Review 十三 Lintcode(479 235 1781 1784 958)
作者:互联网
文章目录
479 · 数组第二大数
在数组中找到第二大的数。
def secondMax(self, nums):
# write your code here
nums.sort()
return nums[-2]
官方答案,打擂台:
def secondMax(self, nums):
# write your code here
maxValue = max(nums[0], nums[1])
secValue = min(nums[0], nums[1])
for i in xrange(2, len(nums)):
if nums[i] > maxValue:
secValue = maxValue
maxValue = nums[i]
elif nums[i] > secValue:
secValue = nums[i]
return secValue
之前写的答案:
def secondMax(self, nums):
# write your code here
que = []
heapq.heapify(que)
for num in nums:
heapq.heappush(que, num)
if len(que) > 2:
heapq.heappop(que)
return que[0]
235 · 分解质因数
将一个整数分解为若干质因数之乘积。
不会,直接看答案:
def primeFactorization(self, num):
up = int(num**0.5 + 1)
ans = []
for i in range(2,up):
while num % i == 0:
num /= i
ans += [i]
# 若最后剩余数不为1,则为最后一个质因数
if num != 1:
ans += [num]
return ans
1781 · 反转ASCII编码字符串
给定一个由ascii编码的字符串(例如,“ABC”可以编码为“656667”),您需要编写一个将编码字符串作为输入并返回反转的解码字符串的函数。
def reverseAsciiEncodedString(self, encodeString):
# Write your code here
s = ""
for i in range(0, len(encodeString), 2):
s += chr(int(encodeString[i:i+2]))
return s[::-1]
1784 · 减小为回文
给定一个由 a-z 组成的字符串 s. 欲通过以下操作把 s 变成回文串:
想了半天没想出来,看了自己之前写的。。。
def numberOfOperations(self, s):
# Write your code here
l, r = 0, len(s) - 1
count = 0
while l <= r:
count += abs(ord(s[r]) - ord(s[l]))
l += 1
r -= 1
return count
958 · 回文数据流
一个数据流进来,每次一个小写字母,当前数据流的排列是否能组成回文串。
不会,看我之前写的答案,没看懂。
def getStream(self, s):
# Write your code here
if not s or len(s) == 0: return []
res = [0 for _ in range(len(s))]
letters = [0 for _ in range(26)]
odd_count = 0
for i, cha in enumerate(s):
letters[ord(cha) - ord('a')] += 1
if letters[ord(cha) - ord('a')] % 2 == 1:
odd_count += 1
else:
odd_count -= 1
res[i] = 0 if odd_count > 1 else 1
return res
标签:958,code,return,nums,1781,Review,num,self,def 来源: https://blog.csdn.net/weixin_43716712/article/details/123136797