leetcode-解题2018-5-8

27.REMOVE ELEMENT

class Solution:
    def removeElement(self, nums, val):
        e = len(nums)
        m =0
        i = 0
        while(i<e):
            if(nums[i]==val):
                del nums[i]
                e-=1
            else:
                m+=1
                i+=1
        return m

解法:通过python的del关键字,能删除数组中的元素,再循环的时候记住要修改循环变量,否则会出现不合法访问。

4.MEDIAN OF TWO SORTED ARRAYS

class Solution:
    def findMedianSortedArrays(self, nums1, nums2):
        m,n = len(nums1),len(nums2)
        if(m>n):
            nums1,nums2,m,n = nums2,nums1,n,m
        imin,imax,half_len = 0,m,(m+n+1)//2
        while(imin<=imax):
            i = (imin+imax)//2
            j = half_len - i
            if(i<m and nums2[j-1]>nums1[i]):
                imin = i+1
            elif(i>0 and nums1[i-1]>nums2[j]):
                imax = i-1
            else:
                if(i==0):maxleft = nums2[j-1]
                elif(j == 0):maxleft = nums1[i-1]
                else:maxleft = max(nums1[i-1],nums2[j-1])

                if((m+n)%2 == 1):
                    return maxleft

                if(i==m):minright = nums2[j]
                elif(j==n):minright = nums1[i]
                else:minright = min(nums1[i],nums2[j])

                return (maxleft+minright)/2.0
      
解法:利用二分法,不过是在一个数组上利用二分法,在另一个数组上查找总数组的中点,相对较复杂


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值