首页 > 作文

C#算法之两数之和

更新时间:2023-04-04 14:32:44 阅读: 评论:0

题目

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

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

示例:

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

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

提示:不能自身相加。

测试用例

[2,7,11,15]

9

预期结果

[0,1]

格式模板

public class solution {    public int[] twosum(int[] nums, int target) {    /*    代码    */        }    }

笔者的代码,仅供参考

使用暴力方法,运行时间 700ms-1100ms

public class solution {    public int[] twosum(int[] nums, int target) {         int [] a = new int[2];      win7屏保      for (int i = 0; i < nums.length - 1; i++)            {                for (int j = i + 1; j < nums.length; j++)                {                    if (nums[i] + nums[j] == target)                    {                      2021上半年四六级考试  a[0] = i;                        a[1] = j;                    }                }            }            return a;        }    }

运行时间 400ms-600ms

由于使用的是哈希表,所以缺点是键不能相同。

public class solution {    public int[] twosum(int[] nums, int target) {                     int[] a = new int[2];            system.collections.hashtable hashtable = new system.collections.hashtable();            for(int i = 0; i < nums.length; i++)            {                hashtable.add(nums[i], i);            }            for(int i = 0; i < nums.length; i++)            {                int complement = target - nums[i];                if (hashtable.containskey(complement) && int.par(hashtab高中历史知识点le[complement].tostring())!=i)                {                    a[0] = i;                    a[1] = int.par(hashtable[complement].tostring());                }            }            return a;        }    }

还是哈希表,缺点是哈希表存储的类型是object,获取值时需要进行转换。

        public int[] twosum(int[] nums, int target)        {            int[] a = new int[2];            system.collections.hashtable h = new system.collections.hashtable();            for (int i = 0; i < nums.length; i++)            {                int c = target - nums[i];                if (h.containskey(c))                {                    a[0] = int.par(h[c].tostring()) <= nums[i] ? int.par(h[c].tostring()) : i;                    a[1] = int.par(h[c].tostring()) > nums[i] ? int.par(h[c].tostring()) : i;                }                el if (!h.containskey(nums[i]))                {                    h.add(nums[i], i);                }            }            return a;        }

抄一下澳大利亚签证费用别人的

public class solution{    public int[] twosum(int[] nums, int target)    {        int[] res = {0, 0};        int len = nums.length;        dictionary研究生助学贷款<int, int> dict = new dictionary<int, int>();        for (int i = 0; i < len; i++)        {            int query = target - nums[i];            if (dict.containskey(query))            {                int min = (i <= dict[query]) ? i : dict[query];                int max = (i <= dict[query]) ? dict[query] : i;                return new int[] { min, max };            }            el if (!dict.containskey(nums[i]))            {                dict.add(nums[i], i);            }        }        return res;    }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。

本文发布于:2023-04-04 14:32:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/737548584afe8402c31f206a1d6b960d.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C#算法之两数之和.doc

本文 PDF 下载地址:C#算法之两数之和.pdf

标签:目标值   整数   数组   的是
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图