当前位置:网站首页>[算法] 剑指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
}
测试
边栏推荐
- FairyGUI增益BUFF数值改变的显示
- Theoretical derivation of support vector machine
- Meanings and differences of PV, UV, IP, VV, CV
- [Chongqing Guangdong education] reference materials for regional analysis and planning of Pingdingshan University
- Compile GDAL source code with nmake (win10, vs2022)
- Fabrication of fairygui simple Backpack
- Detailed explanation of truncate usage
- Unity3D,阿里云服务器,平台配置
- 服务未正常关闭导致端口被占用
- [Yu Yue education] guide business reference materials of Wuxi Vocational and Technical College of Commerce
猜你喜欢
FGUI工程打包发布&导入Unity&将UI显示出来的方式
Guided package method in idea
平衡二叉树详解 通俗易懂
[算法] 剑指offer2 golang 面试题13:二维子矩阵的数字之和
Naive Bayesian theory derivation
地球围绕太阳转
ORA-02030: can only select from fixed tables/views
(core focus of software engineering review) Chapter V detailed design exercises
第一人称视角的角色移动
[算法] 剑指offer2 golang 面试题9:乘积小于k的子数组
随机推荐
Fabrication of fairygui simple Backpack
Containers and Devops: container based Devops delivery pipeline
(1) Introduction Guide to R language - the first step of data analysis
[Leetcode15]三数之和
There is no red exclamation mark after SVN update
Fairygui gain buff value change display
RTKLIB: demo5 b34f.1 vs b33
Unity3d camera, the keyboard controls the front and rear left and right up and down movement, and the mouse controls the rotation, zoom in and out
Introduction to the daily practice column of the Blue Bridge Cup
数据库课程设计:高校教务管理系统(含代码)
Flink late data processing (3)
Mysql database reports an error: row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT=DY
(3) Introduction to bioinformatics of R language - function, data Frame, simple DNA reading and analysis
[offer9] implement queues with two stacks
KF UD分解之UD分解基础篇【1】
NRF24L01故障排查
By v$rman_ backup_ job_ Oracle "bug" caused by details
Fairygui joystick
Minio file download problem - inputstream:closed
【干货】提升RTK模糊度固定率的建议之周跳探测