题目如下:首先准备一个数组,[1,2,8,4,9]  然后输入一个6,找出数组两项之和为6的两个下标。

啥也不想,马上上代码,这个太简单了,

   static int[] twoSum(int[] nums, int target){
for (var i = 0; i < nums.Length; i++) {
for (int j = 0; j < nums.Length; j++) {
if (nums[i] + nums[j] == target) {
return new int[] {i,j};
}
}
}
throw new Exception("No Sum Solution");
}

从这里我们可以看出,这个算法的时间复杂度是O(n的平方),这里有双重循环了。

既然这个算法不好,循环太多次了,那我们就得想办法减少循环,减少时间复杂度,然后就有了如下代码。

        static int[] twoSum(int[] nums, int target) {
int[] result = new int[2];
Dictionary<int, int> dict = new Dictionary<int, int>();
for (var i = 0; i < nums.Length; i++) {
if (dict.ContainsKey(target - nums[i])) {
result[0] = Convert.ToInt32(dict[target - nums[i]]);
result[1] = i;
return result;
}
if (!dict.ContainsKey(nums[i])) { //这个是为了防止有重复的情况出现。
dict.Add(nums[i], i);
}
}
return result;
}

最新文章

  1. 3d数学总结帖
  2. js动态更改对象属性值的方法
  3. jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
  4. 用Node.js开发Windows 10物联网应用
  5. DedeCMS全版本通杀SQL注入漏洞利用代码
  6. JQuery文件上传插件uploadify在MVC中Session丢失的解决方案
  7. Java中的Stringbuffer类解析
  8. MySQL重置密码与远程连接权限问题
  9. 关于Google指令(别提baidu)
  10. Unity3D游戏开发最佳实践20技能(两)
  11. Github 开源:高效好用的对象间属性拷贝工具:升讯威 Mapper( Sheng.Mapper)
  12. c#监测电脑状态
  13. java,http的post和get
  14. 周一02.3运行python程序的两种方式
  15. const与#define相比有什么不同?
  16. 获取各种编码(Unicode,UTF8等)的识别符
  17. .36-浅析webpack源码之Parser类
  18. 【Android】Scroller分析
  19. SpringMVC自定义视图Excel视图和PDF视图
  20. Bootstrap 3.0的扁平化来了

热门文章

  1. 20个 CSS 快速提升技巧
  2. (4)puppet常用的资源及其常用属性
  3. 不难懂-----Mock基本使用
  4. 【Azure 应用服务】Azure Mobile App (NodeJS) 的服务端部署在App Service for Windows中出现404 Not Found -- The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
  5. NGINX的动静分离;什么是负载均衡
  6. Spring系列9:基于注解的Spring容器配置
  7. Typora + picgo + Chevereto 优雅地上传图片
  8. JavaScript之ES6常用新特性
  9. webStorm关于ESlint6语法格式化解决方案
  10. ApacheCN Python 译文集 20211108 更新