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);


  • 相关阅读:
    路由相关题目解析
    Centos7.6系统安装
    组播(二)---IGMP
    那些瞬间击中我的句子
    组播(一)
    记一次安装浪潮服务器的经历
    HP打印机驱动安装方法总结
    潍坊矿场ubuntu18 server 基本环境配置常用操作
    docker-zabbix
    MySQL 8.x 账号管理
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/8849971.html
Copyright © 2011-2022 走看看