C#算法如何实现两数之和
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,小编给大家分享一下C#算法如何实现两数之和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目给定一个整数数组 nums和一
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
dbca怎么新建数据库
青岛网警 网络安全
师资培训 网络安全
华为网络管理服务器
浪潮服务器恢复出厂数据
qt创建数据库什么版本
pt数据库
bass数据库
在记事本上创建的数据库怎么运行
计算机网络技术对比物联网
导入数据做成数据库
mc服务器防火墙规则
服务器名称是什么
服务器登录不了千牛
关于反恐网络安全措施
兴田网络技术有限公司
php软件开发报价
csgo国服韩国服务器脱机
防护服务器清洗
mysql备份数据库文件
网络安全人才缺口填补
南沙软件开发专业哪家强
数据库92多表查询
学数据库的收获和体会
宁夏网络安全提升招标公告
数据库被误删
党校新数据库开通条件
金山区游戏软件开发创新服务
网络安全叠加区块链股票
sql2008看不见数据库