zoukankan      html  css  js  c++  java
  • 两数之和

    给定一个整数数列,找出其中和为特定值的那两个数。

    你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9
    
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]

     1 <?php
     2 //给定一个整数,找到两个数使得它们的和等于一个给定的数target
     3 
     4 5 function solution($data, $target)
     6 {
     7     //1.校验数据:数组为空/给定的值不是数组,返回false
     8     if(empty($data) || !is_numeric($target))
     9     {
    10         return false;
    11     }
    12     
    13     //2.复制一个临时数组,将数组$data的值与键调换
    14     $tmp = array_flip($data);//存在冲突,后面值的key会覆盖前面值的key
    15     
    16     //3.寻找是否存在两个数的和等于$target
    17     $len = count($data);
    18     for($i=0; $i<$len; ++$i)
    19     {
    20         $key = $target - $data[$i];
    21         if(isset($tmp[$key]) && $i != $tmp[$key])//存在两个数和等于target,且两数的key值不一样
    22         {
    23             return [$i, $tmp[$key]];
    24         }
    25     }
    26     return false;
    27 }
    28 
    29 $arr = [2, 7, 11, 15, 2];//给定的数组
    30 $target = 4; //给定的数
    31 $res = solution($arr, $target);
    32 echo "<pre>";
    33 print_r($res);
    34 
    35 $arr = [2, 7, 3, 15, 2];//给定的数组
    36 $target = 6; //给定的数
    37 $res = solution($arr, $target);
    38 echo "<pre>";
    39 print_r($res);


  • 相关阅读:
    【集训第二天·翻水的老师】--ac自动机+splay树
    【集训第一天·特来卖萌】树链剖分之水水的例题
    1.ARM寄存器简解
    2.汇编代码的简单实现
    Android之Activity 生命周期
    Android之SQLite
    魅族 -- 禁止D及以下级别LOG的输出
    常用的SQL语句
    Android开发工具
    Android介绍
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/8849971.html
Copyright © 2011-2022 走看看