博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-747-Largest Number At Least Twice of Others(求vector的最大值和次大值)
阅读量:6498 次
发布时间:2019-06-24

本文共 2184 字,大约阅读时间需要 7 分钟。

题目描述:

In a given integer array nums, there is always exactly one largest element.

Find whether the largest element in the array is at least twice as much as every other number in the array.

If it is, return the index of the largest element, otherwise return -1.

Example 1:

Input: nums = [3, 6, 1, 0]Output: 1Explanation: 6 is the largest integer, and for every other number in the array x,6 is more than twice as big as x.  The index of value 6 is 1, so we return 1.

 

Example 2:

Input: nums = [1, 2, 3, 4]Output: -1Explanation: 4 isn't at least as big as twice the value of 3, so we return -1.

 

Note:

  1. nums will have a length in the range [1, 50].
  2. Every nums[i] will be an integer in the range [0, 99].

 

要完成的函数:

int dominantIndex(vector<int>& nums) 

 

说明:

给定一个vector,要求判断这个vector中的最大值是不是至少等于其他所有元素值的两倍,如果是的话,返回最大值的位置,如果不是,返回-1。

这道题其实相当容易,就是求vector的最大值和次大值,以及在求最大值的过程中记录一下最大值的位置。

我们考虑一下边界条件,只有一个元素和只有两个元素的情况,接着构造一般情况下的代码,如下:

   int dominantIndex(vector
& nums) { int s1=nums.size(); if(s1==1)//只有一个元素的边界条件 return 0; else if(s1==2)//只有两个元素的边界条件 { if(nums[0]>nums[1]) { if(nums[0]>=2*nums[1]) return 0; else return -1; } else { if(nums[1]>=2*nums[0]) return 1; else return -1; } } int max1,max2,i=2,index; if(nums[0]>=nums[1]) { max1=nums[0]; max2=nums[1]; index=0; } else { max1=nums[1]; max2=nums[0]; index=1; } while(i
=max1) { max2=max1; max1=nums[i]; index=i; } else { if(nums[i]>=max2) max2=nums[i]; } i++; } if(max1>=2*max2) return index; else return -1; }

上述代码虽然条件判断语句多了点,但大体上来看没有浪费很多时间,代码也不难理解。

实测9ms,beats 81.63% of cpp submissions。

转载于:https://www.cnblogs.com/chenjx85/p/9038865.html

你可能感兴趣的文章
Centos6.4最小化安装系统初始化脚本
查看>>
PaaS变厚了
查看>>
赛门铁克开启“容灾即服务”时代
查看>>
复杂度归纳--小结
查看>>
基础篇9-python基本数据结构-列表
查看>>
PHP学习笔记 第八讲 Mysql.简介和创建新的数据库
查看>>
【git】git入门之把自己的项目上传到github
查看>>
js获取鼠标位置
查看>>
[20180317]12c TABLE ACCESS BY INDEX ROWID BATCHED2.txt
查看>>
2016.8.11 DataTable合并及排除重复方法
查看>>
php 魔术方法 说明
查看>>
Mysql
查看>>
Pycharm开发环境设置与熟悉。
查看>>
前端面试官,我为什么讨厌你。
查看>>
航电1012 u Calculate e
查看>>
netty支持SSL,OpenSSL
查看>>
Yii简单的基于角色的访问控制
查看>>
POJ-1860-Currency Exchange
查看>>
跨越企业的“中等收入陷阱”
查看>>
Android 开发者必知的开发资源
查看>>