介紹算法
越往基礎和底層學習,就愈加的發現數據結構和算法的魅力,這些曾經在大學時候極爲討厭的兩門枯燥乏味的學科,想不到現在也會慢慢的開始喜歡,因此從今天開始試着刷刷Leetcode的題目,雖然上班後的時間並不寬鬆,但只要像寫博文同樣,堅持下來,哪怕一天刷一道題,或者幾天刷一道題 我相信總有會讓人欣慰的收穫!sql
對於Leetcode網上已經有不少出色的解題思想和博文,因此我寫博客的更多初衷是爲了本身養成學習中不斷記錄的習慣,也但願在之後忘記的時候能夠拿出來翻翻看。shell
Leetcode是國外的一個網站,提供算法、sql、shell性能的題庫測試,基本上在國外的大公司都必需要求的門檻,如今算法題總共有343道題目,爲了提升自身水平,我也嘗試着學習學習,但願本身愈來愈厲害,哈哈,有興趣的你們一塊兒刷。還能夠討論討論 交換思路。數組
題目:數據結構
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.性能
Example:學習
Given nums = [2, 7, 11, 15], target = 9,測試
Because nums[0] + nums[1] = 2 + 7 = 9,網站
return [0, 1].
UPDATE (2016/2/13): The return format had been changed to zero-based indices. Please read the above updated description carefully.
解題:new Map<Integer,Integer>(),迭代nums數組元素,檢查當前Index元素是否在Map中,若是在返回value與當前Index的數組,若是不在使用target
減去當前元素
,而後把差放到map中(map.put(差,當前Index);
public class Solution {
public int[] twoSum(int[] nums, int target) {
if(nums==null||nums.length==0)return null;
Map<Integer,Integer> temp=new HashMap<Integer,Integer>();
int[] result=new int[2];
for(int i=0;i<nums.length;i++){
int num=nums[i];
if(temp.containsKey(num)){
result[0]=temp.get(num);
result[1]=i;
return result;
}
int substract= target-num;
temp.put(substract,i);
}
return null;
}
}
複雜度:O(n)的時間,O(n)的內存
測試結果:
思惟發散:大夥能觸類旁通的想到其餘相似結果嗎?
注:版權全部轉載請註明出處http://my.oschina.net/ambitor/blog/662408,做者:Ambitor