摘要:兩個(gè)循環(huán)嵌套暴力計(jì)算時(shí)間復(fù)雜度達(dá)到了兩個(gè)指針首尾并行時(shí)間復(fù)雜度這種方法可以滿足這道題的要求,因?yàn)轭}目中明確說(shuō)明了,但是當(dāng)答案不止一個(gè)時(shí),如為時(shí),就不能用這種方法了用到循環(huán)遍歷數(shù)組,對(duì)每個(gè)元素計(jì)算和的差,如果該差在中,返回兩個(gè)位置,如果該差不
Easy 001 Two Sum Description:
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.My Solution:
==Example==
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].
兩個(gè)for循環(huán)嵌套暴力計(jì)算
時(shí)間復(fù)雜度達(dá)到了O(n2)
兩個(gè)指針首尾并行
時(shí)間復(fù)雜度O(n)
這種方法可以滿足這道題的要求,因?yàn)轭}目中明確說(shuō)明了each input has exactly one solution,但是當(dāng)答案不止一個(gè)時(shí),如input為[2,2,7,11,15]時(shí),就不能用這種方法了
Fast Solution:
用到HashMap
for循環(huán)遍歷數(shù)組,對(duì)每個(gè)元素計(jì)算和target的差,如果該差在map中,返回兩個(gè)位置,如果該差不在map中,則將該元素及其位置保存在map中
時(shí)間復(fù)雜度O(n)
public int[] twoSum(int[] nums, int target) { if (nums.length < 2) return new int[0]; MapKnowledgemap = new HashMap<>(); for (int i = 0; i < nums.length; i++) { int diff = target - nums[i]; if (map.containsKey(diff)) return new int[]{i, map.get(diff)}; map.put(nums[i], i); } return new int[0]; }
HashMap
以(key, value)形式存儲(chǔ)
無(wú)序
每一次的存取都是通過(guò)計(jì)算一個(gè)hash function獲得這個(gè)key的unique hash值, 這部分是O(1)的,正常情況下使用HashMap的時(shí)間復(fù)雜度就是O(1),但是如果有collision的話,就是兩個(gè)key算出來(lái)的hash值是一樣的,那就是linear 的complexity, 因?yàn)橐粋€(gè)key里面有兩個(gè)值, 所以worst的情況O(n)
空間復(fù)雜度:每多一對(duì)(key, value)就要分配一個(gè)空間,所以是O(n)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/74246.html
摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...
摘要:自己沒(méi)事刷的一些的題目,若有更好的解法,希望能夠一起探討項(xiàng)目地址 自己沒(méi)事刷的一些LeetCode的題目,若有更好的解法,希望能夠一起探討 Number Problem Solution Difficulty 204 Count Primes JavaScript Easy 202 Happy Number JavaScript Easy 190 Reverse Bi...
摘要:原題描述題目意思從數(shù)組中找出返回和在數(shù)組中的位置數(shù)組中一定存在和相加等于,并且和不能相等解法因?yàn)榭隙ㄓ薪?,且值不一樣,所以?shù)組只有兩個(gè)值的時(shí)候這兩個(gè)值就為解判斷對(duì)象是否有一個(gè)為對(duì)象的是原來(lái)數(shù)組的值,是該值的位置其實(shí)思路就是然后返回和對(duì)應(yīng)的 原題描述: Given an array of integers, return indices of the two numbers such t...
摘要:解法返回目錄解題代碼執(zhí)行測(cè)試解題思路使用雙重循環(huán)破解。解法返回目錄解題代碼執(zhí)行測(cè)試知識(shí)點(diǎn)遍歷數(shù)組,返回遍歷項(xiàng),返回當(dāng)前索引。 Create by jsliang on 2019-05-16 22:19:13 Recently revised in 2019-05-17 14:22:40 Hello 小伙伴們,如果覺(jué)得本文還不錯(cuò),記得給個(gè) star , 小伙伴們的 star 是我持續(xù)更新的動(dòng)...
摘要:難度就是說(shuō)給一個(gè)整數(shù)數(shù)組如給一個(gè)目標(biāo)數(shù)字如從數(shù)組中找出相加為這個(gè)目標(biāo)數(shù)字的兩個(gè)數(shù)的下標(biāo)就返回的下標(biāo)只需要給出滿足條件的一對(duì)數(shù)字即可這個(gè)題想起來(lái)比較直接此處給出兩種解法這之后的題目中還有多個(gè)數(shù)字相加的相對(duì)較難的題目第一種將數(shù)組排序以兩個(gè)游標(biāo) Two Sum Given an array of integers, return indices of the two numbers suc...
閱讀 2357·2023-04-25 16:42
閱讀 1245·2021-11-22 14:45
閱讀 2374·2021-10-19 13:10
閱讀 2850·2021-09-29 09:34
閱讀 3445·2021-09-23 11:21
閱讀 2136·2021-08-12 13:25
閱讀 2241·2021-07-30 15:15
閱讀 3514·2019-08-30 15:54