2、两个数相加
class ListNode():
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def addTwoNumbers(self, l1, l2):
head = ListNode(0)
cur = head
sum = 0
while l1 or l2:
if l1:
sum += l1.val
l1 = l1.next
if l2:
sum += l2.val
l2 = l2.next
cur.next = ListNode(sum % 10)
cur = cur.next
sum = sum // 10
if sum != 0:
cur.next = ListNode(sum)
return head.next
4、寻找两个正序的中位数
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
m = len(nums1)
n = len(nums2)
num = nums1 + nums2
num.sort()
if (m+n) % 2:
return float(num[len(num)//2])
else:
return float( (num[len(num)//2] + num[len(num)//2-1]) / 2)
5、最长回文子串
class Solution:
def longestPalindrome(self, s: str) -> str:
if s == None:
return None
length = len(s)
if length <= 1:
return s
dp = [[0 for i in range(length)] for i in range(length)]
ss = s[0]
re = 1
for i in range(0,length):
for j in range(0,i+1):
if i-j<=1:
if s[j]==s[i]:
dp[j][i]=1
if re < i-j+1:
ss = s[j:i+1]
re = i-j+1
else:
if s[j]==s[i] and dp[j+1][i-1]:
dp[j][i]=1
if re < i-j+1:
ss = s[j:i+1]
re = i-j+1
return ss
博客给出了LeetCode中三道经典算法题的代码实现。包括两个数相加,通过链表操作实现;寻找两个正序数组的中位数,合并排序后计算;最长回文子串,使用动态规划方法求解。
1954

被折叠的 条评论
为什么被折叠?



