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

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

    示例:

    给定 nums = [2, 7, 11, 15], target = 9

    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]

    本人代码

    function twoSum($nums, $target) {
        
        foreach($nums as $key => $value){

            $num = $target - $value;
       //这块运行消耗太多 比较慢
            $k = array_search($num, array_reverse($nums, true)); 

            if($k != $key && !empty($k)){

                return [$key,$k];
            }
        }
     
     
    优化后
    class Solution {

        /**
         * @param Integer[] $nums
         * @param Integer $target
         * @return Integer[]
         */
        function twoSum($nums, $target) {
            $arr = [];

            foreach($nums as $key => $value){

                $num = $target - $value;

                if (array_key_exists($num, $arr)) {

                    return [$arr[$num], $key];

                }

                $arr[$value] = $key;

            }   
        }
    }
  • 相关阅读:
    C#MessageBox使用
    ListBox的使用
    中文乱码的几种情况以及解决方法
    使用Application
    Android笔记之标题栏的各种操作
    Android笔记之日期选择器
    Viewpager制作自动左右循环滑动
    JAVA入门到精通-第17讲-排序
    ***JAVA入门到精通-第14讲-final-作业评讲
    JAVA入门到精通-第13讲-抽象类-接口
  • 原文地址:https://www.cnblogs.com/corvus/p/11938767.html
Copyright © 2011-2022 走看看