Study Plan For Algorithms - Part2

1. 无重复字符的最长子串
给定一个字符串 s ,请找出其中不含有重复字符的 最长 子串 的长度。

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        char_dict = {}
        max_length = 0
        start = 0

        for i, char in enumerate(s):
            if char in char_dict and char_dict[char] >= start:
                start = char_dict[char] + 1
            char_dict[char] = i
            max_length = max(max_length, i - start + 1)

        return max_length

2. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。

class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
        merged = sorted(nums1 + nums2)
        n = len(merged)
        if n % 2 == 1:
            return merged[n // 2]
        else:
            return (merged[n // 2 - 1] + merged[n // 2]) / 2
posted @ 2024-08-15 22:36  WindMay  阅读(2)  评论(0编辑  收藏  举报