
Leetcode Day7
发布日期:2021-05-04 19:51:17
浏览次数:17
分类:技术文章
本文共 2567 字,大约阅读时间需要 8 分钟。
Leetcode Day7
leetcode -15 三数之和
- 題目描述
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。

- 解 : 雙重指針
思路就是首先將數組排序,接著依序固定一個數字,如果該數已經大於 0,則可以直接返回答案了(因為數組已排序),否則,利用雙重指針的想法,左右慢慢逼近,直到找到可以使和為 0 的組合,並加入答案數組中,否則,定位下一個元素。具體還是看代碼,如下。
/** * @param {number[]} nums * @return {number[][]} */let threeSum = function(nums) { let res = [] let sortNums = nums.sort(function(a, b) { return a-b }) for(let i=0; i0) return res if(i > 0) { if(sortNums[i] === sortNums[i-1]) continue } const base = sortNums[i] const target = -base let left = i+1 let right = sortNums.length-1 while(left < right) { if(sortNums[left] + sortNums[right] === target) { let three = [base, sortNums[left], sortNums[right]] if(res.length === 0) { res.push(three) }else { if(JSON.stringify(res[res.length-1]) !== JSON.stringify(three)) res.push(three) } left++ right-- }else if(sortNums[left] + sortNums[right] > target) { right-- }else { left++ } } } return res}
leetcode -16 最接近的三数之和
- 題目描述
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

- 解 : 解題思路大致上與上一題一樣,也是用到雙重指針的算法。
/** * @param {number[]} nums * @param {number} target * @return {number} */let threeSumClosest = function(nums, target) { const len = nums.length; if (len < 3) { return null; } nums.sort(function(a, b){ return a-b }) // 结果,比存储 sum 方便,下面对比时不用再用 target - sum 对比 let res = target - (nums[0] + nums[1] + nums[2]) for (let i = 0; i < len - 2; i++) { // 左指针为 i+1,右指针为 nums.length - 1 let left = i + 1 let right = len - 1 while (left < right) { const sum = nums[i] + nums[left] + nums[right] if (sum === target) { return sum; } else if (sum < target) { // sum < target 时,left++ while (nums[left] === nums[++left]) } else { // sum > target时,right-- while (nums[right] === nums[--right]) } // 存储与 target 最近的值 if (Math.abs(sum - target) < Math.abs(res)) { res = target - sum } } } return target - res}
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月07日 16时32分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
大型面试现场:一条update sql执行都经历什么?
2021-05-09
自导自演的面试现场之--你竟然不了解MySQL的组提交?
2021-05-09
ajax 处理请求回来的数据
2021-05-09
简单单页面路由跳转demo
2021-05-09
vue 不常见操作
2021-05-09
jQuery的事件绑定与触发 - 学习笔记
2021-05-09
解决页面加载闪白问题-背景图片加载优化
2021-05-09
Python处理接口测试的签名
2021-05-09
测试流程规范--测试报告模板
2021-05-09
测试流程规范--提测规范(钉钉、邮件)
2021-05-09
Linux上TCP的几个内核参数调优
2021-05-09
解Bug之路-dubbo流量上线时的非平滑问题
2021-05-09
记一次讲故事机器人的开发-我有故事,让机器人来读
2021-05-09
从Linux源码看Socket(TCP)的listen及连接队列
2021-05-09
高德网络定位算法的演进
2021-05-09
高德算法工程一体化实践和思考
2021-05-09
为亿级用户的美好出行而战!高德地图首届算法大赛落幕 95后北邮在读博士带队夺冠
2021-05-09
重温网络编程——常识(三)
2021-05-09
判断一个数是否是2的幂
2021-05-09
js 闭包(新)
2021-05-09