当前位置: 首页 > news >正文

Lc33---- 414. 第三大的数(java版)---排序(去重/复制到新数组)

1.题目描述
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

示例 1:

输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。
示例 2:

输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:

输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。

2.思路
(1)去重思路
循环确实是从1开始的。这是因为该循环用于去重,通过比较当前元素与前一个元素是否相同来实现。这种方法会导致遗漏数组中的第一个元素。所以,为了确保第一个元素也被考虑到,循环从索引1开始。

在这段代码中,通过将不同的元素移到数组的前面来去除重复。因此,数组的前面部分将存储去重后的元素。count 记录的是去重后的数组的长度,所以在处理去重时,count 的起始值为1,而不是0。

虽然这种方法会导致遗漏第一个元素,但由于排序后数组的第一个元素肯定是最小的,因此不会影响第三大的数的计算。
(2)在这个循环中,我们不需要遍历数组中的第一个元素(即 nums[0]),因为它没有前一个元素。我们从数组的第二个元素开始(即 nums[1])进行比较,以确保每个元素都能被正确地检查和处理

3.代码实现

class Solution {public int thirdMax(int[] nums) {Arrays.sort(nums);int cnt=1;//新数组的起始长度//数组索引从0开始,终止条件是nums.length-1for(int i=1;i<=nums.length-1;i++){  //如果当前元素和前一个元素不一样,则将旧数组的该元素,添加到新数组里面//如果当前元素和前一个元素一样,则不处理。if(nums[i]!=nums[i-1]){nums[cnt]=nums[i];cnt++;}}if(cnt<3){return nums[cnt-1];//newNUms[1,2],cnt的值是2//所以返回当前最大的元素 ,也就是cnt-1=1,就是newNums[1],数组索引从0开始,所以最后一个数的索引是cnt-1}///否则,cnt>=3return nums[cnt-3];//设去重后的数组 newNums 为 [1, 2, 3, 4, 5, 6],那么 count 的值为6。第三大的数就是数组倒数第三个元素,即 newNums[6 - 3],也就是 newNums[3],其值为3,正是我们期望的结果。}
}

相关文章:

Lc33---- 414. 第三大的数(java版)---排序(去重/复制到新数组)

1.题目描述 给你一个非空数组&#xff0c;返回此数组中 第三大的数 。如果不存在&#xff0c;则返回数组中最大的数。 示例 1&#xff1a; 输入&#xff1a;[3, 2, 1] 输出&#xff1a;1 解释&#xff1a;第三大的数是 1 。 示例 2&#xff1a; 输入&#xff1a;[1, 2] 输出…...

OpenAI新模型GPT-4o“炸裂登场” 响应速度堪比真人 关键还免费!

GPT-4o模型基于来自互联网的大量数据进行训练&#xff0c;更擅长处理文本和音频&#xff0c;并且支持50种语言。更值得一提的是&#xff0c;GPT-4o最快可以在232毫秒的时间内响应音频输入&#xff0c;几乎达到了人类的响应水平。 GPT-4o有多“炸裂”&#xff1f;核心能力有三 G…...

C语言收尾 预处理相关知识

一. 预处理详解 1.1 预定义符号 FILE //进行编译的源文件LINE //文件当前的行号DATE //文件被编译的日期TIME //文件被编译的时间FUNCTION //文件当前所在的函数STDC //如果编译器遵循ANSI C标准&#xff0c;其值为1&#xff0c;否则未定义 这些预定义符号都是语言内置的 我们…...

Python代码:二、多行输出

1、题目 将字符串 Hello World! 存储到变量str1中&#xff0c;再将字符串 Hello Nowcoder! 存储到变量str2中&#xff0c;再使用print语句将其打印出来&#xff08;一行一个变量&#xff09;。 2、代码 import sys str1 Hello World! str2 Hello Nowcoder! print (str1,st…...

前端内嵌iframe网页单点登录的三种方式

背景&#xff1a;我们开发中会遇到让内嵌的iframe进行登录&#xff0c;但是有希望是单点登录&#xff0c;不想多次登录 目录 方法一&#xff1a;共享sessionStorage或localStorage 方法二&#xff1a;设置内嵌iframe的url参数 方法三&#xff1a;通过父子页面通信postMessage…...

Git篇——Git提交指定文件编码

背景&#xff1a;项目中有些老工程的代码编码格式不统一&#xff0c;可以通过以下方式强行指定提交时的文件编码&#xff0c;可以将所有上传到git的文件的编码格式统一。 在Git中&#xff0c;可以通过设置.gitattributes文件来指定文件编码。在项目根目录下创建一个名为.gitat…...

在云服务器上运行StyleGAN3生成伪样本

首先是传入数据&#xff0c;这里我们不做赘述。 对于数据格式的裁剪&#xff0c;可以通过以下代码进行&#xff1a; from glob import glob from PIL import Image import os from tqdm import tqdm from tqdm.std import trangeimg_path glob(r"C:\Users\Administrato…...

学习Nginx(三):命令与信号

命令及选项 1. 显示帮助信息&#xff1a; [rootRockyLinux9 ~]# nginx -h nginx version: nginx/1.26.0 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-g directives]选项:-?,-h : 显示帮助信息-v : 显示版本信息-V …...

软信天成:业务流程管理驱动企业数字化转型

近日&#xff0c;在国家发展改革委办公厅、国家数据局综合司联合印发的《数字经济2024年工作要点》中&#xff0c;明确强调了本年度大力推进重点领域数字化转型&#xff0c;营造数字化转型生态的战略举措&#xff0c;标志着国家对于企业数字化转型的高度重视与积极倡导。 企业…...

「Python绘图」绘制同心圆

python 绘制同心圆 一、预期结果 二、核心代码 import turtle print("开始绘制同心圆") # 创建Turtle对象 pen turtle.Turtle() pen.shape("turtle") # 移动画笔到居中位置 pen.pensize(2) #设置外花边的大小 # 设置填充颜色 pen.fillcolor("green&…...

Unity基础

概述 基础知识 3D教学 数学计算公共类Mathf 练习: 三角函数 练习&#xff1a; Unity中的坐标系 Vector3向量 向量模长和单位向量 向量加减乘除 练习&#xff1a; 向量点乘 向量叉乘 向量插值运算 Quaternion四元数 为何要使用四元数 四元数是什么 四元数常用方法 四元数计算 练…...

OpenHarmony 实战开发——ArkUI canvas组件

canvas 是 ArkUI 开发框架里的画布组件&#xff0c;常用于自定义绘制图形。因为其轻量、灵活、高效等优点&#xff0c;被广泛应用于 UI 界面开发中。本期&#xff0c;我们将为大家介绍 ArkUI 开发框架中 canvas 组件的使用。 一、canvas 介绍 1.1 什么是 canvas&#xff1f; …...

js积累一(ipv4正则校验+弹窗方式)

1. ipv4地址&#xff0c;点分十进制的校验 var regexIP /^((25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))\.){3}(25[0-5]|2[0-4]\d|((1\d{2})|([1-9]?\d)))$/; if(strRegex.test(ip)) //true: 通过 2. 三种弹窗方式: alert()&#xff1b;confirm()&#xff1b; prompt() 1&a…...

【Android】重写onClick方法时,显示Method does not override method from its supperclass

问题 重写onClick方法时&#xff0c;显示Method does not override method from its supperclass 解决 在类上加implements View.OnClickListener...

LeetCode 第397场周赛个人题解

目录 100296. 两个字符串的排列差 原题链接 思路分析 AC代码 100274. 从魔法师身上吸取的最大能量 原题链接 思路分析 AC代码 100281. 矩阵中的最大得分 原题链接 思路分析 AC代码 100312. 找出分数最低的排列 原题链接 思路分析 AC代码 100296. 两个字符串的排…...

Mysql数据库二进制日志导致磁盘满了处理过程

数据库的二进制日志是数据库管理系统&#xff08;DBMS&#xff09;用来记录所有对数据库进行修改的操作的记录。这种日志对于数据库的备份、恢复、复制和审计等操作至关重要。 以MySQL数据库为例&#xff0c;二进制日志&#xff08;Binary Log&#xff09;记录了所有更改数据的…...

前端面试题日常练-day07 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末。 1. 在 JavaScript 中&#xff0c;以下哪个方法可以用于从数组的末尾添加一个或多个元素&#xff1f; A) push() B) pop() C) shift() D) unshift()2. 下列哪个 HTML 标签用于定义表格的表头&#…...

Uniapp H5开发常见问题解析

引言 在移动应用开发领域&#xff0c;Uniapp已经成为一个备受瞩目的技术框架&#xff0c;其跨平台能力和高效开发特性使得开发者能够更加便捷地构建出功能丰富、性能优越的应用程序。特别是在H5开发中&#xff0c;Uniapp的应用场景日益广泛&#xff0c;然而&#xff0c;随之而…...

QT状态机4-使用并行状态来避免组合爆炸

#include "MainWindow.h" #include "ui_MainWindow.h"MainWindow::MainWindow(QWidget *parent):...

MemoryModule - 应用编程细节

文章目录 MemoryModule - 应用编程细节概述笔记实验环境升级MemoryModule&#xff0c;在上下文中加入DLL在内存载入前的信息MemoryModule.hMemoryModule.cpp实现接口MemoryGetPayload() 整理 - 在内存载入的DLL中&#xff0c;取得资源表中的信息&#xff0c;取得载入前的DLL内容…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...