LeetCode 747. 至少是其他数字两倍的最大数(Java语言)
2019-03-07 11:37
316 查看
版权声明:版权声明:本文为博主原创文章,转载请注明出处! https://blog.csdn.net/weixin_40589381/article/details/88293701
在一个给定的数组nums中,总是存在一个最大元素 。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
示例 1:
输入: nums = [3, 6, 1, 0]
输出: 1
解释: 6是最大的整数, 对于数组中的其他整数,
6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
示例 2:
输入: nums = [1, 2, 3, 4]
输出: -1
解释: 4没有超过3的两倍大, 所以我们返回 -1.
提示:
nums 的长度范围在[1, 50].
每个 nums[i] 的整数范围在 [0, 99].
第一种解法:遍历数组,找出数组的最大数,同时判断此最大数有没有至少是其他数的两倍
[code]public int dominantIndex(int[] nums){ int big = -1; int s=-1;//标志符合至少是其他数的两倍的索引 int b=-1;//标志数组最大数的索引 for (int i=0;i<nums.length;i++){ if(nums[i]>big){ b=i; if(big>nums[i]/2){ big=nums[i]; continue;//不符合至少两倍数,则跳出本次循环 } else{ big=nums[i]; s=i; } } if(nums[i]<big){ if(nums[i]>big/2){ s=-1; continue; } } if(nums[i]==big)continue; } if(s!=b){//如果符合至少两倍数的索引与最大数的不一致,则返回-1 return -1; } return s; }
第二种解法:这个个人感觉是最优的解法,找出数组中第一大的数max1和第二大的数max2,然后两者比较,如果最大的数是第二大的数的两倍,那么其他数也符合条件
[code]public int dominantIndex(int[] nums) { int max1=0; int max2=0; int s=-1;//记录最大数的索引 if(nums.length==1) return 0; for(int i=0;i<nums.length;i++){ if(nums[i] > max1){ max2 = max1; max1 = nums[i]; s = i; }else if(nums[i] > max2){ max2 = nums[i]; } } if(max2>max1/2) return -1; return s; }
相关文章推荐
- [Leetcode] 747. 至少是其他数字两倍的最大数 java
- 747. leetcode至少是其他数字两倍的最大数---java代码
- [LeetCode] Largest Number At Least Twice of Others 至少是其他数字两倍的最大数
- 数组和字符串//至少是其他数字两倍的最大数
- leetcode747. 至少是其他数字两倍的最大数
- Java--消除重复数字后的最大值
- Leetcode 141. Linked List CycleJAVA语言
- 程序员面试金典——解题总结: 9.17中等难题 17.4编写一个方法,找出两个数字中最大的那一个。不得使用if-else或其他比较运算符。
- LeetCode-198. House Robber (JAVA)寻找数组不相邻组合最大值DP
- java语言求最小公倍数和最大公约数的三种算法
- 数数字(JAVA语言)
- leetcode-java.T005_LongestPalindromicSubstringTotal 给定一个字符串S,找出它的最大的回文子串
- LeetCode-445. Add Two Numbers II (JAVA)链表数字加法
- LeetCode--Largest Number(最大数字)Python
- leetcode解题之 11. Container With Most Water Java版(最大盛水容积)
- 【蓝桥杯】2017年第八届蓝桥杯省赛真题-Java语言B组-6-最大公共子串
- 堆排序实现百万级数据取若干数量的最大数字(java)
- 分治法 求最大元和最小元 Java语言
- Java实现从一个数字中删除给定个数的数得到一个最大整数
- Leetcode 263. Ugly Number JAVA语言