[Leetcode] 414. 第三大的数

2023-10-27

题目描述:

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。

示例 1:

输入: [3, 2, 1]

输出: 1

解释: 第三大的数是 1.

示例 2:

输入: [1, 2]

输出: 2

解释: 第三大的数不存在, 所以返回最大的数 2 .

示例 3:

输入: [2, 2, 3, 1]

输出: 1

解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
存在两个值为2的数,它们都排第二。

解题思路:

 这个就不说了,很简单,一次找三个最大的数就行了,但是要注意分情况讨论的时候赋值的顺序,比如找到一个比最大的数还大的数,应该先把第二大max2的数给第三大的数max3,然后把第一大max1的数给第二大的数max2,最后再把新的最大的数赋值给最大的数max1,这个数值才不会覆盖丢失掉。

代码实现(Java语言):

class Solution {
    public int thirdMax(int[] nums) {
        long max1 = Long.MIN_VALUE;
        long max2 = Long.MIN_VALUE;
        long max3 = Long.MIN_VALUE;
        for(int i = 0; i < nums.length ; i++){
            if(nums[i]==max1 || nums[i] == max2 || nums[i]== max3)
                continue;
            if(nums[i] > max1){
                max3 = max2;
                max2 = max1;
                max1 = nums[i];
            }else if(nums[i] > max2){
                max3 = max2;
                max2 = nums[i];
            }else if(nums[i] > max3){
                max3 = nums[i];
            }
        }
        return max3==Long.MIN_VALUE?(int)max1:(int)max3;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Leetcode] 414. 第三大的数 的相关文章

  • 使用代理服务获取网页源代码测试

    import requests url 输入测试访问网址 headers User Agent Mozilla 5 0 Windows NT 10 0 Win64 x64 AppleWebKit 537 36 KHTML like Geck
  • 一键开启mysql的审计功能(无需安装插件)

    本文所使用数据库为mysql8 0 5 x版本的mysql上没试过一下步骤调用审计功能 无需下载任何插件 两行命令就能搞定 一 首先查看审计配置情况 show global variables like log timestamps sho
  • Spring Boot 笔记 - 注解(四)-- @SpringBootApplication

    Many Spring Boot developers like their apps to use auto configuration component scan and be able to define extra configu
  • 二、Java代码实现冒泡排序

    冒泡排序描述 关键 相邻的两个元素进行比较 依次比较数组中相邻两个元素大小 若 a j gt a j 1 则交换两个元素 两两都比较一遍 就是一轮冒泡 结果是一轮冒泡后最大的元素排到了最后 重复以上的步骤 直到整个数组有序就行了 冒泡的优化
  • 字典序算法详解

    一 字典序 字典序 就是按照字典中出现的先后顺序进行排序 1 单个字符 在计算机中 25个字母以及数字字符 字典排序如下 0 lt 1 lt 2 lt lt 9 lt a lt b lt lt z 比如在 python 中 0 lt 9 l
  • R语言初学者必备的10个实用函数

    R语言初学者必备的10个实用函数 R语言是一种流行的数据分析和统计建模工具 它提供了丰富的函数和库来处理和分析数据 对于初学者来说 掌握一些常用的实用函数将使他们更加高效地使用R语言进行数据处理和可视化 本文将介绍10个初学者必备的实用函数
  • CPU上下文切换

    文章目录 CPU上下文切换 什么是CPU上下文 进程上下文切换 特权模式切换 进程上下文切换与系统调用的区别 什么时候会切换进程上下文 线程上下文切换 中断上下文切换 监控上下文切换 vmstat pidstat 减少上下文切换 CPU上下
  • 生命在于学习——网站Getshell的方法

    PS 本篇文章仅用于学习笔记记录 不可用于其他用途 一 通用getshell方法 1 任意文件上传 1 注意编程语言 asp aspx php jsp 2 上传成功 但是访问直接下载文件 以文本展示 原因 文件没有被解析 3 上传成功 蚁剑
  • Burp Suite软件常用模块

    目录 1 Proxy 代理模块 2 Repeater模块 请求重放 3 Intruder模块 入侵自动化攻击 Intruder的4种攻击模式 1 Sniper模式 狙击手模式 2 Battering ram模式 攻城锤模式
  • 解决HC05蓝牙模块主从配对失败及AT模式设置方案

