leetcode--下一个更大元素II--python
文章目录
- 题目
- 题目详情
- 示例
- 解题思路
- 思路
- 代码
- 运行结果
- 最佳方案
题目
题目详情
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。
示例
输入: [1,2,1]
输出: [2,-1,2]
解释: 第一个 1 的下一个更大的数是 2;
数字 2 找不到下一个更大的数;
第二个 1 的下一个最大的数需要循环搜索,结果也是 2。
解题思路
思路
- 首先想到用栈的方法,存住暂时还没有找到比它大的数的位置
- 那么一旦找到那个比它大的数,就把暂存的位置给pop出来
- 并且修改pop出来的位置的值,直到运行完成
- 最后没有pop出来的位置都是没有找到比它们更大的数
- 遍历栈里没有pop的元素,并且赋值为-1
代码
class Solution(object):def nextGreaterElements(self, nums):if not nums:return []lengths = len(nums)nums = nums * 2static = [0]for i in range(1,len(nums)): #遍历整个元素while static and nums[static[-1]] < nums[i]: #这是比较栈里是否有比当前数小的值nums[static[-1]] = nums[i] #找到后出栈并且赋值static.pop() static.append(i) #如果还是没有找到比当前数小的值那么久入栈for j in static:nums[j] = -1return nums[:lengths]if __name__ == "__main__": #测试obj = Solution()obj.nextGreaterElements([3,2,1,0,1]) #输出结果[-1,3,3,1,3]
运行结果
最佳方案
172ms
他首先是找出了最大的一个元素的位置,以最大元素的位置作为起点,往前面比较
class Solution:def nextGreaterElements(self, nums):if not nums:return numsstack = list()res = [-1]*len(nums)max_index = nums.index(max(nums)) #找到最大的元素的位置for i in range(max_index, max_index-len(nums), -1): #向前遍历,说明这些数都小于等于它while stack and stack[-1] <= nums[i]: stack.pop() if stack: res[i] = stack[-1]stack.append(nums[i])return res
相关文章:

我也说说Emacs吧(6) - Lisp速成
前面我们学习了基本操作,也走马观花地看了不少emacs lisp的代码。这一章我们做一个lisp的速成讲座。 Lisp的含义是表处理语言。它的代码组成结构都是用括号组成的表来表示的。Lisp中的功能,要么是以函数形式求值,要么本身就是一些特殊表。比如…
Matlab与数据结构 -- 如何获取给定目录中的文件
本图文详细介绍了Matlab中如何获取给定目录中文件的操作。

我的资源 分享区
把最近所做过一些程序都发上来。希望有用。已经上传了我的资源里面去了 第一期: 2007年制作的手机抽奖程序(没完善版本): As 2.0 版本手机抽奖程序:http://dl4.csdn.net/fd.php?i60728776657431&s52b0082a4017dde…

软件测试概述--基础篇
文章目录软件测试概述软件测试基本概念软件测试的目的和原则软件测试的分类测试用例软件测试概述 软件测试基本概念 软件缺陷:俗话说就是bug。即计算机软件或程序存在某种破坏正确运行能力的问题、错误或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不…
Matlab与线性代数 -- 矩阵的连接
本图文介绍了Matlab中矩阵连接的cat方法。

Load balancer does not have available server for client
最近在研究spring-cloud,研究zuul组件时发生下列错误: Caused by: com.netflix.client.ClientException: Load balancer does not have available server for client: zuul-server 解决办法就是在pom文件里添加 <dependency> <groupId>or…

js 抛出异常 throw
netsuite中,有的时候在流程上我们需要控制,停止现有流程那么可以采取一种比较无奈的办法。 由于一些特殊情况,我们可以编写详细的流程控制,如netsuite销售人员可以审批一些SO单据,但并不是所有的SO单据他都能自己审批。…

leetcode--长按键入--python
文章目录题目题目详情示例解题思路思路代码运行结果最佳方案题目 题目详情 你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的…

Visual Studio 2008 每日提示(十四)
本篇包括tip131-tip140 http://www.watch-life.net/visual-studio/visual-studio-2008-tip-day-14.html #131、你为什么会把窗体设置成为浮动(模式) 原文链接:Why you would want to make a Tool Window Floating 如果你想把工具窗体放在一个特定的区域&…

mysql双机热备的实现
转:http://blog.csdn.net/qq394829044/article/details/53203645 Mysql数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题。还好mysql数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份的数据库中…
Matlab编程与数据类型 -- 多维数组
本图文详细介绍了Matlab中的多维数组。

leetcode--最长连续递增序列--python
文章目录题目题目详情示例解题思路思路代码运行结果最佳方案题目 题目详情 给定一个未经排序的整数数组,找到最长且连续的的递增序列。 示例 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3。 尽管 [1,3,5,7] 也是升序的子序列, 但它不是…

