1)两数之和
# 两数之和
def two_sum(nums, target):
d = {} # 边检查边写
n = len(nums)
for i in range(n):
a = target - nums[i]
if nums[i] in d:
return [d[nums[i]], i]
else:
d[a] = i
2)两数相加
看不懂LeetCode上面的
class ListNode(object):
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 is None:
return l2
if l2 is None:
return l1
tmp = ListNode(0)
res = tmp
flag = 0
while l1 or l2:
tmpsum = 0
if l1:
tmpsum = l1.val
l1 = l1.next
if l2:
tmpsum = tmpsum + l2.val
l2 = l2.next
tmpres = ((tmpsum + flag) % 10) # 取加后的个位数
flag = (tmpsum + flag) // 10 # 0 或者 1
res.next = ListNode(tmpres)
res = res.next
if flag:
res.next = ListNode(1)
res = tmp.next
del tmp
return res
3)无重复字符的最长子串
参考:https://blog.csdn.net/qq_17550379/article/details/80547777
def lengthOfLongestSubstring(s):
max_length = 0
for i, _ in enumerate(s):
count = 0
used_string = ''
for j in s[i:]:
if j not in used_string:
used_string += j
count += 1
if max_length < count:
max_length = count
print(used_string)
else:
break
return max_length