力扣:至少是其他数字两倍的最大数(详解)

news2024/10/6 9:21:22

前言:本期是关于至少是其他数字两倍的最大数的详解,内容包括四大模块:题目,代码实现,大致思路,代码解读,今天你c了吗?

题目: 

 

给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。

请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。

示例 1:

输入:nums = [3,6,1,0]
输出:1
解释:6 是最大的整数,对于数组中的其他整数,6 至少是数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。
示例 2:

输入:nums = [1,2,3,4]
输出:-1
解释:4 没有超过 3 的两倍大,所以返回 -1 。
示例 3:

输入:nums = [1]
输出:0
解释:因为不存在其他数字,所以认为现有数字 1 至少是其他数字的两倍。
 

代码实现:

int dominantIndex(int* nums, int numsSize)
{
	int max;
	int second;
	int index;
	if (nums[0] > nums[1])
	{
		max = nums[0];
		index = 0;
		second = nums[1];
	}
	else
	{
		max = nums[1];
		index = 1;
		second = nums[0];
	}
	int i = 0;
	for (i = 2; i < numsSize; i++)
	{
		if (nums[i] > max)
		{
			second = max;
			max = nums[i];
			index = i;
		}
		else if (nums[i] > second)
		{
			second = nums[i];
		}
	}
	if (numsSize == 1)
	{
		return 0;
	}
	else if (max >= 2 * second)
	{
		return index;
	}
	else
	{
		return -1;
	}

}

大致思路: 

1. 在数组中的前两个元素之间初设最大值max和次小值second

    注意:max,second不可随意初始化成0,因为你初始化的那个值很可能就是最大值

               比如数组中的最大值可能是-1,我们将max初始化为0,那就错了

               故而我们使用数组中的值来初定max和second

2. 从第三个元素开始遍历数组:

     若是大于max,则更新max和second的内容

     此元素的值成为最大值,原本max中存的值成为次小值

     若是小于max,需要判断是否大于second,若是大于则更新second的内容

代码解读:

part 1:初定max,second

    int max;
	int second;
	int index;
	if (nums[0] > nums[1])
	{
		max = nums[0];
		index = 0;
		second = nums[1];
	}
	else
	{
		max = nums[1];
		index = 1;
		second = nums[0];
	}

part 2:找到数组中确定的最大值max 

    int i = 0;
	for (i = 2; i < numsSize; i++)
	{
		if (nums[i] > max)
		{
			second = max;
			max = nums[i];
			index = i;
		}
		else if (nums[i] > second)
		{
			second = nums[i];
		}
	}

从第三个元素开始遍历数组,找出数组中最终的max和second

part 3:根据要求打印 

    if (numsSize == 1)
	{
		return 0;
	}
	else if (max >= 2 * second)
	{
		return index;
	}
	else
	{
		return -1;
	}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/194738.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何对企业网站进行优化?(网站怎样优化seo)

探析企业网站优化怎么做才有效果&#xff1f; 在互联网营销时代&#xff0c;搜索引擎一直是推广流量的重要途径&#xff0c;越来越多的企业已经涉足搜索引擎优化行业&#xff0c;众多企业做网站优化是为了网站提升企业知名度和流量&#xff0c;争取以更低成本做更高转化、更快…

公务机包机|公务飞行包机攻略解答

公务机是一种在行政事务和商业活动中用作交通工具的飞行&#xff0c;也被称为行政机或商用飞机。公务机包机程序简单&#xff0c;不仅可以享受不一致的尊崇服务&#xff0c;而且可以避免巨额投资和日常管理的繁琐事务。    公务机是指在行政事务和商业活动中用作交通工具的飞…

最重要的定理:隐函数定理

多元函数变限积分求导问题

整理网上拷贝的文档格式-去掉代码前的序号

1、整理换行 第一步&#xff0c;将所有的纯换行的地方替换为空&#xff08;也就是删除他们&#xff09;&#xff0c;我这里是将选择题的各选项之间的换行替换为两个制表符&#xff08;两个Tab键&#xff09;&#xff1a; 执行这一步的时候注意将通配符的选项勾选上&#xff0c…

利用Python计算离散点构成曲线的曲率

目录一、实现原理1.1、计算点到直线的距离——海伦公式参考链接计算曲率就是为了求这段弧长对应的半径&#xff0c;也就是说&#xff0c;我们把曲线看成圆的弧长就行&#xff0c;那么问题就简单了。一、实现原理 1.1、计算点到直线的距离——海伦公式 如下图所示&#xff0c;…

【MyBatis】第四篇:浅聊resultType

前提 学生对象不会变如下&#xff1a; package com.xzd.domain;public class Student {Integer sid;String sname;int sage;String ssex;public Student() {}public Student(Integer sid, String sname, int sage, String ssex) {this.sid sid;this.sname sname;this.sage …

如何把图片转换成word文档?说一个转换途径

我们时常需要将图片上的文字资料归纳整理下来&#xff0c;转成Word文档的形式会方便很多&#xff0c;下面给大家介绍一下如何把图片转换成word文档&#xff0c;有多种方式&#xff0c;咱们自由选择。方式一、直接添加图片转换成Word这种方式非常简单&#xff0c;我们打开Word或…

校园IP网络广播系统方案

