当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- What kind of technical ability should a programmer who has worked for 1-3 years? How to improve?
- Git code submission operation, and git push prompt failed to push some refs'xxx '
- 汇编函数mcall systemstack asmcgocall syscall
- Cryptography - Shangsi Valley
- 2020天翼智能生态博览会中国电信宣布5G SA正式规模商用
- supervisor进程管理安装使用
- sed之查找替换
- 面部识别:攻击类型和反欺骗技术
- 使用 Xunit.DependencyInjection 改造测试项目
- The instanceof operator in ecmascript7 specification
猜你喜欢

C / C + + Programming Notes: what are the advantages of C compared with other programming languages?

使用 Xunit.DependencyInjection 改造测试项目

Wechat applet request reported 400 error @ requestbody failed to receive

2020天翼智能生态博览会中国电信宣布5G SA正式规模商用

Got timeout reading communication packets解决方法

面部识别:攻击类型和反欺骗技术

关于晋升全栈工程师,从入门到放弃的神功秘籍,不点进来看一看?

Reflection on a case of bus card being stolen and swiped

QT hybrid Python development technology: Python introduction, hybrid process and demo

爆一个VS2015 Update1更新带来的编译BUG【已有解决方案】
随机推荐
Judging whether paths intersect or not by leetcode
Stack bracket matching
洞察——风格注意力网络(SANet)在任意风格迁移中的应用
Thinkphp6中where条件中字段与字段比较条件的写法
See once to understand, graphic single chain table inversion
WPF 关于绘图个人总结
Web安全(二)---跨域资源共享
Qt混合Python开发技术:Python介绍、混合过程和Demo
CPP (4) boost installation and basic use for Mac
Speed up your website with jsdelivr
GET,POST,PUT,DELETE,OPTIONS用法与说明
Design pattern of facade and mediator
[C + + learning notes] how about the simple use of the C + + standard library STD:: thread?
Adobe Prelude / PL 2020 software installation package (with installation tutorial)
团灭 LeetCode 股票买卖问题
密码学-尚硅谷
Improvement of maintenance mode of laravel8 update
Insight -- the application of sanet in arbitrary style transfer
The software in your host has terminated an established connection. resolvent
supervisor进程管理安装使用