20201105: find target

This commit is contained in:
VicRen
2020-11-05 14:27:32 +08:00
parent 3861deeed3
commit b916d0d874
2 changed files with 112 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
package main
import "fmt"
var nums = []int{1, 2, 7, 9, 13, 57, 36, 26, 55, 11, 6, 3, 89, 36, 75, 36, 76, 95, 98, 101, 320, 520, 85, 36, 62, 49, 96, 1}
func main() {
fmt.Println("num=", findTargetInNums(35, nums))
fmt.Println(findTargetInNums2(35, nums))
}
func findTargetInNums(target int, nums []int) []int {
for x, i := range nums {
if i >= target {
continue
}
for y, j := range nums {
if i == j {
continue
}
if i+j == target {
return []int{x, y}
}
}
}
return nil
}
func findTargetInNums2(target int, nums []int) []ret {
var r []ret
for x, i := range nums {
if i >= target {
continue
}
for y, j := range nums {
if i == j {
continue
}
if i+j == target {
r = append(r, ret{i, x})
r = append(r, ret{j, y})
return r
}
}
}
return r
}
type ret struct {
num int
subscript int
}
func (r ret) String() string {
return fmt.Sprintf("num=%d-sub=%d", r.num, r.subscript)
}

View File

@@ -0,0 +1,56 @@
package main
import (
"reflect"
"testing"
)
func Test_findTargetInNums(t *testing.T) {
type args struct {
target int
nums []int
}
tests := []struct {
name string
args args
want []int
}{
{
"3_in_1_2",
args{3, []int{1, 2}},
[]int{0, 1},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := findTargetInNums(tt.args.target, tt.args.nums); !reflect.DeepEqual(got, tt.want) {
t.Errorf("findTargetInNums() = %v, want %v", got, tt.want)
}
})
}
}
func Test_findTargetInNums2(t *testing.T) {
type args struct {
target int
nums []int
}
tests := []struct {
name string
args args
want []ret
}{
{
"3_in_1_2",
args{3, []int{1, 2}},
[]ret{{1, 0}, {2, 1}},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := findTargetInNums2(tt.args.target, tt.args.nums); !reflect.DeepEqual(got, tt.want) {
t.Errorf("findTargetInNums2() = %v, want %v", got, tt.want)
}
})
}
}