作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/


题目地址:https://leetcode.com/problems/find-smallest-letter-greater-than-target/description/

题目描述

Given a list of sorted characters letters containing only lowercase letters, and given a target letter target, find the smallest element in the list that is larger than the given target.

Letters also wrap around. For example, if the target is target = 'z' and letters = ['a', 'b'], the answer is 'a'.

Examples:

Input:
letters = ["c", "f", "j"]
target = "a"
Output: "c" Input:
letters = ["c", "f", "j"]
target = "c"
Output: "f" Input:
letters = ["c", "f", "j"]
target = "d"
Output: "f" Input:
letters = ["c", "f", "j"]
target = "g"
Output: "j" Input:
letters = ["c", "f", "j"]
target = "j"
Output: "c" Input:
letters = ["c", "f", "j"]
target = "k"
Output: "c"

Note:

  1. letters has a length in range [2, 10000].
  2. letters consists of lowercase letters, and contains at least 2 unique letters.
  3. target is a lowercase letter.

题目大意

给出了一个排序的字符数组,找出第一个比target大的字符。注意是数组是循环的。

解题方法

线性扫描

找到第一个比指定字符大的。如果没找到的话,列表是可以循环的。也就是说如果没找到就返回列表第一个字符。

class Solution(object):
def nextGreatestLetter(self, letters, target):
"""
:type letters: List[str]
:type target: str
:rtype: str
"""
for letter in letters:
## 提交了之后发现不用使用ord,字符可以用'>''<'比较大小
if ord(letter) > ord(target):
return letter
return letters[0]

二分查找

因为是有序的,所以直接二分即可。

class Solution(object):
def nextGreatestLetter(self, letters, target):
"""
:type letters: List[str]
:type target: str
:rtype: str
"""
index = bisect.bisect_right(letters, target)
return letters[index % len(letters)]

日期

2018 年 1 月 23 日
2018 年 11 月 19 日 —— 周一又开始了

最新文章

  1. Java学习笔记(一)
  2. Debian上安装Apache+Django全过程
  3. 思维题(转换) HDU 4370 0 or 1
  4. &quot;SQLServer无法打开用户默认数据库,登录失败,错误4064&quot;的解决办法
  5. @gettrcname.sql
  6. Android样式的开发:drawable汇总篇
  7. Linux LDAP Server---&gt;Clients配置
  8. SQL2005中的事务与锁定(二)- 转载
  9. 学习练习 java面向对象封装汽车
  10. 【C#学习笔记】保存文件
  11. Interface的多层继承
  12. (step4.3.8)hdu 2181(哈密顿绕行世界问题——DFS)
  13. python 小程序—循环和列表训练
  14. Spring 中@NotNull, @NotEmpty和@NotBlank之间的区别是什么?
  15. 生鲜配送管理系统_升鲜宝V2.0 小标签打印功能说明_15382353715
  16. LVM备份(3)- pg_dumpall
  17. 多线程之Executors基本使用
  18. mysql获取连接connection失败
  19. Linux (Fedora 28) 如何查看 CPU 温度
  20. django基类View.as_view()

热门文章

  1. R语言与医学统计图形-【20】ggplot2图例
  2. confluence——实现
  3. jumpserver——脚本安装
  4. PHP-FPM运行状态的实时查看及监控详解
  5. Kubernetes主机间cluster ip时通时不通
  6. 非寻常方式学习ApacheTomcat架构及10.0.12源码编译
  7. keeper及er表示被动
  8. Linux学习 - 修改、查询文件内容
  9. Linux学习 - 正则表达式
  10. win10安装两台mysql-5.7.31实例