Leetcode简单题26、27、28、29、38、53、58

版权声明:本文为博主原创文章,未经博主允许不得转载。 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))

猜你喜欢

转载自blog.csdn.net/jesmine_gu/article/details/84939314