栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

leetcode学习笔记(两数组中位数/三数之和/颜色分类)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode学习笔记(两数组中位数/三数之和/颜色分类)

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

class Solution:
    def findMedianSortedArrays(self, nums1, nums2):
        nums1.extend(nums2)
        nums1.sort()
        if len(nums1)%2 == 0:
            i = int(len(nums1)/2)
            return (nums1[i-1] +nums1[i])/2
        else:
            i = int((len(nums1)+1)/2)
            return nums1[i-1]
不用sort()
	class Solution:
    def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
        len1 = len(nums1)
        len2 = len(nums2)
        flag1 = 0
        flag2 = 0
        conlist = []
        while(True):
            if flag1 < len1 and flag2 < len2:
                if nums1[flag1] < nums2[flag2]:
                    conlist.append(nums1[flag1])
                    flag1 +=1
                else:
                    conlist.append(nums2[flag2])
                    flag2 +=1
            elif flag1 >= len1 and flag2 < len2:
                conlist.append(nums2[flag2])
                flag2 +=1
            elif flag1 < len1 and flag2 >= len2:
                conlist.append(nums1[flag1])
                flag1 +=1
            else:
                break
        if (len1+len2)%2!=0:
            return conlist[(len1+len2)//2]
        else:
            return (conlist[(len1+len2)//2-1] + conlist[(len1+len2)//2])/2
        return conlist[(len1+len2)//2]

三数之和

会超时
class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        result = []
        lens = len(nums)
        for i in range(lens):
            for j in range(i+1,lens):
                a = nums[j+1:]
                if -(nums[i]+nums[j]) in a:
                    result.append([nums[i],nums[j],-(nums[i]+nums[j])])
        re1 = []
        for re in result:
            re.sort()
            if re not in re1:
                re1.append(re)
        return re1

方法2
class Solution:
    def threeSum(self, nums: List[int]) -> List[List[int]]:
        if len(nums) < 3:
            return []
        nums.sort()
        res = []
        for i in range(len(nums)):
            if nums[i] > 0:
                return res #如果剩下的数列第一个数字就大于0
            if i > 0 and nums[i] == nums[i-1]:
                continue
            else:
                L = i+1
                R = len(nums)-1
                while L 0: 
                        R -= 1
                        
        return res
75. 颜色分类

class Solution:
    def sortColors(self, nums: List[int]) -> None:
        nums.sort()
        return nums
双指针
class Solution:
    def sortColors(self, nums: List[int]) -> None:
        n = len(nums)
        i = 0
        p0, p2 = 0, n-1 
               
        while i <= p2:
            while i <= p2 and nums[i] == 2:
                nums[i], nums[p2] = nums[p2], nums[i]#把2换到最后
                p2 -= 1
            if nums[i] == 0:
                nums[i], nums[p0] = nums[p0], nums[i]#把0换到最开头
                p0 += 1
            i += 1

        return nums
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294332.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号