1. 两数之和
def twoSum(self, nums, target):
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j]==target:
return i,j
2. 两数相加
def addTwoNumbers(self,l1,l2):
# 创建一个结点值为 None 的头结点, dummy 和 p 指向头结点, dummy 用来最后返回, p 用来遍历
dummy=p=ListNode(None)
# 初始化进位 s 为 0
s=0
while l1 or l2 or s:
# 如果 l1 或 l2 存在, 则取l1的值 + l2的值 + s(s初始为0, 如果下面有进位1, 下次加上)
s+=(l1.val if l1 else 0)+(l2.val if l2 else 0)
# p.next 指向新链表, 用来创建一个新的链表
p.next=ListNode(s%10)
# p 向后遍历
p=p.next
# 有进位情况则取模, eg. s = 18, 18 // 10 = 1
s//=10
# 如果l1存在, 则向后遍历, 否则为 None
l1 = l1.next if l1 else None
# 如果l2存在, 则向后遍历, 否则为 None
l2 = l2.next if l2 else None
# 返回 dummy 的下一个节点, 因为 dummy 指向空的头结点, 下一个节点才是新建链表的后序节点
return dummy.next
3. 无重复字符的最长子串
def lengthOfLongestSubstring(self, s):
k=len(s)
for i in range(len(s)):
for j in range(i+1,k):
if s[i]!=s[j]:
continue
else:
k=j
break
return k
4. 寻找两个正序数组的中位数
def findMedianSortedArrays(self, nums1, nums2):
list=[]
for i in range(len(nums1)):
list.append(nums1[i])
for j in range(len(nums2)):
list.append(nums2[j])
print(list)
list.sort()
print(list)
if (len(list)%2)==0:
return (list[len(list)/2-1]+list[len(list)/2])/2.0
else:
return list[len(list)//2]
5. 最长回文子串
def longestPalindrome(self, s):
list=[]
for i in range(len(s)):
if s[i]==s[len(s)-i-1]:
list.append(s[i:len(s)-i])
continue
return max(list)
7. 整数反转
def reverse(self, x):
num=[]
i=0
while x:
num.append(x % 10)
x= x / 10
i = i + 1
s=0
for i in range(len(num)):
s = s + num[i]*10**(len(num)-i-1)
return s