研究生已經(jīng)上了四個(gè)月有余傍念,終于決定要寫點(diǎn)東西了。
以往覺得寫作和我的生活肯定沒有任何交集惕医。但是最近通過和朋友的交流加上自己對(duì)生活的一些感悟意鲸,讓我覺得烦周,記錄生活中的點(diǎn)點(diǎn)滴滴是每個(gè)人生命的義務(wù)之一。不管是知識(shí)怎顾,或是生活中的小感悟读慎,它們都不僅能夠讓我們得到溫故而知新的感覺,更能讓自己在記錄這件事本身不經(jīng)意間得到某種意義的升華槐雾。
我選擇從最近一直在做的一件事開始夭委,那就是刷Leetcode上的題目∧记浚總的來說株灸,這個(gè)程序員人盡皆知的網(wǎng)站上的題目,有難有易擎值,有些讓人絞盡腦汁慌烧,有些也能很快解出來。但是很大一部分時(shí)間鸠儿,我是從別人那里汲取到智慧的養(yǎng)分屹蚊,然后拍案叫絕而題解的厕氨。今天寫這些東西,是因?yàn)槲蚁M乙材芎荛_心地做一個(gè)傳遞者汹粤,把Eureka的瞬間傳遞給盡量多的人命斧,同時(shí)也讓自己回顧之前的一些東西,避免遺忘嘱兼,也方便以后自己查找国葬。那么,現(xiàn)在開始吧芹壕。
(一部分程序用python汇四,一部分用java,按照題號(hào)來)
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)前訪問元素的值)作為字典的key挨厚,當(dāng)前的index作為該key的value堡僻。同時(shí),如果訪問到的元素已經(jīng)在字典中作為key存在疫剃,說明這個(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ì)介紹牲阁。