747. Largest Number At Least Twice of Others
leetcode easy
#array#csharp#dynamic-programming#easy#leetcode#math
Task
Вам дан целочисленный массив nums, в котором наибольшее целое число уникально. Определите, является ли наибольший элемент массива по крайней мере в два раза больше всех остальных чисел в массиве. Если да, то верните индекс самого большого элемента, в противном случае верните -1.
Пример:
Input: nums = [3,6,1,0]
Output: 1
C# solution
matched/originalpublic class Solution {
public int MinCostClimbingStairs(int[] cost) {
int n = cost.Length;
int[] dp = new int[n];
dp[0] = cost[0];
dp[1] = cost[1];
for (int i = 2; i < n; i++) {
dp[i] = cost[i] + Math.Min(dp[i - 1], dp[i - 2]);
}
return Math.Min(dp[n - 1], dp[n - 2]);
}
}C++ solution
auto-draft, review before submit#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int MinCostClimbingStairs(vector<int>& cost) {
int n = cost.size();
vector<int>& dp = new int[n];
dp[0] = cost[0];
dp[1] = cost[1];
for (int i = 2; i < n; i++) {
dp[i] = cost[i] + min(dp[i - 1], dp[i - 2]);
}
return min(dp[n - 1], dp[n - 2]);
}
}Java solution
matched/originalpublic class Solution {
public int minCostClimbingStairs(int[] cost) {
int n = cost.length;
int[] dp = new int[n];
dp[0] = cost[0];
dp[1] = cost[1];
for (int i = 2; i < n; i++) {
dp[i] = cost[i] + Math.min(dp[i - 1], dp[i - 2]);
}
return Math.min(dp[n - 1], dp[n - 2]);
}
}JavaScript solution
matched/originalvar minCostClimbingStairs = function(cost) {
let dp = cost.slice();
for (let i = 2; i < cost.length; i++) {
dp[i] += Math.min(dp[i - 1], dp[i - 2]);
}
return Math.min(dp[cost.length - 1], dp[cost.length - 2]);
};Go solution
matched/originalpackage main
func minCostClimbingStairs(cost []int) int {
n := len(cost)
dp := make([]int, n)
copy(dp, cost)
for i := 2; i < n; i++ {
dp[i] += min(dp[i-1], dp[i-2])
}
return min(dp[n-1], dp[n-2])
}
func min(a, b int) int {
if a < b {
return a
}
return b
}Explanation
Algorithm
Найдите максимальный элемент в массиве и его индекс.
Проверьте, является ли этот максимальный элемент по крайней мере в два раза больше всех остальных элементов массива.
Если условие выполняется, верните индекс максимального элемента, иначе верните -1.
😎