【LeetCode】三数之和
时间:2022-07-25
本文章向大家介绍【LeetCode】三数之和,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2] ]
题目分析
算法流程图分析:
代码实现
/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function(nums) {
nums.sort((a,b) => a - b);
let len = nums.length;
let result = []
let L, R
for (let i = 0; i < len; i++) {
numsFirst = nums[i];
// 如果排序后的第一个数大于0 则结束
if (numsFirst > 0) {
break;
}
if (i > 0 && nums[i] === nums[i-1]) continue; // 去重
L = i + 1;
R = len -1;
while(L < R) {
numsL = nums[L];
numsR = nums[R];
sum = numsFirst + numsL + numsR;
if (sum === 0) {
result.push([numsFirst, numsL, numsR]);
while (numsL === nums[L+1]) {
L++;
}
while (numsR === nums[R-1]) {
R--;
}
L++;
R--;
// 当sum小于0的时候,则是L++
} else if (sum < 0) {
L++;
} else {
R--;
}
}
}
return result
};
知识点分析
数组排序
正序排序如下
nums.sort((a,b) => a - b);
while 语句
在某个条件表达式为真的前提下,循环执行指定的一段代码,直到那个表达式不为真结束循环
var n = 0;
while (n < 3) {
n++;
}
console.log(n);
// expected output: 3
for 循环中的 break 和 continue
欢迎大家来我杂货铺逛逛,不买账都行,我们就聊聊天,谈谈心~
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 天啊!鹅厂都开始做开发板了?网红腾讯物联网开发板终极开箱评测,让我们一睹为快!
- 我用 React 和 Vue 构建了同款应用,来看看哪里不一样(2020 版)
- 大点干!早点散----------深入剖析Redis集群原理与实验
- 微信群总是有人发广告?看我用Python写一个自动化机器人消灭他!
- 苏宁基于 ClickHouse 的大数据全链路监控实践
- CORS Cross Origin Resource Sharing
- 从0开始做播放器-第二季-第2章-Android NDK 工程的建立和 JNI 的基本用法
- 记一次线上问题排查-maven父子结构依赖所遇到的坑
- 『技术随手学』解决 pip conda install 网络故障中断
- boost asio
- 7.SwrContext音频重采样使用
- 8.ffmpeg-基础常用知识
- 9.下载ffmpeg、使QT支持同时编译32位和64位
- 10.QT-QAudioOutput类使用
- 11.QT-ffmpeg+QAudioOutput实现音频播放器