Leetcode Two Sum (java)
2018-06-18 03:04:42来源:未知 阅读 ()
解法一:
class Solution { public int[] twoSum(int[] nums, int target) { for (int i = 0; i < nums.length; i++) { for (int j = i + 1; j < nums.length; j++) { if( nums[i] + nums[j] == target ){ int[] result = new int[2]; result[0] = i; result[1] = j; return result; } } } return null; } }
使用了两层循环进行遍历,时间复杂度为O(n2)
解法二:
class Solution { public int[] twoSum(int[] nums, int target) { Hashtable<Integer,Integer> map = new Hashtable<Integer,Integer>(); for (int i = 0; i < nums.length; i++) { map.put(nums[i],i); } for (int i = 0; i < nums.length; i++) { int another = target - nums[i]; //过滤元素本身 if( map.get(another) != null &&map.get(another) > i ){ int[] result = new int[2]; result[0] = i; result[1] = map.get(another); return result; } } return null; } }
使用了哈希表进行查找,时间复杂度为O(n)
解法一使用的是顺序查找,时间复杂度为O(n)
解法二使用的是哈希查找,时间复杂度为O(1)
此外常用的查找:二分查找O(logn),二叉排序查找法O(logn),分块查找O(logn)
github地址:https://github.com/CyanChan/leetcode
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- LeetCode 287. 寻找重复数 2020-05-31
- LeetCode 5. 最长回文子串 2020-05-22
- LeetCode 21. 合并两个有序链表 2020-05-22
- LeetCode 面试题55 - I. 二叉树的深度 2020-05-22
- LeetCode 104. 二叉树的最大深度 2020-05-22
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash