Leetcode簡單題26、27、28、29、38、53、58
阿新 • • 發佈:2018-12-11
26.刪除排序陣列中的重複項
class Solution(object): def removeDuplicates(self, nums): if len(nums) == 0: return 0 n = 1 for i in range(1, len(nums)): if nums[i] != nums[i-1]: n = n+1 nums[n-1] = nums[i] return n if __name__ == '__main__': t = Solution() nums = [0, 0, 1, 1, 1, 2, 2, 3, 3, 4] print(nums) print(t.removeDuplicates(nums))
27.移除元素
class Solution(object): def removeElement(self, nums, val): if len(nums) == 0: return 0 n = 0 for i in range(len(nums)): if nums[i] ==val: n = n+1 else: nums[i-n] = nums[i] return len(nums)-n if __name__ == '__main__': t = Solution() n = [3, 2, 2, 3] print(t.removeElement(n, 3))
28.實現strStr()
class Solution(object): def strStr(self, haystack, needle): hay = [] nee = [] for i in haystack: hay.append(i) print(len(hay)) for j in needle: nee.append(j) print(len(nee)) if not needle: return 0 i = 0 j = 0 while i < len(hay) and j < len(nee): if hay[i] == nee[j]: i += 1 j += 1 else: i = i-j+1 j = 0 if j == len(nee): return i - len(nee) return -1 # 方法二 def cankao(self, haystack, needle): if not needle: return 0 return haystack.find(needle) if __name__ == '__main__': t = Solution() haystack ="mississippi" needle = "issip" n = t.strStr(haystack, needle) print(n) print(t.cankao(haystack, needle))
29.搜尋插入位置
class Solution(object):
def searchInsert(self, nums, target):
for i in range(len(nums)):
if nums[i] >= target:
return i
return len(nums)
# 方法二:折半
def zheban(self, nums, target):
start = 0
end = len(nums)
while start < end:
mid = (end + start) // 2
if nums[mid] < target:
start = mid + 1
elif nums[mid] > target:
end = mid
else:
return mid
return start
if __name__ == '__main__':
t = Solution()
nums = [1, 3, 5, 6]
target = 7
print(t.zheban(nums, target))
# print(t.searchInsert(nums, target))
38. 報數
class Solution(object):
def countAndSay(self, n):
if n == 1:
return '1'
if n == 2:
return '11'
pre = '11'
for i in range(3, n+1):
strs = ''
count = 1
for j in range(1, len(pre)):
if pre[j-1] == pre[j]:
count += 1
else:
strs += str(count) + pre[j-1]
count = 1
strs += str(count) + pre[j]
pre = strs
return strs
if __name__ == '__main__':
t = Solution()
print(t.countAndSay(5))
53. 最大子序和
class Solution(object):
def maxSubArray(self, nums):
maxt = nums[0]
for i in range(len(nums)):
total = 0
for j in range(i, len(nums)):
total += nums[j]
if total > maxt:
maxt = total
return maxt
def maxSubArray1(self, nums):
maxt = nums[0]
temp = 0
for i in range(len(nums)):
if temp < 0:
temp = nums[i]
else:
temp += nums[i]
if temp > maxt:
maxt = temp
return maxt
if __name__ == '__main__':
t = Solution()
nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
print(t.maxSubArray(nums))
print(t.maxSubArray1(nums))
58.最後一個單詞的長度
class Solution(object):
def lengthOfLastWord(self, s):
l = len(s)
count = []
for i in range(l-1, -1, -1):
if s[i] != " ":
count.append(s[i])
if s[i] == " ":
if len(count) != 0:
break
else:
continue
return len(count)
if __name__ == '__main__':
t = Solution()
s = "dsf a "
print(t.lengthOfLastWord(s))