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
解法:利用二分法,不过是在一个数组上利用二分法,在另一个数组上查找总数组的中点,相对较复杂