• LeetCode 3.4.5题


    3.无重复字符的最长子串

    解题思路:

    • 使用map的滑动窗口解法,和第二题使用hashmap优化类似
    • 滑动窗口法的思想是,在ans上设置一个start和end指针,end指针随着字符存入而改变,start指针随着出现重复元素而改变
    • 判断新进入的字符串是否存在于之前的map中,若存在,则移动start指针到map中重复元素的位置
    1. class Solution(object):
    2. def lengthOfLongestSubstring(self, s):
    3. """
    4. :type s: str
    5. :rtype: int
    6. """
    7. n = len(s)
    8. ans = start = 0
    9. map = {}
    10. for end,val in enumerate(s): #end是提取字符串s中元素的位置
    11. if val in map.keys():
    12. start = max(map.get(val)+1,start) #这里的+1是将指针后移,删除开头的重复元素
    13. map[val] = end #将字符和end存入map
    14. ans = max(ans,end-start+1)
    15. return ans

    特殊情况:

    • 字符串为空
    • 字符串全部为相同字符

    4.寻找两个正序数组的中位数

            这个题我想的是合并nums1和nums2,排序后根据length是单数还是双数找到中位数。

    1. class Solution(object):
    2. def findMedianSortedArrays(self, nums1, nums2):
    3. """
    4. :type nums1: List[int]
    5. :type nums2: List[int]
    6. :rtype: float
    7. """
    8. #num = nums1.append(nums2)
    9. numss = nums1 + nums2
    10. num = sorted(numss)
    11. n = len(num)
    12. if n%2==0:
    13. ans = 0.5*(num[(n/2)-1]+num[n/2])
    14. elif n%2 ==1:
    15. ans = num[(n-1)/2]
    16. return ans
  • 相关阅读:
    C++入门
    3. Spring Boot starter入门
    MySQL4
    P1314 [NOIP2011 提高组] 聪明的质监员-二分+前缀和
    SSM整合
    Python 实现单例模式的五种写法!
    设计模式-装饰器模式
    aws s3上传文件
    如何查看 Red Hat Enterprise Linux 中的系统内存利用率?
    给el-form-item,添加key的场景
  • 原文地址:https://blog.csdn.net/icecreamdinner/article/details/126229664