当前位置:网站首页>[算法] 剑指offer2 golang 面试题7:数组中和为0的3个数字
[算法] 剑指offer2 golang 面试题7:数组中和为0的3个数字
2022-07-06 09:18:00 【邓嘉文Jarvan】
[算法] 剑指offer2 golang 面试题7:数组中和为0的3个数字
题目1:
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
示例 2:
输入:nums = []
输出:[]
示例 3:
输入:nums = [0]
输出:[]
提示:
0 <= nums.length <= 3000
-105 <= nums[i] <= 105
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/1fGaJU
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路1:
//思路: 双指针
//首先将数组排序
//固定一个数字nums[i],其他2个数字的和为-nums[i]即可,就是一个双指针问题
//去重,i,j遇到重复的数字就跳过就能去重
代码
func threeSum(nums []int) [][]int {
//思路: 双指针
//首先将数组排序
//固定一个数字nums[i],其他2个数字的和为-nums[i]即可,就是一个双指针问题
//去重,i,j遇到重复的数字就跳过就能去重
res := make([][]int,0)
//参数处理
if len(nums) < 3 {
return res
}
//排序
sort.Slice(nums,func(i,j int) bool{
return nums[i] < nums[j]
})
//固定一个数字 nums[i]
for i := 0; i < len(nums) -2 ; {
//双指针
j,k := i+1,len(nums) -1
for j < k {
temp := nums[i] + nums[j] + nums[k]
if temp == 0 {
res = append(res,[]int{
nums[i],nums[j],nums[k]})
//去重
jVal := nums[j]
for j < k && jVal == nums[j]{
j ++
}
}else if temp < 0 {
j ++
}else {
k --
}
}
//去重
iVal := nums[i]
for i < len(nums) && iVal == nums[i]{
i ++
}
}
return res
}
测试
边栏推荐
- Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩
- JUC forkjoin and completable future
- Affichage du changement de valeur du Buff de gain de l'interface graphique de défaillance
- [Nodejs] 20. Koa2 onion ring model ----- code demonstration
- Fairygui joystick
- Latex learning
- [算法] 剑指offer2 golang 面试题12:左右两边子数组的和相等
- Detailed explanation of truncate usage
- Single chip Bluetooth wireless burning
- Mixed use of fairygui button dynamics
猜你喜欢
随机推荐
Compilation principle: preprocessing of source program and design and implementation of lexical analysis program (including code)
Unity3d makes the registration login interface and realizes the scene jump
FairyGUI循环列表
地球围绕太阳转
Single chip Bluetooth wireless burning
FGUI工程打包发布&导入Unity&将UI显示出来的方式
Idea problem record
数据库课程设计:高校教务管理系统(含代码)
使用rtknavi进行RT-PPP测试
NRF24L01故障排查
【rtklib】在rtk下使用抗差自适应卡尔曼滤波初步实践
Solution to the problem of automatic login in Yanshan University Campus Network
Unity3D,阿里云服务器,平台配置
(core focus of software engineering review) Chapter V detailed design exercises
Get the position of the nth occurrence of the string
FairyGUI复选框与进度条的组合使用
Gravure sans fil Bluetooth sur micro - ordinateur à puce unique
The master of double non planning left the real estate company and became a programmer with an annual salary of 25W. There are too many life choices at the age of 25
Halcon knowledge: gray_ Tophat transform and bottom cap transform
[899]有序队列