LeetCode #1 Two Sum C# Solution
2016-04-03 14:00
549 查看
LeetCode #1 Problem
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
基本上看到题第一反应都是一个O(N^2)的双重循环,但是在大数据下必然会TLE,所以考虑其他算法。
可以想到,寻找两个数相加得到target可以转换为target减去ans[0]然后在nums[]中寻找ans[1]是否存在。同时,哈希表拥有查找效率为O(1)的优势,于是这样一重循环就可以找到答案了。
Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
基本上看到题第一反应都是一个O(N^2)的双重循环,但是在大数据下必然会TLE,所以考虑其他算法。
可以想到,寻找两个数相加得到target可以转换为target减去ans[0]然后在nums[]中寻找ans[1]是否存在。同时,哈希表拥有查找效率为O(1)的优势,于是这样一重循环就可以找到答案了。
C# Code public int[] TwoSum(int[] nums, int target) { Hashtable ht = new Hashtable(); List<int> list = new List<int>(); list = nums.ToList<int>(); int i = 0; foreach (int num in list) { if (!ht.Contains(num)) ht.Add(num,i); i++; } i = 0; foreach (int num in list) { int temp = target - num; if (ht.Contains(temp)&&i!=(int)ht[temp]) { int[] ans = new int[2]; ans[0] = i; ans[1] = (int)ht[temp]; return ans; } i++; } return null; }
相关文章推荐
- C# : 读取XML文件 (一)
- C# : 读取简单的XML文件
- C# TextBox常用方法总结
- C#、.Net代码精简优化(空操作符(??)、as、string.IsNullOrEmpty() 、 string.IsNullOrWhiteSpace()、string.Equals()、System.IO.Path 的用法)
- BC#78 (div.2)CA Loves GCD【N个数gcd】
- BC#78 (div.2) 1001 CA Loves Stick 【注意取值范围】
- C#中泛型容器Stack<T>
- C#套接字和windowsAPI套接字
- C#套接字和windowsAPI套接字
- C# LDAP 管理(创建新用户)
- C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
- C#-变量类型(值类型、引用类型)
- C# 服务器、客户端学习(四)
- C# 服务器、客户端学习(三)
- C# 服务器、客户端学习(二)
- C# 客户端服务器学习(一)
- BC#78Div.2 1001
- C#制作视频播放器-player播放器组件
- C# Chart详细解析
- [C#]使textbox光标在最左边