1. 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
[Shell] 纯文本查看 复制代码 给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
第一种解法:
[Python] 纯文本查看 复制代码 class Solution(object):
def twoSum(self, nums, target):
if len(nums) < 2:
return
for i in range(0, len(nums) - 1):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
nums = [2, 7, 11, 15]
s = Solution()
第二种解法:
[AppleScript] 纯文本查看 复制代码 def solution(nums, target):
# 新建立一个空字典用来保存数值及其在列表中对应的索引
dict1 = {}
# 遍历一遍列表对应的时间复杂度为O(n)
for i in range(0, len(nums)):
# 相减得到另一个数值
num = target - nums[i]
# 如果另一个数值不在字典中,则将第一个数值及其的索引报错 在字典中
# 因为在字典中查找的时间复杂度为O(1),因此总时间复杂度为O(n)
if num not in dict1:
dict1[nums[i]] = i
# 如果在字典中则返回
else:
return [dict1[num], i]
nums = [2, 7, 11, 15]
print(solution(nums, 26))
2.给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
[Python] 纯文本查看 复制代码 class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
len_str=len(s)
#存储所有非重复子序列的长度
final_len=[]
#对序列进行遍历,未重复时进行字符串的拼接,重复时跳出拼接,进行下一轮的遍历
for i in range(len_str):
data1=s[i]
for j in range(i+1,len_str):
if s[j] not in data1:
data1=data1+s[j]
else:
break
final_len.append(len(data1))
#判断当存储的非重复子序列为空时,s是为空格,为空格字符时,非重复字符长度为1,为空字符时,非重复的字符长度为0
if final_len==[]:
if s=='':
final_len.append(0)
else:
final_len.append(1)
return(max(final_len))
s = Solution()
print(s.lengthOfLongestSubstring("chenze"))
|