    解决HC05蓝牙模块主从配对失败及AT模式设置方案 原创文章 转载请注明 本文为电脑端配置 关于连线 关于串口调试工具 关于AT指令与蓝牙模块配对 关于测试验证 原创文章 转载请注明 本文为电脑端配置 最近在做一个开源的Vorpal Hex
  • HBase拆分策略

    转载自 http blog javachen com 2014 01 16 hbase region split policy html Region 概念 Region是表获取和分布的基本元素 由每个列族的一个Store组成 对象层级图如
  • 图像相关算法整理

    图像相关算法整理 1 HE算法 灰度直方图均衡算法 原理 将原始图像的灰度直方图从比较集中地某个灰度区间变成全部灰度范围内的均匀分布 步骤 1 遍历每一帧图像中的所有像素 记录每个灰度值出现的像素个数 2 统计每个灰度值占总像素的百分比 即
  • C语言占位符 格式占位符

    常用占位符 d i 代表整数 f 浮点数 s 字符串 c char p 指针 fL 长log e 科学计数法 g 小数或科学计数法 C语言中的格式占位符 a A 读入一个浮点值 仅C99有效 c 读入一个字符 d 读入十进制整数 i 读入十
  • Dev-C++使用教程,将你编写第一个C语言代码,实现输出Hello world

    安装好Dev C 软件 方法 步骤 1 打开安装好的Dev C 软件 初始界面如下 2 然后选择左上角文件 依次选择新建 gt 源代码 或者使用快捷键ctrl n 新建一个项目 就可以编写代码了 3 这里以输出Hello world 为例
  • java基础

    java命名规范 驼峰命名 见名知意 1 项目名全部小写 2 包名全部小写 以域名开头 3 类名首字母大写 如果类名由多个单词组成 每个单词的首字母都要大写 如 public class MyFirstClass 4 变量名 方法名首字母小
  • Learning to Navigate in Cities Without a Map 理解

    问题定义 在真实世界中进行无定位辅助 类似于人直觉长距离导航 输入为当前的视觉输入和目标地点 输出就是接下来应该怎么走 才能到达目的地 PS Navigation相比于planning来说更加粗糙 就是不需要具体到某个地点 而是一个大概的方
  • 06黑马数据结构笔记之栈的链式存储(简单)

    06黑马数据结构笔记之栈的链式存储 简单 1 思想 同样以挂钩的方式存储数据 但栈的链式存储与上一篇顺序存储有点区别 顺序存储在数组的尾部满足先进后出 所以每次对栈顶即数组尾部进行插入删除就可以满足 而栈的链式存储在链表的头满足先进后出 所
  • 中国矿业大学徐海学院最不常见的网络工程计算机毕业设计题目推荐50例

    之前有矿业大学徐海学院的童鞋在后台找我们 最近要准备毕业设计了 不会选题 希望可以帮忙给一些毕业设计题目 我整整花了一周把之前做的答辩通过的毕业设计成品进行整理 并精选一些容易实现且不会刷下来的题目列举下 网络工程毕业设计题目推荐1 10题

随机推荐

  • 错误记录:Invalid bound statement (not found)

    场景 在跟随某课程学习 SpringBoot 使用 Mybatis 时出现该错误 查阅各种博客 基本上都说是某个参数配置错误 但仔细检查后 并没有发现任何错误 解决方法 后面偶然间发现某位博主的文件存放路径与视频课程中不同 尝试将 xml
  • mybatis mysql 乐观锁_MyBatis实现乐观锁和悲观锁

    使用mysql做数据库 mybatis做orm的系统中 mybatis的乐观锁和悲观锁实际上就是mysql的乐观锁和悲观锁 实例中使用springboot整合mybatis 一并记录了 添加依赖 mysql mysql connector
  • Python突破某网游游戏JS加密限制,进行逆向解密,实现自动登录

    前言 大家早好 午好 晚好吖 欢迎光临本文章 今天来分享一下如何使用Python突破某网游游戏JS加密限制 进行逆向解密 实现自动登录 逆向目标 目标 某 7 网游登录 主页 aHR0cHM6Ly93d3cuMzcuY29tLw 接口 aH
  • vscode炫酷写代码插件Power Mode

    老规矩先看下效果 第一 扩展栏搜索 Power Mode 安装 安装完了别忘了重启 第二 文件 gt 首选项 gt 设置 gt 点击在setting json中编辑 powermode enabled true 是否开启 powermode
  • 爱线段树的好孩子[POI2014]KAR-Cards