北京恒星科通发布于2023-2-2 一、校园IP网络广播系统概述 校园I P网络广播系统&#xff0c;是构建在当前广泛使用的TCP/IP通讯网络基础上的新一代交互式公共广播系统。系统采用分布式服务器架构&#xff0c;容量可以根据需要不断扩展&#xff0c;可以在局域网或者广域网内运行…

21-死锁的解除及银行家算法

预防死锁 不允许死锁的发生 静态策略:预防思索 破坏互斥条件 如果能把互斥使用的资源改造为允许共享使用,则系统不会进入死锁状态,比如SPOOLing技术,操作系统可以采用SPOOLing技术把独占设备在逻辑上改造为共享设备。 使用了SPOOLing技术后,在各进程看来,自己对打印机资源的…

2023年java面试常考知识点(12题)

一. 接⼝与抽象类区别 1、⼀个类声明可否既是abstract的,⼜是final的? 不能,这两个修式符⽭盾&#xff08;abstract就是要被继承&#xff09; 2、抽象类不⼀定包含抽象⽅法 3、有抽象⽅法,则⼀定是抽象类 4、抽象类不能被实例化&#xff0c;⼀般⽤作基类使⽤&#xff1b; a. 类…

数学建模比赛超全整理【数学建模有哪些比赛?】【全网最全数模整理】

文章目录一.全国大学生数学建模竞赛二.美国大学生数学建模竞赛三、中国研究生数学建模竞赛四、认证杯&#xff08;小美赛&#xff09;五、华数杯&#xff08;国内赛和国际赛&#xff09;六.MathorCup高校数学建模挑战赛七.全国大学生电工数学建模竞赛八.深圳杯九.数维杯大学生数…

用vue3+vant4开发的简单小众电商购物项目模板(纯前端)

简单录制如下 主要练习下界面和交互&#xff0c;顺带简单了解下 vue3 语法。 简单截图如下 首页 首页-猜你喜欢 分类 购物车 个人页面 部分文件代码 底部导航文件 <template><div class"nav" id"myNav"><divclass"nav-item-box"v…

Oracle VM VirtualBox  VMware下载使用教程

一、Oracle VM VirtualBox 使用教程官网&#xff08;https://www.virtualbox.org/wiki/Downloads&#xff09;下载安装包&#xff0c;此处选择下载的为windows版本点击安装包&#xff0c;进行安装新建虚拟机name&#xff1a;自定义虚拟机名称Folder&#xff1a;安装文件夹ISO I…

postgres源码解析48 Btree节点分裂点确认流程--1

由于Btree数据结构特性&#xff0c;当节点达到上溢条件时会发生分裂&#xff0c;进而保持Btree的原本特性 B树 详解及C语言简单实现&#xff0c;在之前的postgres 源码解析 45 btree分裂流程_bt_split已对分裂流程进行讲解&#xff0c;接下来将从源码角度学习postgres btree分裂…

揭密Realtek 致命漏洞:超过 1 亿次尝试破解物联网设备

国际知名白帽黑客、东方联盟创始人郭盛华警告说&#xff0c;自 2022 年 8 月开始&#xff0c;利用 Realtek Jungle SDK 中现已修补的关键远程代码执行漏洞进行攻击的攻击企图激增。 据郭盛华透露&#xff0c;截至 2022 年 12 月&#xff0c;正在进行的活动据称已记录了 1.34 亿…

前端sdk - 埋点

目录前端sdk 之小满np安装01 搭建环境01-项目目录01-2 依赖包01-3 rollup.config.js01-4 tsconfig.json 28行01-5 package.json01-6 src / core / index.ts01-7打包效果02 初始化 Tracher02-1 core / index.ts02-2 types/ index.ts03 重写history事件 监听history | hash 路由等…

【Spring Cloud Alibaba】(一)微服务介绍 及 Nacos注册中心实战

文章目录前言I、微服务与Spring CloudII、Nacos 注册中心III、Spring Cloud Alibaba Nacos 实战1、新建父工程2、新建demo-a 服务3、新建 demo-b 服务4、实现服务调用&#xff1a;传统方式5、实现服务调用&#xff1a;NacosRibbon方式总结最后前言 Spring Cloud Alibaba微服务…

JS 设计模式(2)-- 复习

目录 策列模式 代理模式 观察者模式 发布订阅模式 模块模式 策列模式 策略模式定义了一系列算法&#xff0c;并将每个算法封装起来&#xff0c;使他们可以相互替换&#xff0c;且算法的变化不会影响使用算法的用户&#xff0c;策列模式属于对象行为模式&#xff0c;它通过…

Java面试题(自用-持续更新)

本文目录如下&#xff1a;Java面试题一、基础知识JDK 和 JRE 有什么区别&#xff1f;String 属于基础的数据类型吗&#xff1f;基础类型有哪些?String str"xqz"与 String strnew String("xqz")一样吗&#xff1f;java 中操作字符串都有哪些类&#xff1f;…

王佩丰 Excel 基础24讲 | 学习笔记(全)

第一讲&#xff1a;认识Excel 1.简介 excel能做什么&#xff1f; 数据存储 → 数据处理 → 数据分析 → 数据呈现 excel界面 补充&#xff1a;Excel数据分析步骤 ①提出问题&#xff1a;明确自己需要通过数据分析解决什么问题 ②理解数据&#xff1a;理解数据各个字段的含义…