用 PHP 来刷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 Integer[] $nums* @return Integer[][]* 1.将数组排序 2.定义三个指针,i,j,k。遍历i,那么这个问题就可以转化为在i之后的数组中寻找nums[j]+nums[k]=-nums[i]这个问题,也就将三数之和问题转变为二数之和---(可以使用双指针)*/
function threeSum($nums) {sort($nums);$len = count($nums);$res = [];for ($i=0;$i<=$len-3;$i++){$j= $i+1;$k = $len-1;while ($j < $k){if($nums[$i] == ($nums[$j]+$nums[$k])*-1){if(!in_array([$nums[$i],$nums[$j],$nums[$k]],$res)){$res[] = [$nums[$i],$nums[$j],$nums[$k]];}$j++;$k--;while ($j<$k && $nums[$j]===$nums[$j-1]){$j++;}while ($j<$k && $nums[$k]===$nums[$k+1]){$k--;}}else{if($nums[$i]+$nums[$j]+$nums[$k]<0){$j++;while ($j<$k && $nums[$j]===$nums[$j-1]){$j++;}}else{$k--;while ($j<$k && $nums[$k]===$nums[$k+1]){$k--;}}}}}return $res;
}print_r(threeSum([-2,0,1,1,2]));
用 PHP 来刷leetCode 之 三数之和相关推荐
- [双指针|模拟] leetcode 15 三数之和
[双指针|模拟] leetcode 15 三数之和 1.题目 题目链接 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ? ...
- LeetCode 15三数之和16最接近的三数之和
三数之和(双指针) 题意: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组. 注意 ...
- LeetCode 15. 三数之和(3Sum)
15. 三数之和 15. 3Sum 题目描述 Given an array nums of n integers, are there elements a, b, c in nums such th ...
- 20200126:(leetcode)三数之和 最接近的三数之和(含图解)
三数之和 && 最接近的三数之和 题目 基本思路 代码实现 题目 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b ...
- Leetcode 15.三数之和
Time: 20190920 Type: Medium 题目描述 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所 ...
- Leetcode 15:三数之和(最详细解决方案!!!)
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 *a,b,c ,*使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. **注意:**答案中不可以包含重 ...
- Java实现 LeetCode 15 三数之和
15. 三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以 ...
- LeetCode 15. 三数之和【双指针】
15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j.i != k 且 j != k ,同时还满足 nums[ ...
- LeetCode 15. 三数之和
题目描述 15. 三数之和 思路 思路1 比较容易想到的就是,求三数之和等于0,可以等价于求两个数的和,然后看这个和的相反数是否在nums里面. 但是 T_T这样的话复杂度太高了,会超时,捂脸,最后三 ...
最新文章
- “互联网+”的时代,易佳互联也随着时代步伐前进着
- IEEE Spectrum调查:AI 的 6 种最坏情况
- error MIDL2025/2026
- 电子书下载:Moving to Microsoft Visual Studio 2010
- Caused by SSLError(“Can‘t connect to HTTPS URL because the SSL module is not available)
- Hadoop每日一讨论整理版
- SCSS 文件里的感叹号用法 - 给变量设置默认值
- 软件项目组织管理(二、三)项目管理与信息技术环境、项目管理过程组
- java报错symbol_为何此处会出现找不到symbol的错误呢?
- mybatis oracle 大写,解决mybatis用Map返回的字段全变大写的问题
- 【Java】Java中ThreadLocal简介以及源码
- 详细解读!Isotropic Remeshing的详细介绍与实现
- 立即更新 Chrome 浏览器!这个 0day 已遭在野利用
- 17. 信号量,共享内存和消息队列
- 华为5G空口新技术(2015年)
- Winserver AD管理Powershell——GUI 计算机加入域
- QT—常用容器 QStringList,QVector,QMap,QHash,QVariant
- echarts 柱状图让柱子倒叙
- [Python Nonebot]QQ机器人相关API / 网址介绍
- 数据库——SQL语言建立供应商表S,零件表P,工程表J,供应表SPJ
热门文章
- 英文人名及含意(转)
- ML302 OpenCPU系列(7)---AW8733A音频PA调试
- 基于MATLAB/Simulink软件的单相光伏并网逆变器仿真,仿真中使用两级电路,前级BOOST升压后级光伏逆变并网
- 一文掌握项目甘特图的使用方法
- 图片无法显示时,js实现 暂无图片效果
- python批量修改字典的键或值
- 万兆局域网方案_家庭万兆方案性价比之选,10G网速不是梦!
- MYSQL:时间粒度(每30s、每1分钟、每5分钟、每1小时、每1周、每1月、每1季度、每1年)
- Python3 数据库(MySQL/MongoDB/Redis)
- 运行在命令行的微信 cmd-wechat-terminal