算法创作|至少是其他数字两倍的最大数

一道脑筋急转弯问题描述在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回 -1来源:力扣(LeetCode)示例:输入: nums = [3,6,1,0]输出: 1解释: 6是最大的整数,对于数组中其他整数,6大于其他元素的两倍。6的索引是1,所以我们返回1。解决方案如果要解决这个问题,我们先要读懂题目要求,首先题目说查找数组中的最大元素是否至少是数组中每个其他数字的两倍。重点注意这个其他,这说明我们找的元素只能和数组中除了最大整数以外的其他整数比较,如果我们的最大整数需要比其余所有元素的两倍大,那只需要找到数组中第二大的元素来进行比较就可以了。现在就有两种思路,第一种就是用排序方法来找出第二大的元素,这种方法需要注意比较的时候转化为整数的形式。首先我们用max函数找出数组中最大的整数,便于之后的比较。然后就是一个难点了,如果数组的长度小于2,那我们在取第二大元素的时候会报错,因为一共只有一个元素,所以先要进行一次数组长度判断,如果只有一个元素在里边,那么返回的就必然是0,如果不是这种特殊情况,再正常将最大整数和第二大整数进行比较。最后使用index()来获取下标。第一种方法代码如下:class Solution:def dominantIndex(self, nums: List[int]) -> int:num1 = max(nums)#数组中最大的那个整数if len(nums)<2:return 0else:if num1 >= (2 *  int(sorted(nums)[-2])):return nums.index(num1)else:return -1第二种方法就是将nums中的最大整数移除,再使用max()函数取出第二大元素进行比较,这种方法需要注意的是,移除后的数组不可以再进行取下标的操作,需要重新建立完整的列表。其余步骤和第一种相同。class Solution:def dominantIndex(self, nums: List[int]) -> int:num1 = max(nums)l = []for i in nums:l.append(i)if len(nums)<2:return 0else:nums.remove(num1)num2 = max(nums)if num1 >= (2 * int(num2)):return l.index(num1)#要使用未进行删除过的列表else:return -1结语本题的难点是读懂题目要求,一般这些题都有很多很特殊的测试用例,所以一定要读懂题目要求,再进行严谨的编写。主编:欧洋作者:窦钟灵、黄荟蓉、高钰婷

(0)

相关推荐

  • 【面试常考】位运算介绍与经典例题总结

    原创公众号:bigsai 原创不易,如果有收获请不要吝啬你的赞赞! 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 前言 位运算隐藏在编程语言的角落中,其神秘而又强大,暗藏内力,有些 ...

  • 算法创作 | 0到n-1中缺失的数字问题解决方法

    问题描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字.示例1:输入:[0,1,3 ...

  • 算法创作 | 将数字变成 0 的操作次数

    问题描述给你一个非负整数 num ,请你返回将它变成 0 所需要的步数.如果当前数字是偶数,你需要把它除以 2 :否则,减去 1 .为了方便理解题意,下面给出两个示例:示例 1:输入:num = 14 ...

  • 算法创作 | 两数相加问题解决方法

    问题描述给你两个非空的链表,表示两个非负的整数.它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字.请你将两个数相加,并以相同形式返回一个表示和的链表.你可以假设除了数字 0 之外,这 ...

  • 算法创作|两数之和返回数组下标问题解决方法

    问题描述给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值的那两个整数,并返回它们的数组下标.示例:输入:nums = [3,5,7,9],target = 14输出: ...

  • 美国90万人死于新冠?美研究所称全球疫情死亡人数是官方数据两倍

    东方网·纵相新闻记者 谢斯河 据俄媒RT5月6日报道,美国华盛顿大学健康指标与评估研究所(IHME)发表声明称,全球新冠疫情的真正死亡人数远高于官方数据,更接近于他们预估的死亡人数.据悉,IHME是最 ...

  • 维修摩托车时打开这个小口,寿命延长两倍

    有一种国三CG125换缸,使用寿命总是不长,工艺上是没有问题的,我自己的手艺有这个自信,后来怀疑是缸体质量有问题. 修车多年,嗜技术如命,找不到原因心中就像总有要刺,下决心找到他... 这种缸的活塞销 ...

  • 算法创作|神奇语言问题解决方法

    问题描述一位同学正在学习一门神奇的语言,其中的单词都是由小写英文字母组成,有些单词很长,而这位同学一直记不住,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现的最多来分辨单词,现在请帮助这位同学 ...

  • 算法创作|规则数列计算解决方法

    问题描述如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵.1 2 6 7 15 -3 5 8 14 -4 9 13 -10 12 -11 --(1)容易看出矩阵第二行 ...

  • 景气上行!利润增长近两倍!

    目前,全球疫情企稳,各国为推动经济复苏兴建基建,这使得机械行业需求增长.今天萝卜君就对一季度的机械行业做下业绩盘点. 2020年该行业业绩基数较低,而今年受国产替代.碳中和.新能源汽车高景气等原因带动 ...