【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 数组属性和方法
- 如何使用代码修改SAP CRM One Order CUMULAT_H对象的值
- Caffeine Cache~高性能 Java 本地缓存之王
- 用Python的Pandas和Matplotlib绘制股票唐奇安通道,布林带通道和鳄鱼组线
- Java的Covariance设计原理和SAP ABAP的模拟实现
- ABAP和Java的tag(marker) interface
- setTimeout 是到了xx ms 就执行吗,了解浏览器的 Event-Loop 机制
- 使用ABAP的RTTI和Java反射机制访问static private属性
- ABAP面试问题 - 不使用加减乘除等操作比较两个整数大小
- SAP订单上Shipping抬头和行项目字段的持久化实现原理
- SAP CRM订单模型CRMD_SHIPPING的单元测试方法
- 给SAP WebClient UI的表格行项目增添PDF预览功能
- 如何将ABAP透明表的内容导入PostgreSQL数据库
- 使用代理模式改善SAP UI5应用的图片加载体验
- 如何使用ABAP open SQL的locator
- dotnet 新 SDK Style 项目格式如何使用 InternalsVisibleToAttribute 功能