Leetcode解題報(bào)告1.Two sum

研究生已經(jīng)上了四個(gè)月有余,終于決定要寫(xiě)點(diǎn)東西了。

以往覺(jué)得寫(xiě)作和我的生活肯定沒(méi)有任何交集。但是最近通過(guò)和朋友的交流加上自己對(duì)生活的一些感悟,讓我覺(jué)得,記錄生活中的點(diǎn)點(diǎn)滴滴是每個(gè)人生命的義務(wù)之一。不管是知識(shí),或是生活中的小感悟,它們都不僅能夠讓我們得到溫故而知新的感覺(jué),更能讓自己在記錄這件事本身不經(jīng)意間得到某種意義的升華。

我選擇從最近一直在做的一件事開(kāi)始,那就是刷Leetcode上的題目??偟膩?lái)說(shuō),這個(gè)程序員人盡皆知的網(wǎng)站上的題目,有難有易,有些讓人絞盡腦汁,有些也能很快解出來(lái)。但是很大一部分時(shí)間,我是從別人那里汲取到智慧的養(yǎng)分,然后拍案叫絕而題解的。今天寫(xiě)這些東西,是因?yàn)槲蚁M乙材芎荛_(kāi)心地做一個(gè)傳遞者,把Eureka的瞬間傳遞給盡量多的人,同時(shí)也讓自己回顧之前的一些東西,避免遺忘,也方便以后自己查找。那么,現(xiàn)在開(kāi)始吧。

(一部分程序用python,一部分用java,按照題號(hào)來(lái))

1.Two Sum

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9

Output: index1=1, index2=2

大意給出一個(gè)數(shù)字target,并在一個(gè)數(shù)組里找到兩個(gè)數(shù)的加和正好等于target,并返回這兩個(gè)數(shù)所在的index(注意index要加1)。

這個(gè)題目最簡(jiǎn)單的解法就是建立一個(gè)字典,并循環(huán)數(shù)組中每個(gè)元素,把target - nums[i](當(dāng)前訪問(wèn)元素的值)作為字典的key,當(dāng)前的index作為該key的value。同時(shí),如果訪問(wèn)到的元素已經(jīng)在字典中作為key存在,說(shuō)明這個(gè)值正好等于之前target - nums[i]的值,返回兩個(gè)index即可。

# python code:


class Solution(object):

def twoSum(self, nums, target):

"""

:type nums: List[int]

:type target: int

:rtype: List[int]

"""

d = {}

for i in range(0,len(nums)):

  if nums[i] in d:

    return [d[nums[i]], i + 1]

  else:

    d[target - nums[i]] = i + 1

當(dāng)然這道題還有其他解法,在后面有3 sum,還有 3sum closest還會(huì)介紹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容