先看看题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
(1).暴力枚举.我第一次做这道题只能想到这个,文科生有点丢人了。两个大循环,每次循环都用目标值去减去当前值,如果结果的值在这个数组中,并且不是当前值则返回当前值的位置和结果值的位置。
class Solution
{
/**
* @param Integer[] $nums
* @param Integer $target
* @return Integer[]
*/
function twoSum($nums, $target)
{
foreach ($nums as $key => $value)
{
$temp = $target - $value;
foreach ($nums as $key2 => $value2)
{
if ($value2 == $temp && $key2 != $key)
{
return [$key, $key2];
}
}
}
}
}(2).哈希表. 建立一个哈希表,key保存每个元素的值,value保存每个元素原来的key.每次循环时判断哈希表是否存在一个(目标值-当前元素)的值,存在则返回当前元素的key和哈希表中的位置。我起初认为这样是不正确的,因为上面要求返回的是[0,1],但是我们这样来做结果是[1,0],不过我看了下letcode的题解,这样也是正确的。
class Solution
{
/**
* @param Integer[] $nums
* @param Integer $target
* @return Integer[]
*/
function twoSum($nums, $target)
{
$hash = [];
foreach ($nums as $key => $value)
{
$temp = $target - $value;
if (isset($hash[$temp]))
{
return [$key, $hash[$temp]];
}
$hash[$value] = $key;
}
}
}很显然hash来处理更快
先在centos安装openssl,然后开始://生成私钥openssl genrsa -out rsa_private_key.pem 1024//生成公钥openssl rsa -in rsa_private_key.pem&...
通过http推送消息给socket,socket服务再向客户端推送<?php /* * Socket推送 * 请用守护进程方式启动php msgservice.php & (socket只...
开发com组件可以用c++,vc++,net,我比较熟悉net,演示用dnet(1).创建项目:启动vs2017,新建项目,选择Visual C# ->Windows桌面->类库通用windows(2). 修改Com项目:点击 项目->项目属性,再点击应用程序->程序集信息,...
xmlrpc协议是通过http请求xml数据进行通信。webservice中和它相同的是soap。soap调用的确很简单,但是创建wsdl太繁琐,效率低下。xmlrpc很好的解决这个问题。(1).创建xmlrpc服务端(求和函数api)function getSum($method,$ar...
(1).在PHP中可以查看的环境变量包括: (1.1).电脑环境变量 (2.1).服务器环境变量(2).getenv()函数获取一个环境变量的值.参数1是环境变量的key,参数2值为true的时候仅从你的电脑环境变量中查找,参数2值为false会从两种变量中全部查询//获取我电脑登录的用户名,输出A...
<?php //如果支持exec函数,可以使用的方式 exec('chcp 65001'); //如果exec函数因安全问题禁用,可以使用的方式 pclose(popen('chcp 65001', 'r'));...