当前位置:网站首页>November 07, 2020: given an array of positive integers, the sum of two numbers equals N and must exist. How to find the two numbers with the smallest multiplication?
November 07, 2020: given an array of positive integers, the sum of two numbers equals N and must exist. How to find the two numbers with the smallest multiplication?
2020-11-07 23:08:00 【Fuda Dajia architect's daily question】
Fogo's answer 2020-11-07:
1. Hashifa . 2. Sort + Double pointer pinch .
golang The code is as follows :
package main
import (
"fmt"
"sort"
)
const INT_MAX = int(^uint(0) >> 1)
func main() {
nums := []int{2, 1, 3, 4, 5, 6, 9, 8, 7}
fmt.Println(twoSumMultiplication1(nums, 12), " Hashifa ")
fmt.Println(twoSumMultiplication2(nums, 12), " Sort + Double pointer pinch ")
}
// Hashifa
func twoSumMultiplication1(nums []int, target int) int {
map0 := make(map[int]struct{})
min := INT_MAX
for i := 0; i < len(nums); i++ {
complement := target - nums[i] // Difference value = The target - Element value
if _, ok := map0[complement]; ok { // If there is a difference in the dictionary , It means that we have found
// Make sure complement It's the smaller value
if complement > nums[i] {
complement, nums[i] = nums[i], complement
}
// Who is small and who keeps it
if complement < min {
min = complement
// If the minimum is 1, You don't have to cycle .
if min == 1 {
break
}
}
} else {
// If there is no difference in the dictionary , Cache the current value of the array
map0[nums[i]] = struct{}{}
}
}
return min
}
// Sort + Double pointer pinch
func twoSumMultiplication2(nums []int, target int) int {
// Sort
sort.Slice(nums, func(i, j int) bool {
return nums[i] < nums[j]
})
sumtemp := 0
min := INT_MAX
for i, j := 0, len(nums)-1; i < j; {
sumtemp = nums[i] + nums[j]
if target == sumtemp {
if min > nums[i] {
min = nums[i]
if min == 1 {
break
}
}
i++
} else if target > sumtemp {
i++
} else {
j--
}
}
return min
}
The results are as follows : 
版权声明
本文为[Fuda Dajia architect's daily question]所创,转载请带上原文链接,感谢
边栏推荐
- Learn Scala if Else statement
- Cpp(四) Boost安装及基本使用 for Mac
- Face recognition: attack types and anti spoofing techniques
- Cryptography - Shangsi Valley
- Qt混合Python开发技术:Python介绍、混合过程和Demo
- 异常+abstract
- C++在C的基础上改进了哪些细节
- The instanceof operator in ecmascript7 specification
- A compilation bug brought by vs2015 Update1 update [existing solutions]
- Improvement of maintenance mode of laravel8 update
猜你喜欢
随机推荐
Design pattern of facade and mediator
android基础-RadioButton(单选按钮)
关于update操作并发问题
Getting started with go wire dependency injection
Wechat applet request reported 400 error @ requestbody failed to receive
你的主机中的软件中止了一个已建立的连接。解决方法
Jingtao project day09
Android 9.0/P WebView 多进程使用的问题
Face recognition: attack types and anti spoofing techniques
2020-11-07:已知一个正整数数组,两个数相加等于N并且一定存在,如何找到两个数相乘最小的两个数?
GoLand writes a program with template
Adobe Prelude / PL 2020 software installation package (with installation tutorial)
Writing method of field and field comparison condition in where condition in thinkphpp6
【解决方案】分布式定时任务解决方案
supervisor进程管理安装使用
微服务的出现和意义的探索
2020天翼智能生态博览会中国电信宣布5G SA正式规模商用
Face recognition: attack types and anti spoofing techniques
The emergence and significance of micro service
Principles of websocket + probuf








