1、两数之和(Two Sum)
题目描述:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
代码:
class Solution(object):
def twoSum(self,nums,target):
if len(nums)<=1:
return Flase
else:
dict={}
for i in range(len(nums)):
if nums[i] in dict:
return[dict[nums[i]],i]
else:
dict[target-nums[i]]=i# target-nums[i]为key
解析: 利用一个字典,它的key是当前遍历的值与target相差多少,value是当前值得索引。在遍历数组时候,每当遍历到一个值时就查看与target的差值在不在字典中,如果在就返回当前索引,不在就把[差值,索引]记录。
3、无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 :
输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其 长度为 3。
代码:
思路:用hash表来做,判断一个字母是否在表里面,不在ans就加1,在就让指针i指向最后一个出现的相同字母。维护ans的值
class Solution:
def lengthOfLongestSubstring(self, s):
"""
:type s: str
:rtype: int
"""
st={}
i,ans=0,0
for j in range(len(s)):
if s[j] in st:
i=max(st[s[j]],i)
ans=max(ans,j-i+1)
st[s[j]]=j+1
return ans