PHP实现数组中两个数的和等于给定的目标值
算法:
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实现数组中两个数的和等于给定的目标值相关推荐
- 数组中两个数的最大异或值 两数异或值一定小于两数相加和
链接:数组中两个数的最大异或值 给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n . 进阶:你可以在 O(n) 的时间 ...
- arrays中copyof复制两个数组_异或的魅力!图解「数组中两个数的最大异或值」
今天分享的题目来源于 LeetCode 第 421 号问题:数组中两个数的最大异或值.在 异或 这个知识点里面属于一个中高难度的题目. 题目描述 给定一个非空数组,数组中元素为 a0, a1, a2, ...
- LeetCode 421. 数组中两个数的最大异或值
421. 数组中两个数的最大异或值 Idea 假设选择了数组中的元素ai和aj使得它们达到最大按位异或结果x:x=ai⊕ajx=a_{i}⊕a_{j}x=ai⊕aj,其中⊕表示按位异或运算. 根据 ...
- 421. 数组中两个数的最大异或值
题目:421. 数组中两个数的最大异或值 题解:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/solu ...
- Leetcode :421. 数组中两个数的最大异或值 (位运算)
421. 数组中两个数的最大异或值 给定一个非空数组,数组中元素为 a0, a1, a2, - , an-1,其中 0 ≤ ai < 231 . 找到 ai 和aj 最大的异或 (XOR) 运算 ...
- 两种方法求解 正数数组中 两个数相减 的最大值
一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相减的最大值,其中被减数的下标不小于减数的下标. 即求出: maxValue = max{arr[j]-arr[i] ...
- 在O(N)时间内求解 正数数组中 两个数相加的 最大值
一,问题描述 给定一个正数数组arr(即数组元素全是正数),找出该数组中,两个元素相加的最大值,其中被加数的下标大于加数的下标.由加法运算的可逆性,j >i 这个条件可以去掉. 即求出: max ...
- leetcode421. 数组中两个数的最大异或值(贪心算法)
给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n . 进阶:你可以在 O(n) 的时间解决这个问题吗? 示例 1: 输 ...
- LeetCode 421. 数组中两个数的最大异或值(Trie树)
1. 题目 给定一个非空数组,数组中元素为 a0, a1, a2, - , an-1,其中 0 ≤ ai < 231 . 找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ≤ i, ...
最新文章
- 小蛮机器人如何联网_国际相对论第三期——机器人与物联网的碰撞
- 删除单链上数据域值最小的节点_深入浅出数据结构
- 转:什么是即时编译(JIT)!?OpenJDK HotSpot VM剖析
- 【LeetCode】414. 第三大的数
- C/C++得到系统启动项
- php程序员可能不了解的编程细节
- NAT STURN,ICE
- 你了解HTTPS工作原理吗?
- python re 正则表达式
- 变量绑定对话框控件不同类型成员变量的绑定
- MCGS 无限配方数据存储及U盘导入导出-第二集
- 解决Navicat连接MySQL总是报错1251的方法
- 在Linux下安装QT交叉编译,安装QT交叉编译 成功 + 测试
- linux使用命令修改端口映射,linux端口映射命令是什么?使用iptables做端口映射shell的方法...
- ps 毛发 边缘_PS教程:教你如何利用PS调整边缘高速度高效率扣头发丝
- Sugar BI数据可视化图表标注
- 什么是托管C++ (managed C++)
- 面板行业从“渐冻”中复苏,TCL科技大尺寸面板龙头站上C位
- 等效结点荷载计算机语言,等效节点荷载,equivalent node load,音标,读音,翻译,英文例句,英语词典...
- c语言 乱码转化为16进制_C语言版的16进制与字符串互转函数
热门文章
- 玩转Numpy——np.ravel()的使用
- Knox网关、网关简介、概述、支持的Apache Hadoop服务、支持的Apache Hadoop生态系统的UI、参考资料
- 博客园首页新随笔联系管理订阅 Linux下四款Web服务器压力测试工具(http_load、webbench、ab、siege)介绍
- 19_Android中图片处理原理篇,关于人脸识别网站,图片加载到内存,图片缩放,图片翻转倒置,网上撕衣服游戏案例编写
- 从websphere6.1迁移到weblogic10.3的问题总结
- Windows 配置Apache+CGI
- 如何解决90%的NLP问题:逐步指导
- 一份关于kaggle特征构建技巧和心得 1
- slice切割数组arr=[[0,1],[2,3]]
- 《C语言点滴》一1.5 内功修炼