zoukankan      html  css  js  c++  java
  • 算法——两数求和

    题目

    给定一个整数数组nums 和 一个目标值target,请你在数组中找出和为目标值的那 两个整数,并返回他们的数组下标。
    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
    示例:

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

    思路:

    1. 两次轮询,两两相加
    2. 一次轮询,对比差值

    解答

    方法一:

            /// <summary>
            /// 方法一:暴力破解法
            /// </summary>
            /// <param name="numbers"></param>
            /// <param name="target"></param>
            /// <returns></returns>
            public static int[] GetNumIndex1(int[] numbers, int target)
            {
                for (int i = 0; i < numbers.Length; i++)
                {
                    for (int j = i + 1; j < numbers.Length; j++)
                    {
                        if (numbers[i] + numbers[j] == target)
                        {
                            return new int[] { i, j };
                        }
                    }
                }
                return new int[] { -1, -1 };
            }
    

    方法二:

            /// <summary>
            /// 方法二:hash一遍轮询
            /// </summary>
            /// <param name="numbers"></param>
            /// <param name="target"></param>
            /// <returns></returns>
            public static int[] GetNumIndex2(int[] numbers, int target)
            {
                Hashtable hashtable = new Hashtable();
                for (int i = 0; i < numbers.Length; i++)
                {
                    int diffVal = target - numbers[i];
                    if (hashtable.Contains(diffVal))
                    {
                        return new int[] { (int)hashtable[diffVal], i };
                    }
                    else
                    {
                        hashtable.Add(numbers[i], i);
                    }
                }
                return new int[] { -1, -1 };
            }
    

    运行结果

    源码

  • 相关阅读:
    四则运算WEB版
    最大子数组问题
    四则运算终极版
    软件工程个人作业02
    软件工程概论-构建之法阅读笔记01
    软件工程概论个人作业01
    软件工程概论作业-测试
    123
    【好文转载】凡人修真传-程序员的十个等级
    有趣的网站
  • 原文地址:https://www.cnblogs.com/yinpeng186/p/12255324.html
Copyright © 2011-2022 走看看