leetcodepython_LeetCode答案(python)1-17
1.给定⼀个整数数组和⼀个⽬标值,出数组中和为⽬标值的两个数。
你可以假设每个输⼊只对应⼀种答案,且同样的元素不能被重复利⽤。
⽰例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
class Solution:
def twoSum(self, nums, target):
"""
:type nums: List[int]
:
type target: int
:rtype: List[int]
"""
for i in nums:
for j in range(nums.index(i) + 1, len(nums)):
if i + nums[j] == target:
return (nums.index(i),j)
2.给定两个⾮空链表来表⽰两个⾮负整数。位数按照逆序⽅式存储,它们的每个节点只存储单个数字。将两数相加返回⼀个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。
⽰例:
输⼊:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
# class ListNode:
# def __init__(self, x):
# self.val = x
# = None
#
#
# class Solution:
# # @return a ListNode
# def addTwoNumbers(self, l1, l2):
# if l1 is None:
# elif l2 is None:
# return l1
# else:
# carry = 0
# ret = ListNode(0)
# ret_Last = ret
#
# while (l1 or l2):
# sum = 0
# if (l1):
# sum = l1.val
# l1 = l1.next
# if (l2):
# sum += l2.val
# l2 = l2.next
# sum += carry
# = ListNode(sum % 10)
# ret_Last =
# carry = (sum >= 10)
# if (carry):
# = ListNode(1)
# ret_Last =
# del ret
# return ret_Last
3.给定⼀个字符串,出不含有重复字符的最长⼦串的长度。
⽰例:
给定 "abcabcbb" ,没有重复字符的最长⼦串是 "abc" ,那么长度就是3。
给定 "bbbbb" ,最长的⼦串就是 "b" ,长度是1。
给定 "pwwkew" ,最长⼦串是 "wke" ,长度是3。请注意答案必须是⼀个⼦串,"pwke" 是 ⼦序列⽽不是⼦串。# class Solution:
# def lengthOfLongestSubstring(self, s):
# """
# :type s: str
# """
# Num = 0
# for j in range(0, len(s)):
# ns = ''
# for i in s[j:]:
# if i not in ns:
# ns = ns + i
# num = len(ns)
# else:
# break
#
# if num > Num:
# Num = num
#
# return Num
4.给定两个⼤⼩为 m 和 n 的有序数组 nums1 和 nums2 。
请出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。⽰例 1:
nums1 = [1, 3]
nums2 = [2]
中位数是 2.0
⽰例 2:
nums1 = [1, 2]
nums2 = [3, 4]
中位数是 (2 + 3)/2 = 2.5
# class Solution:
# def findMedianSortedArrays(self, nums1, nums2):
# """
# :type nums1: List[int]
# :type nums2: List[int]
# :rtype: float
# """
# length1 = len(nums1)
# length2 = len(nums2)
# total = length1 + length2
# print(total)
#
# alist = []
# while len(nums1) and len(nums2):
# if nums1[0] < nums2[0]:
# alist.append(nums1.pop(0))
# else:
# alist.append(nums2.pop(0))
# if nums1:
# alist += nums1
# else:
# alist += nums2
# print(alist)
# if total % 2 == 0:
# half = int(total / 2)
# return (alist[half] + alist[half-1])/2
# else:
# half = int(total // 2)
# return alist[half]
5.给定⼀个字符串 s,到 s 中最长的回⽂⼦串。你可以假设 s 的最⼤长度为1000。⽰例 1:
输⼊: "babad"
输出: "bab"
注意: "aba"也是⼀个有效答案。
⽰例 2:
输⼊: "cbbd"
输出: "bb"
class Solution:
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
s='#'+'#'.join(s)+'#'
ff = 0
RL=[0]*len(s)
MaxRight=0
pos=0
MaxLen=0
for i in range(len(s)):
if i
RL[i]=min(RL[2*pos-i], MaxRight-i)
else:
RL[i]=1
#尝试扩展,注意处理边界
while i-RL[i]>=0 and i+RL[i]
RL[i]+=1
#更新MaxRight,pos
if RL[i]+i-1>MaxRight:
MaxRight=RL[i]+i-1
pos=i
#更新最长回⽂串的长度
# MaxLen=max(MaxLen, RL[i])
ss = s[i - RL[i] + 1:i + RL[i]]
ff = max(len(ss), ff)
if len(ss) >= ff:
python正则表达式不包含
a = ss
a = a.replace('#','')
return a
6. 将字符串 "PAYPALISHIRING" 以Z字形排列成给定的⾏数:P A H N
A P L S I I G
Y I R
之后从左往右,逐⾏读取字符:"PAHNAPLSIIGYIR"
实现⼀个将字符串进⾏指定⾏数变换的函数:
string convert(string s, int numRows);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论