当前位置: 首页 > 后端技术 > PHP

PHP算法题:两数之和

时间:2023-03-30 02:26:05 PHP

1。两个Sum给定一个整数数组,返回两个数字的索引,使它们加起来达到特定目标。您可以假设每个输入都只有一个解决方案,并且您可能不会两次使用相同的元素。示例:给定nums=[2,7,11,15],target=9,因为nums[0]+nums[1]=2+7=9,返回[0,1]。一个或两个循环,brute强制代码如下functiontwoSum($nums,$target){for($i=0;$i$nums_v){if(!isset($nums_match[$target-$nums_v])){$nums_match[$target-$nums_v]=$nums_k;}}foreach($numsas$nums_k=>$nums_v){if(isset($nums_match[$nums_v])&&$nums_match[$nums_v]!=$nums_k){$res[]=$nums_k;$res[]=$nums_match[$nums_v];返回$res;}}}时间复杂度O(n)执行时间24ms,大大提升三、一次hash这是基于两边hash的优化代码如下functiontwoSum($nums,$target){$nums_match=[];foreach($numsas$nums_k=>$nums_v){if((isset($nums_match[$target-$nums_v]))){返回数组($nums_match[$target-$nums_v],$nums_k);}$nums_match[$nums_v]=$nums_k;}}时间复杂度O(n)执行时间16ms