• 题目描述:

1174. 下一个更大的元素 III

给定一个32位整数n,用同样的数字组成新的32位整数,使得它要比n大,返回最小的这样的数。如果不存在这样的整数,返回-1。

  • 算法思路:

首先将这个数转化成list数组,从后往前判断list数组后一位大于前一位数的index,记录下此index。根据index将原数组拆分成两部分,将前面部分保留,查找后半部分的数组中比第一个元素更大的数,记录下此数并在后半部分列表中删除,将删除后的列表进行排序。最终查找结果为前半部分列表+删除的数(列表形式)+后半部分列表。

  • code
class Solution:
"""
@param n: an integer
@return: the smallest 32-bit integer which has exactly the same digits existing in the integer n and is greater in value than n
"""
def nextGreaterElement(self, n):
# Write your code here
list_n = list(str(n))
length_n = len(list_n)
if length_n == 1: #如果list长度为1,则不存在
return -1
index = -1
while list_n[index] <= list_n[index-1]: #从list最后一个数开始比较
index -= 1
if index == -length_n: #如果已经是按照由大到小顺序排列,则不存在
return -1
#后半部分数组
res_list = list_n[index-1:]
replace = 0 for num in sorted(res_list):
if num > res_list[0]:
replace = num
break
res_list.remove(replace) result = list_n[:index-1] + [replace] + sorted(res_list)
result_n = int(''.join(str(i) for i in result)) #判断输出的数的范围是32位整数范围
if result_n >= -2147483648 and result_n <= 2147483647:
return result_n
else:
return -1

  

最新文章

  1. PHP header函数使用大全
  2. 基于.Net Framework 4.0 Web API开发(3):ASP.NET Web APIs 异常的统一处理Attribute 和统一写Log 的Attribute的实现
  3. I/O 流和对象序列化
  4. AngularJS 使用$sce控制代码安全检查
  5. Oracle创建主外键
  6. Dynamic Flash Messages
  7. WebForm / MVC 源码分析
  8. UVA - 12232 Exclusive-OR (并查集扩展偏离向量)
  9. 使用Django清理数据库中的数据
  10. D11
  11. 微信小程序开发小记
  12. 修改Linux命令提示符
  13. MATLAB更换编辑器配色方案
  14. ECS之Git服务器搭建
  15. leetcode — sort-colors
  16. WEBBASE篇: 第九篇, JavaScript知识4
  17. c++优先队列(堆)
  18. spring---aop(7)---Spring AOP中expose-proxy介绍
  19. (C/C++) FILE 讀寫檔案操作
  20. [回文树][BZOJ2160][国家集训队]拉拉队排练

热门文章

  1. Ajax实现异步请求
  2. 仿EXCEL插件,智表ZCELL产品V1.7 版本发布,增加自定义右键菜单功能
  3. Java 之 Response 发送验证码案例
  4. 英语46级CET外语大学词汇
  5. Telnet入侵Windows2000
  6. 【RAC】rac环境下的数据库备份与还原
  7. sql server快捷键添加
  8. day 07 预科
  9. PostgreSQL分区表实现——pg_pathman安装、配置
  10. Python入门篇-解析式、生成器