    There are nn cards arranged on a table in a certain order Two integers are written on each card one per side the obverse
  • 解决cannot remove ''Operation not permitted

    删除某文件出现cannot remove XXX Operation not permitted lsattr 查看隐藏属性 root iZ2zehlrwqqmoadnuv8ts7Z home wwwroo wwwroot default
  • verilog中#是什么意思?#有什么作用?

    在使用verilog语言进行硬件描述时 你是否也经常用到 这个符号 那么你是否关心过这个符号到底是什么意思呢 它的作用是什么呢 1 可用作参数的传递 我们在进行verilog编程时经常会遇到如下一样的代码块 module study tes
  • -bash: zkServer.sh: command not found

    解决办法 zkServer sh start
  • qt 旋转子窗口 基于QGraphicsView 实现

    感谢 Qt 示例里边的 Box 示例 上图 不要被吓哭哦 X轴旋转 XY轴一起旋转 XYZ轴一起旋转 YZ轴一起旋转 Y轴旋转 XZ轴一起旋转 Z轴旋转 GIF的图有点略多 大家谅解谅解 上代码 http pan baidu com s 1
  • 学习注意力机制【1】

    目录 注意力机制介绍 自注意力机制三个步骤 1 计算注意力分数 Attention Scores 2 计算注意力权重 Attention Weights 3 得到加权和 Weighted Sum 自注意力机制Q K V 注意力机制介绍 At
  • 【JavaWeb】视频播放/下载

    如题 最近和同事联调接口时 收到反馈 ios低版本的视频播放不了 经网上查找其他大佬的解决方案修改 解决了该问题 话不多说 直接上代码 public static void downShowVideo HttpServletRequest
  • Python GUI案例之看图猜成语开发(第三篇)

    Python GUI案例之看图猜成语 第三篇 前言 看图猜成语小程序开发 第三篇 游戏闯关模式页面 Python GUI案例之看图猜成语开发 第一篇 Python GUI案例之看图猜成语开发 第二篇 Python GUI案例之看图猜成语开发
  • 中国“互联网+”大学生创新创业大赛“的实施方案及评审规则

    目录 前言 一 总体要求 一 指导思想 二 基本要求 三 总体目标 二 主要任务和措施 一 提升师资水平 1 增强教师创新创业教育的意识和能力 2 鼓励教师开设创新创业课程和指导创新创业实践 3 鼓励教师创新教学及考核方法 4 吸引校外师资
  • 开源跨平台跨硬件3D打印机

    1 HPGL 文档
  • DWD层 (用户行为日志)

    数仓搭建 DWD层 1 对用户行为数据解析 2 对业务数据采用维度模型重新建模 文章目录 日志解析思路 get json object函数使用 启动日志表 页面日志表 动作日志表 曝光日志表 错误日志表 DWD层用户行为数据加载脚本 日志解
  • Firefly-RK3399安装环境

    文章目录 Firefly RK3399 配置ubuntu环境以及安装Qt PCL OPENcv VTK 一 刷写ubuntu16 04系统 windows下 二 安装Qt Firefly RK3399 三 安装opencv pcl vtk
  • BUUCTF[knife]

    点击题目链接 发现是一句话木马 一句话木马 利用文件上传漏洞 往目标网站上上传木马 即可通过中国蚁剑或中国菜刀获取和控制整个网站主机目录 但很容易被网站防火墙waf拦截 想绕过waf需对木马进行变形 eval 函数 把括号内的字符串 须是合
  • ldconfig命令

    ldconfig命令 动态链接器的管理命令 依次搜索相关目录的动态链接库 lib so 创建动态链接装载程序 ld so或ld linux so 所需的链接和缓存文件 缓存文件 一般是 etc ld so cache 主要记录了动态链接库的
  • list元素

    列表元素 列表元素分为有序列表和无序列表 有序列表 ol order list 有序列表 li list item 列表元素 ol type 1 li 有序列表1 li li 有序列表2 li li 有序列表3 li ol 属性 type
  • [Leetcode] 414. 第三大的数

    题目描述 给定一个非空数组 返回此数组中第三大的数 如果不存在 则返回数组中最大的数 要求算法时间复杂度必须是O n 示例 1 输入 3 2 1 输出 1 解释 第三大的数是 1 示例 2 输入 1 2 输出 2 解释 第三大的数不存在 所