国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

每天一題LeetCode [第二天]

2019-11-11 07:25:24
字體:
供稿:網(wǎng)友

每天一題LeetCode[第二天]


ToSum

Description:

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

Example:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

解題過程:

首先題意十分簡單易懂,給你一個(gè)整數(shù)類型的數(shù)組,在給你一個(gè)整數(shù)target,找出相加等于target的兩個(gè)數(shù)的indices。

第一個(gè)思路就是窮舉查找滿足條件的兩個(gè)數(shù),時(shí)間復(fù)雜度o(n^2),這是誰都能想到的思路,最好的結(jié)果肯定不是這樣。優(yōu)化:基于這樣的思路,去除不可能的結(jié)果把數(shù)組中大于target的數(shù)去掉 減少n的值,但是這種復(fù)雜度也是o(n^2) 在細(xì)想,發(fā)現(xiàn),只要基于這樣的思想是沒辦法繼續(xù)優(yōu)化的。必須發(fā)現(xiàn)target 與兩個(gè)結(jié)果 之間的特殊關(guān)系。

看了top solution 真是佩服!怎么說呢,這樣吧,a+b=c 那么如果說對于nums來說,在遍歷過程中能提前知道每個(gè)數(shù)字相對于c的補(bǔ)數(shù),并且知道這個(gè)數(shù)的下表,那么這一切就很簡單了。 因?yàn)槭莂+b=c 所以不用擔(dān)心一次循環(huán)會(huì)錯(cuò)過結(jié)果,因?yàn)橐欢〞?huì)經(jīng)過a 和b的。 當(dāng)經(jīng)過a的時(shí)候 就記錄下b的值 和 a的下標(biāo) 這樣在經(jīng)過b的時(shí)候就知道 喔這就是我要的答案。 細(xì)想了一下,就是讓每一步計(jì)算 的結(jié)果都有意義,相比于第一個(gè)結(jié)果很明顯的是,第一種思路 ,每一步的計(jì)算意義都是為了從總的可能數(shù)中減去一,或者可以這樣說,每一步的計(jì)算 之間關(guān)聯(lián)不大,所以每一步的計(jì)算都顯得繁瑣。而第二種的思路,把每一步的計(jì)算的信息保存下來,對下一次的計(jì)算都起到了極大的幫助,大大簡化了計(jì)算量。

top solution對java集合類很熟悉,運(yùn)用了map的數(shù)據(jù)結(jié)構(gòu)特點(diǎn)(索引快,),雖然增加了存儲(chǔ)空間,但是時(shí)間復(fù)雜度在這個(gè)時(shí)代才是關(guān)鍵。


Java代碼:

public class TwoSum { PRivate static final String TAG = TwoSum.class.getSimpleName(); public static void main(String[] agrs) { int[] nums = {2, 5, 3, 6}; int target = 5; int[] result =toSum(nums,target); System.out.println("result 1 :"+result[0]+" 2: "+result[1]); } public static int[] toSum(int[] nums, int target) { if (null == nums) { return null; } HashMap<Integer, Integer> pair = new HashMap<>(); int[] result = new int[2]; for (int i = 0; i < nums.length; i++) { if (pair.containsKey(nums[i])) { result[0] = pair.get(nums[i]); result[1] = i; } else { pair.put(target - nums[i], i); } } return result; }}

提高代碼質(zhì)量就是:每天積累精美的思路,優(yōu)質(zhì)的細(xì)節(jié)的過程。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 丁青县| 长子县| 榕江县| 多伦县| 克山县| 东至县| 长子县| 固始县| 南皮县| 海晏县| 唐山市| 兴业县| 肃北| 广平县| 盐池县| 瓮安县| 高台县| 潼关县| 资阳市| 祁门县| 本溪| 株洲市| 阜城县| 桐庐县| 洪江市| 玉屏| 横峰县| 彭阳县| 疏附县| 宜阳县| 青铜峡市| 翁牛特旗| 泾源县| 象山县| 阿巴嘎旗| 虹口区| 堆龙德庆县| 怀安县| 平定县| 凉城县| 东山县|