LeetCode Two Sum时间复杂度O(n)解法尝试版本1
来源:互联网 发布:2014十大网络用语 编辑:程序博客网 时间:2024/06/03 19:13
题目如下:
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, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].
第一版解法尝试
//此版解法忽略了nums中元素值存在小于0 的可能,导致使用了非法下标//即是说此种解法是假设nums中全部元素均是大于0的情况下进行的,知道了这个假设之后可以帮助理解算法思想//思路的核心是将知晓target找下标转化为查看和为target的两数是否存在class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<unsigned int> HashTable(target + 1);//+1是为了将target本身也进行判断,因为nums中可能出现一个target与一个0 vector<int> ret(2); for(unsigned int i = 0; i < nums.size(); i++) //"排序",vector及数组等连续存储的容器下标永恒有序 { if( nums[i] <= target )//由于未考虑负数的情况,只有小于等于target的两数才有可能相加为target HashTable[nums[i]] = i;//记录nums[i]的下标 }//由于HashTable的下标是nums中的元素且target是nums中两数和,因此只要HashTable[i]与HashTable[target - i]同时存在,则找到待求 for(unsigned int i = 0; i <= target; i++) {//特殊情况处理,处理nums[i]与i一致或nums[i]为target-i的情况,比如,nums[0] 为 0且nums[target]为target或 nums[target] 为 0且nums[0]为targe情况 if( i == HashTable[i] && HashTable[target - i] == (target - i) || i == HashTable[target - i] && HashTable[i] == (target - i)) { ret.push_back(i); ret.push_back(target - i);break; } if( HashTable[i] > 0 && HashTable[target - i] > 0 ) //解决一般性情况 { ret.push_back(i); ret.push_back(target - i);break; } } return ret; }};
阅读全文
0 0
- LeetCode Two Sum时间复杂度O(n)解法尝试版本1
- Leetcode 234 Palindrome Linked List 复杂度为时间O(n) 和空间(1)解法
- 约瑟夫环时间复杂度O(n)解法
- 青蛙跳台阶解法 时间复杂度O(n) 空间复杂度O(1)
- 字符串移动k位的时间复杂度o(n)空间复杂度o(1)的解法
- [leetcode]leetcode第一题 1. Two Sum java O(n)解法
- leetCode & hihocoder:最长回文子字符串时间复杂度为O(N)解法
- leetCode & hihocoder:最长回文子字符串时间复杂度为O(N)解法
- Leetcode-Median of Two Sorted Arrays 时间复杂度O(M+N)
- 数组中只出现一次的数字,时间复杂度O(n),空间复杂度O(1)的解法
- Candy [leetcode] O(n)时间复杂度,O(1)空间复杂度的方法
- Candy [leetcode] O(n)时间复杂度,O(1)空间复杂度的方法
- 时间复杂度O(n),空间复杂度O(1)的排序
- 时间复杂度为O(n),空间复杂度为O(1)
- O(N)时间复杂度、O(1)空间复杂度 构造数组
- [LeetCode] 3Sum的O(N^2)解法
- Leetcode 238 Product of Array Except Self 时间O(n)和空间O(1)解法
- Two Sum Leetcode 解法实现
- IT第一定律——Moore ‘s law
- 父进程利用fork()函数创建子进程并且利用shared_memory进行通信的实例
- 关于12864如何显示八行的问题
- NYOJ 19
- 讲一些对于页面布局以及html的理解
- LeetCode Two Sum时间复杂度O(n)解法尝试版本1
- listener.ora
- js模板引擎artTemplate快速上手
- 第26章 站在巨人肩膀上——游戏引擎技术导论
- maven项目导入:Failed to read candidate component class: file
- 最近有朋友问我 什么平台的BTC 可以用FIX API 平台不错的请推荐谢谢
- Python数据可视化(matplotlib库)
- React click toggle
- Java反射