mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-06 17:44:10 +08:00
Add solution 747
This commit is contained in:
@ -0,0 +1,20 @@
|
||||
package leetcode
|
||||
|
||||
func dominantIndex(nums []int) int {
|
||||
maxNum, flag, index := 0, false, 0
|
||||
for i, v := range nums {
|
||||
if v > maxNum {
|
||||
maxNum = v
|
||||
index = i
|
||||
}
|
||||
}
|
||||
for _, v := range nums {
|
||||
if v != maxNum && 2*v > maxNum {
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
if flag {
|
||||
return -1
|
||||
}
|
||||
return index
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question747 struct {
|
||||
para747
|
||||
ans747
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
// one 代表第一个参数
|
||||
type para747 struct {
|
||||
nums []int
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
// one 代表第一个答案
|
||||
type ans747 struct {
|
||||
one int
|
||||
}
|
||||
|
||||
func Test_Problem747(t *testing.T) {
|
||||
|
||||
qs := []question747{
|
||||
|
||||
{
|
||||
para747{[]int{3, 6, 1, 0}},
|
||||
ans747{1},
|
||||
},
|
||||
|
||||
{
|
||||
para747{[]int{1, 2, 3, 4}},
|
||||
ans747{-1},
|
||||
},
|
||||
|
||||
{
|
||||
para747{[]int{1}},
|
||||
ans747{0},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 747------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans747, q.para747
|
||||
fmt.Printf("【input】:%v 【output】:%v\n", p, dominantIndex(p.nums))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
# [747. Largest Number At Least Twice of Others](https://leetcode.com/problems/largest-number-at-least-twice-of-others/)
|
||||
|
||||
|
||||
## 题目
|
||||
|
||||
You are given an integer array `nums` where the largest integer is **unique**.
|
||||
|
||||
Determine 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, or return* `-1` *otherwise*.
|
||||
|
||||
**Example 1:**
|
||||
|
||||
```
|
||||
Input: nums = [3,6,1,0]
|
||||
Output: 1
|
||||
Explanation: 6 is the largest integer.
|
||||
For every other number in the array x, 6 is at least 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: -1
|
||||
Explanation: 4 is less than twice the value of 3, so we return -1.
|
||||
```
|
||||
|
||||
**Example 3:**
|
||||
|
||||
```
|
||||
Input: nums = [1]
|
||||
Output: 0
|
||||
Explanation: 1 is trivially at least twice the value as any other number because there are no other numbers.
|
||||
|
||||
```
|
||||
|
||||
**Constraints:**
|
||||
|
||||
- `1 <= nums.length <= 50`
|
||||
- `0 <= nums[i] <= 100`
|
||||
- The largest element in `nums` is unique.
|
||||
|
||||
## 题目大意
|
||||
|
||||
给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。
|
||||
|
||||
## 解题思路
|
||||
|
||||
- 简单题。先扫描一遍找到最大值和下标。再扫描一遍检查最大值是否是其他数字的两倍。
|
||||
|
||||
## 代码
|
||||
|
||||
```go
|
||||
package leetcode
|
||||
|
||||
func dominantIndex(nums []int) int {
|
||||
maxNum, flag, index := 0, false, 0
|
||||
for i, v := range nums {
|
||||
if v > maxNum {
|
||||
maxNum = v
|
||||
index = i
|
||||
}
|
||||
}
|
||||
for _, v := range nums {
|
||||
if v != maxNum && 2*v > maxNum {
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
if flag {
|
||||
return -1
|
||||
}
|
||||
return index
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user