va_start() va_end()函数应用
1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...);void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:1 #include <iostream>2 voidfun(inta, ) 3 { 4 int*temp &a; 5 temp; 6 for(i…

高考估分查分选志愿一键搞定_支付宝又操办了件人生大事
摘要: 可能比高考更考验心力的填报志愿,支付宝要帮你一键搞定。 支付宝今天正式上线集估分、查分、选志愿等众多服务于一体的高考后综合服务平台,陪伴高考学生的青春大考。考生在估分、查分后,还可以看到系统智能推荐供参考的合适…
LSGO:祝大家新年快乐!
2016年,团队做了很多事,有做成的,有没做成的,有正在推进的,有主动放弃的,有做的好的,有做的不好的,但总体上还是做了很多的事情。希望2017年能做更多一点的事情,好的做的…

VMware安装Centos7桌面版超详细图文过程
前提准备: VMware Workstation虚拟机 centos7.4 镜像(我下载的DVD版4.1G) 打开VM,点击文件->新建虚拟机 不是说你分给虚拟机2G内存,主机就少了2G的内存。比如说假设主机内存为8G,虚拟机关闭的时候&…

关于ASP.NET Web 部件连接的引入
创建用于 ASP.NET 2.0 应用程序的 Web 部件 您可以用两种方法创建 Web 部件。第一种方法涉及创建一个自定义的 Web 部件类,该类从 System.Web.UI.WebControls.WebParts 命名空间中定义的 WebPart 类继承。使用该方法时,将自定义的 Web 部件类打包到一个程…

hive2.1.1安装配置
2019独角兽企业重金招聘Python工程师标准>>> 一、Hive 运行模式 与 Hadoop 类似,Hive 也有 3 种运行模式: 1. 内嵌模式 将元数据保存在本地内嵌的 Derby 数据库中,这是使用 Hive 最简单的方式。但是这种方式缺点也比较明显&am…
高斯消元法对矩阵LU分解的影响
** 欢迎大家到Matlab与线性代数专栏中查看相关图文。 ** 本文详细介绍了Matlab进行lu分解操作时l不为三角形的原理。

Windows10下SSH远程拷贝文件
因为今天需要把服务器上面的东西备份一下,自己平时也在windows下面做的测试,所以用windows在服务器拷贝文件到本地。 首先需要下载一个工具pscp.exe 下载链接 然后再把它移动到这个目录下面就行了 WINR打开命令行 pscp -r 用户名ip:/root/flask E:/refl…
如何在Matlab中获取函数参数的数目?
本图文详细介绍了Matlab中获取函数参数数目的方法。

新站测试中欢迎访问
想买画的可以来看看哦 www.oneartone.com 转载于:https://www.cnblogs.com/liugod/archive/2009/01/04/1368082.html

FTP匿名访问修复方法
window2003 window2008

LeetCode Python题解(一)----双指针法
根据: github优秀创作者. 算法思想 1.双指针法 2.排序 3.贪心思想 4.二分查找 5.分冶 6.搜索 7.动态规划 8.数学 1. 双指针法: 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 1.1 有序数组的 Two Sum 题…

解密淘宝网的开源架构(转)
淘宝网,是一个在线商品数量突破一亿,日均成交额超过两亿元人民币,注册用户接近八千万的大型电子商务网站,是亚洲最大的购物网站。那么对于淘宝网这样大规模的一个网站,我猜想大家一定会非常关心整个网站都采用了什么样…

不上全站https的网站你们就等着被恶心死吧
2019独角兽企业重金招聘Python工程师标准>>> 测试脚本 #!/bin/sh wget \ --user-agent"Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19" \-r \-P a…
《C#精彩实例教程》小组阅读01 – MSDN是什么?
学习编程,特别是在Windows环境下的编程,当我们遇到问题时,最先想到的权威解答机构就是MSDN了。 什么是MSDN呢? MSDN – Microsoft Developer Network 是微软一个期刊产品,专门介绍各种编程技巧。同时它也是独立于Mic…

LeetCode Python题解(二)----排序
根据: githhub优秀创作者. 算法思想 1.双指针法 2.排序 3.贪心思想 4.二分查找 5.分冶 6.搜索 7.动态规划 8.数学 快速排序 用于求解 Kth Element 问题,也就是第 K 个元素的问题。 可以使用快速排序的 partition() 进行实现。需要先打乱数组ÿ…

人生快乐之道(组图)
举报 转载于:https://www.cnblogs.com/qqnnhhbb/articles/1373323.html

Codeforces Round #270
Codeforces Round #270 题目链接 A:我是筛了下素数。事实上偶数仅仅要输出4和x - 4,奇数输出9和x - 9就可以 B:贪心的策略,把时间排序后。取每k个的位置 C:贪心。每次遇到一个人尽量让他用字典序小的,假设不…