Тут надо вернуть "мажористый" элемент который встречается в слайсе больше чем в половине случаев. По условиям задачи во входных данных такой элемент обязан присутствовать.
| Go | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
| // [url]https://leetcode.com/studyplan/top-interview-150/[/url]
package topInterview
// majorityElement
//
// 169. Majority Element
// Given an array nums of size n, return the majority element.
//
// The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.
//
// Example 1:
//
// Input: nums = [3,2,3]
// Output: 3
// Example 2:
//
// Input: nums = [2,2,1,1,1,2,2]
// Output: 2
//
// Constraints:
//
// n == nums.length
// 1 <= n <= 5 * 104
// -109 <= nums[i] <= 109//
// majorityElement
//
// 169. Majority Element
// Given an array nums of size n, return the majority element.
//
// The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.
//
// Example 1:
//
// Input: nums = [3,2,3]
// Output: 3
// Example 2:
//
// Input: nums = [2,2,1,1,1,2,2]
// Output: 2
//
// Constraints:
//
// n == nums.length
// 1 <= n <= 5 * 104
// -109 <= nums[i] <= 109//
func majorityElement(nums []int) int {
// Инициировать переменную длинной слайса
lengthNums := len(nums)
// Инициировать карту, ключ - значение переменной в nums, значение - количество элемента в слайсе nums
elementsMap := make(map[int]int)
// Перебрать элементы в слайсе nums
for _, num := range nums {
// К значению ключа карты добавить единицу
elementsMap[num]++
}
// Перебрать карту
for k, v := range elementsMap {
// Если значение элемента больше половины длины слайса nums
if v > lengthNums/2 {
// вернуть ключ элемента
return k
}
}
// По условиям задачи мажорный элемент обязан быть
// и так как это код не должен быть достигнут тут паника
panic("no majority element found")
} |
|
| Go | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| func TestMajorityElement(t *testing.T) {
data := []struct {
nums []int
expected int
}{
{
[]int{1},
1,
},
{
[]int{3, 2, 3},
3,
},
{
[]int{2, 2, 1, 1, 1, 2, 2},
2,
},
}
for i, datum := range data {
result := majorityElement(datum.nums)
if result != datum.expected {
t.Errorf("unexpected result for test index %d expected [%+v] got [%+v]", i, datum.expected, result)
}
}
} |
|
https://github.com/alhaos/problems
|