算法: 
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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

时间复杂度为O(n)。

来源:http://blog.csdn.net/fationyyk/article/details/75228347

PHP实现数组中两个数的和等于给定的目标值相关推荐

  1. 数组中两个数的最大异或值 两数异或值一定小于两数相加和

    链接:数组中两个数的最大异或值 给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n . 进阶:你可以在 O(n) 的时间 ...

  2. arrays中copyof复制两个数组_异或的魅力!图解「数组中两个数的最大异或值」

    今天分享的题目来源于 LeetCode 第 421 号问题:数组中两个数的最大异或值.在 异或 这个知识点里面属于一个中高难度的题目. 题目描述 给定一个非空数组,数组中元素为 a0, a1, a2, ...

  3. LeetCode 421. 数组中两个数的最大异或值

    421. 数组中两个数的最大异或值 Idea 假设选择了数组中的元素ai和aj使得它们达到最大按位异或结果x:x=ai⊕ajx=a_{i}⊕a_{j}x=ai​⊕aj​,其中⊕表示按位异或运算. 根据 ...

  4. 421. 数组中两个数的最大异或值

    题目:421. 数组中两个数的最大异或值 题解:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/solu ...

  5. Leetcode :421. 数组中两个数的最大异或值 (位运算)

    421. 数组中两个数的最大异或值 给定一个非空数组,数组中元素为 a0, a1, a2, - , an-1,其中 0 ≤ ai < 231 . 找到 ai 和aj 最大的异或 (XOR) 运算 ...

  6. 两种方法求解 正数数组中 两个数相减 的最大值

    一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标. 即求出: maxValue = max{arr[j]-arr[i] ...

  7. 在O(N)时间内求解 正数数组中 两个数相加的 最大值

    一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相加的最大值,其中被加数的下标大于加数的下标.由加法运算的可逆性,j >i 这个条件可以去掉. 即求出: max ...

  8. leetcode421. 数组中两个数的最大异或值(贪心算法)

    给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n . 进阶:你可以在 O(n) 的时间解决这个问题吗? 示例 1: 输 ...

  9. LeetCode 421. 数组中两个数的最大异或值(Trie树)

    1. 题目 给定一个非空数组,数组中元素为 a0, a1, a2, - , an-1,其中 0 ≤ ai < 231 . 找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ≤ i, ...

最新文章

  1. 小蛮机器人如何联网_国际相对论第三期——机器人与物联网的碰撞
  2. 删除单链上数据域值最小的节点_深入浅出数据结构
  3. 转:什么是即时编译(JIT)!?OpenJDK HotSpot VM剖析
  4. 【LeetCode】414. 第三大的数
  5. C/C++得到系统启动项
  6. php程序员可能不了解的编程细节
  7. NAT STURN,ICE
  8. 你了解HTTPS工作原理吗?
  9. python re 正则表达式
  10. 变量绑定对话框控件不同类型成员变量的绑定
  11. MCGS 无限配方数据存储及U盘导入导出-第二集
  12. 解决Navicat连接MySQL总是报错1251的方法
  13. 在Linux下安装QT交叉编译,安装QT交叉编译 成功 + 测试
  14. linux使用命令修改端口映射,linux端口映射命令是什么?使用iptables做端口映射shell的方法...
  15. ps 毛发 边缘_PS教程:教你如何利用PS调整边缘高速度高效率扣头发丝
  16. Sugar BI数据可视化图表标注
  17. 什么是托管C++ (managed C++)
  18. 面板行业从“渐冻”中复苏,TCL科技大尺寸面板龙头站上C位
  19. 等效结点荷载计算机语言,等效节点荷载,equivalent node load,音标,读音,翻译,英文例句,英语词典...
  20. c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数

热门文章

  1. 玩转Numpy——np.ravel()的使用
  2. Knox网关、网关简介、概述、支持的Apache Hadoop服务、支持的Apache Hadoop生态系统的UI、参考资料
  3. 博客园首页新随笔联系管理订阅 Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
  4. 19_Android中图片处理原理篇,关于人脸识别网站,图片加载到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写
  5. 从websphere6.1迁移到weblogic10.3的问题总结
  6. Windows 配置Apache+CGI
  7. 如何解决90%的NLP问题:逐步指导
  8. 一份关于kaggle特征构建技巧和心得 1
  9. slice切割数组arr=[[0,1],[2,3]]
  10. 《C语言点滴》一1.5 内功修炼