Leetcode 1. Two Sum (java)

2018-03-02 08:31:37來源:cnblogs.com作者:CyanChan人點擊

分享

解法一:

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-Record

相關文章

    無相關信息

微信掃一掃

第七城市微信公眾平臺
捕鱼达人小游戏 分类赚钱工具 微理看看赚钱软件下载 大赢家彩票网址 挂机赚钱真实吗 在厦门跑滴滴怎么赚钱 激战2副职业那个赚钱 凤凰娱乐苹果 儿童乐园旁边开什么店赚钱 走步赚钱软件怎么加快 东北麻将二八是什么意思 沈阳买个校车赚钱吗 七彩娱乐苹果 夜里在网上干点什么能赚钱 怎样玩手绘板赚钱 光大彩票网址 开一家海鲜店赚钱吗