版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jesmine_gu/article/details/84939314
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))