LeetCode 刷题(简单2019.9.4)

第14题 最长公共前缀
在这里插入图片描述
最长公共缀的话只要比较最短的和最长的字符串。

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if not strs: return ""
        str_min = min(strs)
        str_max = max(strs)
        re=str()
        for i in range(len(str_min)):
            if str_min[0] != str_max[0]:
                return ""
                break
            elif str_min[i] ==str_max[i]:
                re += str_min[i]
            else:
                break
        return re

第15题 有效的括号
在这里插入图片描述
这题是一个大神做的,太牛逼了,看的我跪了

class Solution:
    def isValid(self, s: str) -> bool:
        while "()" in s or "{}" in s or "[]" in s:
            s=s.replace('()','')
            s=s.replace('{}','')
            s=s.replace('[]','')
        return s == ''

第21题 合并两个有序链表
在这里插入图片描述

class Solution:
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        res = ListNode(None)
        node = res
        while l1 and l2:
            if l1.val < l2.val:
                node.next, l1 = l1, l1.next
            else:
                node.next, l2 = l2, l2.next
            node = node.next
        if l1:
            node.next = l1
        else:
            node.next = l2
        return res.next

第26题 删除排序数组中的重复项
在这里插入图片描述
用的是双指针法,慢指针负责更新不同元素的位置,只有碰到不用的元素才会更新,快指针跟着数组原始的遍历同步更新,每次向后移动一个位置,慢指针记录新数组元素下标,将该元素占用之前重复元素的位置。

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        flag = 0
        for i in nums:
            if nums[flag] != i:
                flag += 1
                nums[flag] = i
        return len(nums) and flag+1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值