From f73081084c57f9e7df3bb25d389ade666d5eed29 Mon Sep 17 00:00:00 2001 From: Shuo Date: Tue, 7 Apr 2020 12:53:53 +0800 Subject: [PATCH] A: Find Lucky Integer in an Array --- .../find_lucky_integer_in_an_array.go | 15 +++++++ .../find_lucky_integer_in_an_array_test.go | 39 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array.go create mode 100644 problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array_test.go diff --git a/problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array.go b/problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array.go new file mode 100644 index 000000000..26e83d6dd --- /dev/null +++ b/problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array.go @@ -0,0 +1,15 @@ +package problem1394 + +func findLucky(arr []int) int { + m := make(map[int]int) + for _, v := range arr { + m[v]++ + } + ans, max := -1, 0 + for k, v := range m { + if k > max && k == v { + ans, max = k, v + } + } + return ans +} diff --git a/problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array_test.go b/problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array_test.go new file mode 100644 index 000000000..bf75d1b17 --- /dev/null +++ b/problems/find-lucky-integer-in-an-array/find_lucky_integer_in_an_array_test.go @@ -0,0 +1,39 @@ +package problem1394 + +import "testing" + +type testType struct { + in []int + want int +} + +func TestFindLucky(t *testing.T) { + tests := [...]testType{ + { + in: []int{2, 2, 3, 4}, + want: 2, + }, + { + in: []int{1, 2, 2, 3, 3, 3}, + want: 3, + }, + { + in: []int{2, 2, 2, 3, 3}, + want: -1, + }, + { + in: []int{5}, + want: -1, + }, + { + in: []int{7, 7, 7, 7, 7, 7, 7}, + want: 7, + }, + } + for _, tt := range tests { + got := findLucky(tt.in) + if got != tt.want { + t.Fatalf("in: %v, got: %v, want: %v", tt.in, got, tt.want) + } + } +}