算法-练习2

题1

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

 

def sums(l1, l2):
if l1 != [0] and l2 != [0]:
l1_str = [str(i) for i in l1]
l2_str = [str(i) for i in l2]
str1 = ''.join(l1_str)
str2 = ''.join(l2_str)
sum = int(str1) + int(str2)
return [int(i) for i in str(sum)][::-1]
else:
return [0]


# a = [0]
# a = [2, 4, 3]
a = [9, 9, 9, 9, 9, 9, 9]

# b = [0]
# b = [5, 6, 4]
b = [9, 9, 9, 9]

print(sums(a, b))

"""
执行结果:
[8, 9, 9, 9, 0, 0, 0, 1]
"""

题2

   给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

 

示例 1:

输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:

输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
  请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串

def le(s):
dic = {}
i, nums = -1, 0
for j in range(len(s)):
if s[j] in dic:
i = max(dic[s[j]], i)

ans = max(nums, j-i)
dic[s[j]] = j
return nums


s = 'pwwkew'
print(le(s))


题3
寻找两个正序数组的中位数
def func(nums1, nums2):
nums1.extend(nums2)
nums1.sort()
num = len(nums1)
if num % 2 == 0:
i = int((num / 2) - 1)
k = i + 1
middle_num = (nums1[i] + nums1[k]) / 2
else:
j = int((num + 1) / 2)
middle_num = nums1[j-1]

return middle_num
 


posted @ 2023-03-14 16:34  zxy_ang  阅读(34)  评论(0)    收藏  举报