当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- [original] the influence of arm platform memory and cache on the real-time performance of xenomai
- Annual salary of 900000 programmers is not as good as 3800 civil servants a month? How to choose between stability and high income?
- go wire 依赖注入入门
- Thinkphp6中where条件中字段与字段比较条件的写法
- Privacy violation and null dereference of fortify vulnerability
- Adobe Prelude /Pl 2020软件安装包(附安装教程)
- On the stock trading of leetcode
- Face recognition: attack types and anti spoofing techniques
- UCGUI简介
- More than 50 object detection datasets from different industries
猜你喜欢
leetcode之判断路径是否相交
16. File transfer protocol, vsftpd service
Get tree menu list
QT hybrid Python development technology: Python introduction, hybrid process and demo
面部识别:攻击类型和反欺骗技术
微信小程序request报400错误 @RequestBody接收不到
The road of cloud computing: a free AWS cloud server
C language I blog assignment 03
微服务的出现和意义的探索
C/C++编程笔记:C语言相比其他编程语言,有什么不一样的优势?
随机推荐
Cpp(二) 创建Cpp工程
The road of cloud computing: a free AWS cloud server
Idea - the. IML file was not automatically generated by the project
Fortify漏洞之 Privacy Violation(隐私泄露)和 Null Dereference(空指针异常)
What kind of technical ability should a programmer who has worked for 1-3 years? How to improve?
Web安全(四)---XSS攻击
What details does C + + improve on the basis of C
Thinkphp6中where条件中字段与字段比较条件的写法
wanxin金融
High concurrency in ngnix cluster
Implementation of Caesar cipher
supervisor和Python多进程multiprocessing使用 子进程残留问题
Cpp(三) 什么是CMake
Qt混合Python开发技术:Python介绍、混合过程和Demo
leetcode之判断路径是否相交
Basic knowledge of C + +
状态压缩:对动态规划进行降维打击
VC6兼容性及打开文件崩溃问题解决
Got timeout reading communication packets解决方法
关于晋升全栈工程师,从入门到放弃的神功秘籍,不点进来看一看?