【1】两数之和
思路
代码
class Solution :
def twoSum ( self, nums: List[ int ] , target: int ) - > List[ int ] :
"""
# 法一:穷举法
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i]+nums[j] == target:
return [i, j]
"""
hashtable = { }
for idx, n in enumerate ( nums) :
if target- n not in hashtable:
hashtable[ n] = idx
else :
return [ hashtable[ target- n] , idx]
【4】寻找两个正序数组的中位数
思路
代码
class Solution :
def findMedianSortedArrays ( self, nums1: List[ int ] , nums2: List[ int ] ) - > float :
"""
# 法一:暴力法
nums = sorted(nums1 + nums2)
if len(nums) % 2:
return nums[int((len(nums)+1)/2-1)]
else:
return (nums[int(len(nums)/2-1)]+nums[int(len(nums)/2)])/2
"""
len1, len2 = len ( nums1) , len ( nums2)
p1, p2 = 0 , 0
left, right = 0 , 0
totalLen = len1 + len2
for _ in range ( int ( totalLen/ 2 ) + 1 ) :
left = right
if ( p1 < len1 and ( p2 >= len2 or nums1[ p1] < nums2[ p2] ) ) :
right = nums1[ p1]
p1 += 1
else :
right = nums2[ p2]
p2 += 1
if ( totalLen % 2 ) :
return right
else :
return ( left+ right) / 2