利用PHP三数之和进行求解

  介绍

本篇文章给大家分享的是有关利用PHP三数之和进行求解,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>三数之和

给你一个包含n个整数的数组num,判断num中是否存在三个元素a, b, c,使得a + b + c=0 ?请你找出所有满足条件且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例:

给定数组,nums =, (1, 0,, 1,, 2,, 1,, 4],      满足要求的三元组集合为:   (   ,[1,0,1],   ,(1,,1,,2]   )

力扣(LeetCode)链接:https://leetcode-cn.com/problems/3sum

<强>解题思路1

暴力枚举法,三层+如果判断就可以了,这样作面试中提供会成为别人的。不写代码了,数据量大了也容易超时。

<强>解题思路2

可以先固定一个值,然后寻找后两个值时可采取双指针的方法,将总的时间复杂度优化到O (n ^ 2)。

实现的过程中,要注意优化以及去重。

首先我们先对原数组进行排序,这样可以把重复的值集中到一起,便于去重。

确定第一个元素时,如果它已经比0大了,那么可以直接跳出循环,因为后面的数字都比它大。如(1、2、3、4),i=0, num[我]比;0,这样是不可能产生合法的情况的,直接休息。

确定第一个元素时,如果发现它与它前面的值一样,那么跳过本轮。如(1,- 1,0,1],在第一轮后,已经选出了{1 0 1},现我在=1,num[我]==num (i - 1),为了避免重复,直接继续。

接下来利用双指针,左指向我+ 1,右指向count ($ num) - 1。逐个进行判断,并注意去重。有点类似于固定在一个值,然后剩下的用双指针求两数之和。

class  Solution  {      ,/* * *,@param 整数[],nums 美元;*,@return 整数[][]*/,function  threeSum (num美元),{   ,result 美元;=,[];   ,count 美元;=,count ($ num);   ,if  (nums 美元;===,null  | |, count ($ num), & lt;=, 2), return 结果美元;      ,(num美元);//,O (nlogn)      ,for ($小姐:=,0;,美元小姐:& lt;, count 美元;作用;2;,我+ +美元),{,//O (n ^ 2)      if 才能;(num美元($ i),祝辞,0),打破,,//,第一个数大于,0,后面的数都比它大,肯定不成立了      if 才能;(美元小姐:祝辞,0,,,,num美元($ i),===, num美元(美元小姐:安康;1]),继续,,//,去掉重复情况      美元才能target =, - num美元($ i);   时间=美元才能left 美元小姐:+,1;   时间=美元才能right  count 美元;作用;1;   while 才能;(left 美元;& lt;,右)美元,{   if 才能;(num美元(美元离开),+,num美元(美元吧),===,美元目标),{   ,,结果[],美元=,(num美元($ i), num美元(美元离开),,num美元[对美元]];//,,,现在要增加,左,减小,正确,但是不能重复,比如:,(2,1,1,1,3,3,3],,小姐:=,0,,left =, 1, right =, 6日,(2,1,3),的答案加入后,需要排除重复的,1,和3      美元,才能离开+ +;   美元,才能正确的,,//,首先无论如何先要进行加减操作      ,,while  (left 美元;& lt;, right 美元;,,,num美元(美元离开),===,num美元[left 美元;作用;1]),美元左+ +;   ,,while  (left 美元;& lt;, right 美元;,,,num美元(美元吧),===,num美元[right 美元;+,1]),对的——美元;   ,,},else  if  (num美元(美元离开),+,num美元(美元吧),& lt;,美元目标),{   美元,才能离开+ +;   ,,},else  {,//num美元(美元离开),+,num美元(美元吧),祝辞,美元的目标      ,才能正确的——美元;   ,,}   ,,}   ,}      ,return 美元的结果;   ,}   }

以上就是利用PHP三数之和进行求解,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

利用PHP三数之和进行求解