C#算法如何实现两数之和
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下C#算法如何实现两数之和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目给定一个整数数组 nums和一
千家信息网最后更新 2026年11月02日C#算法如何实现两数之和
小编给大家分享一下C#算法如何实现两数之和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目
给定一个整数数组 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]; for (int i = 0; i < nums.Length - 1; i++) { for (int j = i + 1; j < nums.Length; j++) { if (nums[i] + nums[j] == target) { 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.Parse(hashtable[complement].ToString())!=i) { a[0] = i; a[1] = int.Parse(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.Parse(h[c].ToString()) <= nums[i] ? int.Parse(h[c].ToString()) : i; a[1] = int.Parse(h[c].ToString()) > nums[i] ? int.Parse(h[c].ToString()) : i; } else 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 dict = new Dictionary(); 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 }; } else if (!dict.ContainsKey(nums[i])) { dict.Add(nums[i], i); } } return res; }} 以上是"C#算法如何实现两数之和"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数组
篇文章
哈希
之和
算法
C#
代码
内容
整数
时间
目标
目标值
缺点
运行
相同
仅供参考
下标
不怎么
两个
元素
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
精品咖啡豆
互联网科技有限公司
互联网科技公司经营范围
互联网通讯科技
互联网中国科技
上海互联网科技有限公司
上海挚品互联网科技
互联网科技媒体
深圳国际航运科技和互联网
欧洲十大科技互联网公司
厦门比较好的科技互联网公司
互联网软件和科技
互联网科技与大数据专业
众安科技工业互联网合作
美国互联网科技实力
深圳无忧互联网科技
半导体行业属于互联网高科技类吗
陕西九四连强互联网科技有限公司
长沙渺峰互联网科技有限公司
杭州科技互联网公司有哪些
小米移动互联网科技园
深圳恒合互联网络科技有限公司
互联网金融 科技金融
奇酷互联网科技公司
赫美联合互联网科技
天扬科技互联网广告
常德市电业局互联网科技部
华夏恒生互联网科技013171
国产互联网科技公司
科技美学互联网 艺术