求无序数组中两元素相加等于特定值的索引
来源:互联网 发布:mac pro 支持pcie ssd 编辑:程序博客网 时间:2024/05/16 17:11
/*********************************************************************************************************description:给定一个无序数组和一个数,要求返回数组中两元素相加等于这个数的索引,且第一个索引小于第二个** 如:Input: a={2, 7, 11, 15},target=9 Output: index1=1, index2=2********************************************************************************************************///如果是直接两层循环进行查找,时间复杂度是O(n^2),太耗时,不采用该方法;//由于要求返回索引,所以就不能先排序时间复杂度(O(nlogn)),再左右夹逼(时间复杂度O(n)),总的时间复杂度O(nlogn)//把数组元素和下标存入哈希中,从前遍历元素,然后从哈希中查找data-a[i],哈希查找时间复杂度为O(1),所以总体时间复杂度为O(n)#include<iostream>#include<vector>#include<unordered_map>using namespace std;vector<int> twoSum(const vector<int> &arr, int target){ vector<int> result; if (arr.size() < 2) return result; unordered_map<int, int> cache; for (int i = 0; i < arr.size(); i++) { cache[arr[i]] = i; } for (int i = 0; i < arr.size(); i++) { int data = target - arr[i]; if (cache.find(data) != cache.end()) { if (cache[data] != i) { result.push_back(i); result.push_back(cache[data]); return result; } } } return result;}
阅读全文
0 0
- 求无序数组中两元素相加等于特定值的索引
- 求无序数组中三元素相加等于特定值的所有情况
- 求无序数组中四元素相加等于特定值的所有情况
- 数组中相加之和等于特定值的元素
- java 无序数组中两个元素相加等于指定的数 o(n)
- 求无序数组中三个元素相加与目标数最接近的三元素之和
- 求数组中两两元素相加等于20的组合种数
- 找出数组中相加之和等于特定值的四个数
- 求数组中多个数相加等于某一值
- java求子集和,给定数组求这个数组中某些数字相加等于某个值的所有可能集合
- 求无序数组中第二小的元素
- 经典算法学习——快速找出数组中两个数字,相加等于某特定值
- 从一个数组中找出几个数,使其相加等于某个值的算法(数组元素可以重复)
- 求数组中两个元素加起来等于指定的数
- 求数组中若干个元素之和等于给定值
- LeetCode 1. Two Sum--数组中两元素相加为该数值,输出对应的两个索引
- 求数组中元素第一次出现的索引值
- PHP删除数组中特定元素的两种方法
- 验证码mob集成&本地验证生成&短信截获
- 谈谈HPC可否掀起下一轮技术热潮
- Java基础——ConcurrentHashMap源码分析
- JAVA反射机制案例解析
- lambda
- 求无序数组中两元素相加等于特定值的索引
- CAM350 导出SMT坐标文件
- Kmeans算法详解及MATLAB、Python实现
- 八大排序
- 音视频数据处理(17)--- H.264的NAL层数据单元NALU
- JAVA虚拟机规范读书笔记--class文件结构及数据类型
- [UIKeyboardLayoutStar release] && [UIKeyboardTaskEntry dealloc]
- java中main函数解析
- Java线程Executor框架详解与使用