前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 0747. 至少是其他数字两倍的最大数

LeetCode 0747. 至少是其他数字两倍的最大数

原创
作者头像
Yano_nankai
修改2021-02-26 17:38:33
2580
修改2021-02-26 17:38:33
举报
文章被收录于专栏:二进制文集

题目描述

题目链接

在一个给定的数组 nums 中,总是存在一个最大元素 。

查找数组中的最大元素是否至少是数组中每个其他数字的两倍。

如果是,则返回最大元素的索引,否则返回-1。

示例 1:

代码语言:txt
复制
输入:nums = [3, 6, 1, 0]
输出:1
解释:6 是最大的整数,对于数组中的其他整数,
6 大于数组中其他元素的两倍。6 的索引是 1, 所以我们返回 1.

示例 2:

代码语言:txt
复制
输入:nums = [1, 2, 3, 4]
输出:-1
解释:4 没有超过 3 的两倍大,所以我们返回 -1.

解题思路

题目要找到「至少是其他数字两倍的最大数」,可以维护两个数,最大数和第二大的数,最终判断是否最大数>=第二大的数* 2 就可以了~

下面代码的 result 数组其实可以省略,维护两个数字即可,这里就不优化了。

代码

代码语言:txt
复制
class Solution {
	public int minCostClimbingStairs(int[] cost) {
		int n = cost.length;
		int[] result = new int[n];
		result[0] = cost[0];
		result[1] = cost[1];
		
		for(int i = 2; i < n; i++) {
			result[i] = Math.min(result[i-1], result[i-2]) + cost[i];
		}
		return Math.min(result[n - 1], result[n - 2]);
	}
}

复杂度分析

  • 时间复杂度:O(n)
  • 空间复杂度:O(n)

GitHub LeetCode 项目

项目 GitHub LeetCode 全解,欢迎大家 star、fork、merge,共同打造最全 LeetCode 题解!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 解题思路
  • 代码
  • 复杂度分析
  • GitHub LeetCode 项目
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档