PHP实现数组中两个数的和等于给定的目标值
来源:互联网 发布:高校大数据应用研讨会 编辑:程序博客网 时间:2024/06/06 00:08
算法:
1、以数组中的值为索引创建新的数组$tmp
2、求出目标值减去数组值得差值
3、判断该差值是否在\$tmp中。
php实现代码如下
/** * Given an array of integers, return indices of the two numbers such that they add up to a specific target. * You may assume that each input would have exactly one solution, and you may not use the same * element twice. * Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1]. * @param [type] $arr [description] * @param [type] $sum [description] * @return [type] [description] */function twoSum($arr, $sum) { $len = count($arr); if ($len < 2) return false; $tmp = []; $flag = []; // 以数组的值为索引 for ($i = 0; $i < $len; $i++) { $tmp[$arr[$i]] = $i; } // 判断差值是否在上述索引数组中 for ($j = 0; $j < $len; $j++) { $minus = $sum - $arr[$j]; if ($minus < 0 || $sum <= $arr[$j]) continue; if (isset($tmp[$minus]) && !isset($flag[$arr[$j]]) && !isset($flag[$minus])) { echo '数组的索引值为[' . $tmp[$arr[$j]] . ',' . $tmp[$minus] . ']<br>'; // 如果有则将值置为1 $flag[$arr[$j]] = 1; } }}$arr = [2, 7, 11, 15];//$arr = [1,2,7,9,8,3,6,5,4,10];twoSum($arr, 9);
时间复杂度为O(n)。
阅读全文
0 0
- PHP实现数组中两个数的和等于给定的目标值
- PHP实现数组中两个数的和等于给定的目标值
- 在给定数组中查找两个数的和等于给定的数
- 判断一个有序数组中是否有两个数的和等于给定的数
- 关于一个数组中两个数的和等于给定数的问题
- 在数组中求出两个数,使他们的和等于给定的一个数
- 在升序数组中查找和等于给定值的两个数
- 判断数组中是否存在和等于给定值的两个数
- 给定一个数组,从中查找是否存在两个数的和等于一个给定的x
- Java算法给定一个整数数组,找出其中两个数相加等于目标值
- Java算法给定一个整数数组,找出其中两个数相加等于目标值
- 微软,Google面试题 (10) —— 在排序数组中寻找两个数的和等于给定数
- 算法讨论(七)--已排序数组中寻找两个数,其和等于给定的数
- 【算法】求数组中某两个数的和为目标值
- 快速寻找数组中的两个数的和等于给定的数字
- Java实现——查找数组中连续元素的和等于给定数的子数组
- 在数组中找出两个数a、b,使得a加b等于给定的c
- 一个无序数组中两个数之和等于给定的值sum
- java对象序列化
- tensorflow74 使用tensorflow dlib opencv做特定人脸识别
- Java对象初始化详解
- php 封装微信自动登录注册方法基于thinkphp方法【php】
- 原生AJAX异步通讯使用详解
- PHP实现数组中两个数的和等于给定的目标值
- ContentProvider的总结
- 原始编译全志R16的androidM的步骤(分色排版)
- Emoji’s World, 一起实现Emoji
- 微信小程序之入门项目
- ubuntu--免密码执行脚本
- burpsuite学习——简单爆破
- Glide与Picasso的区别及优缺点
- Python-MySQL CRUD操作