当前位置: 首页 > 后端技术 > Python

力扣-0744.寻找比目标字母大的最小字母【Python】

时间:2023-03-25 22:26:27 Python

LeetCode0744.FindSmallestLetterGreaterThanTarget寻找比目标字母大的最小字母【Easy】【Python】LeetCode只有小写字母,并给定一个目标字母目标,找到列表中大于给定目标的最小元素。字母也环绕。例如,如果目标是target='z'和letters=['a','b'],则答案是'a'。示例:输入:letters=["c","f","j"]target="a"输出:"c"输入:字母=["c","f","j"]target="c"输出:"f"输入:字母=["c","f","j"]target="d"输出:"f"输入:letters=["c","f","j"]target="g"输出:"j"输入:letters=["c","f","j"]target="j"Output:"c"Input:letters=["c","f","j"]target="k"Output:"c"Note:lettershas长度在[2,10000]范围内。letters由小写字母组成,至少包含2个不同的字母。target是小写字母。问题力扣给一个只包含小写字母的有顺序数字组的字母和一个目标标记字母目标,在有序数组中找到比目标字母大的最小字母。数组中字母的顺序是循环的。例如,如果目标字母target='z'并且有序数组为letters=['a','b'],则答案返回'a'。示例:输入:letters=["c","f","j"]target="a"输出:"c"输入:letters=["c","f","j"]target="c"输出:"f"输入:字母=["c","f","j"]目标="d"输出:"f"输入:字母=["c","f","j"]target="g"输出:"j"输入:letters=["c","f","j"]target="j"输出:"c"输入:letters=["c","f","j"]target="k"output:"c"注意:字母的长度范围在[2,10000]区间内。letters仅由小写字母组成,至少有两个不同的字母。目标字母target是小写字母。思路二分查找注意数组是循环的,所以如果target>=最后一个字母,直接返回letters[0]即可。时间复杂度:O(logn)空间复杂度:O(1)PythoncodeclassSolution(object):defnextGreatestLetter(self,letters,target):""":typeletters:List[str]:typetarget:str:rtype:str"""low,high=0,len(letters)-1whilelow<=high:mid=int((low+high)/2)#list中的元素必须是intifletters[mid]<=target:low=mid+1else:ifmid<1or(mid>=1andletters[mid-1]<=target):returnletters[mid]high=mid-1returnletters[0]#'z'<'a'代码地址GitHub链接