每日一算法之two sum
2024-09-08 03:01:52
题目如下:首先准备一个数组,[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;
}
最新文章
- 3d数学总结帖
- js动态更改对象属性值的方法
- jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
- 用Node.js开发Windows 10物联网应用
- DedeCMS全版本通杀SQL注入漏洞利用代码
- JQuery文件上传插件uploadify在MVC中Session丢失的解决方案
- Java中的Stringbuffer类解析
- MySQL重置密码与远程连接权限问题
- 关于Google指令(别提baidu)
- Unity3D游戏开发最佳实践20技能(两)
- Github 开源:高效好用的对象间属性拷贝工具:升讯威 Mapper( Sheng.Mapper)
- c#监测电脑状态
- java,http的post和get
- 周一02.3运行python程序的两种方式
- const与#define相比有什么不同?
- 获取各种编码(Unicode,UTF8等)的识别符
- .36-浅析webpack源码之Parser类
- 【Android】Scroller分析
- SpringMVC自定义视图Excel视图和PDF视图
- Bootstrap 3.0的扁平化来了
热门文章
- 20个 CSS 快速提升技巧
- (4)puppet常用的资源及其常用属性
- 不难懂-----Mock基本使用
- 【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.
- NGINX的动静分离;什么是负载均衡
- Spring系列9:基于注解的Spring容器配置
- Typora + picgo + Chevereto 优雅地上传图片
- JavaScript之ES6常用新特性
- webStorm关于ESlint6语法格式化解决方案
- ApacheCN Python 译文集 20211108 更新