力扣刷题 day37:10-07

1.二分查找

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。力扣刷题 day37:10-07_第1张图片

方法一:二分法

#方法一:二分法
def search(nums,target):
    left,right=0,len(nums)-1
    while left<=right:
        mid=(left+right)//2
        if nums[mid]>target:
            right=mid-1
        elif nums[mid]

2.寻找比目标字母大的最小字母

给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。

返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。

方法一:二分查找 

#方法一:二分查找
def nextGreatestLetter(letters,target):
    left,right=0,len(letters) -1
    if target>=letters[-1]:  #没有找到
        return letters[0]
    while left<=right:
        mid=(left+right)//2
        if letters[mid]>target:
            right=mid-1
        elif letters[mid] <= target:
            left=mid + 1
    return letters[left]

3.公平的糖果交换

爱丽丝和鲍勃拥有不同总数量的糖果。给你两个数组 aliceSizes 和 bobSizes ,aliceSizes[i] 是爱丽丝拥有的第 i 盒糖果中的糖果数量,bobSizes[j] 是鲍勃拥有的第 j 盒糖果中的糖果数量。

两人想要互相交换一盒糖果,这样在交换之后,他们就可以拥有相同总数量的糖果。一个人拥有的糖果总数量是他们每盒糖果数量的总和。

返回一个整数数组 answer,其中 answer[0] 是爱丽丝必须交换的糖果盒中的糖果的数目,answer[1] 是鲍勃必须交换的糖果盒中的糖果的数目。如果存在多个答案,你可以返回其中 任何一个 。题目测试用例保证存在与输入对应的答案。力扣刷题 day37:10-07_第2张图片

方法一:求和+遍历 

#方法一:求和+遍历
def fairCandySwap(aliceSizes,bobSizes):
    s1=sum(aliceSizes)
    s2=sum(bobSizes)
    target=(s2-s1)//2 #交换两个数之差
    for i in aliceSizes:
        if (i+target) in bobSizes:
            return [i,i + target] #找到了

你可能感兴趣的:(力扣刷题,leetcode,算法,职场和发展)