1.求众数
找到众数,这个众数出现的次数大于n/2
def majority_element(nums):
# moore投票法
candidate = None
count = 0
for num in nums:
if count == 0:
candidate = num
if num == candidate:
count += 1
else:
count -= 1
return candidate
2.有序数组的两数和为目标值
https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/
def two_sum(nums, tar):
j = len(nums) - 1
i = 0
while i <j:
sum_ = nums[i] + nums[j]
if sum_ == tar:
return [i+1,j+1]
if sum_ > tar:
j-=1
else:
i+=1
return None
3.数组的移动次数
https://leetcode-cn.com/problems/minimum-moves-to-equal-array-elements-ii/submissions/
def move_num(nums):
nums.sort()
ans = 0
mid = nums[len(nums)//2]
for num in nums:
ans += abs(num - mid)
return ans