for 依次遍历字符串:
向左扩展直到字符不同,l-1>=0
向右扩展直到字符不同,r+1<=len(s)-1
(保证中间的字符一样)
l-1>=0 and r+1<=len(s)-1 and s[l-1]==s[r+1]
(保证左右字符相同)
如果 回文长度>max:
记录 l max
return s[l:l+max]
给你一个整数 n ,请你生成并返回所有由 n 个节点组成
且节点值从 1 到 n 互不相同的不同 二叉搜索树 。可以按 任意顺序 返回答案。
思路+代码
搜索二叉树:结点>左子树的数,结点<右子树的数
递归
for i in range(1,n+1):
依次求左,右子树的搜索二叉树
需要递归,不断的求搜索二叉树,直到为None
#Python
classSolution:
def generateTrees(self,n: int)-> List[TreeNode]:
def smallTrees(head, end):if head > end:return[None,]
Trees =[]for i inrange(head, end +1):
leftTrees =smallTrees(head, i -1)
rightTrees =smallTrees(i +1, end)for l inleftTrees:for r inrightTrees:
newTree =TreeNode(i)
newTree.left = l
newTree.right = r
Trees.append(newTree)return Trees
returnsmallTrees(1, n)if n else[]
96. 不同的二叉搜索树(中等)
题目
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树
有多少种?返回满足题意的二叉搜索树的种数。
输入:n = 3
输出:5
输入:n = 1
输出:1
5. 最长回文子串(中等)题目给你一个字符串 s,找到 s 中最长的回文子串。思路for 依次遍历字符串: 向左扩展直到字符不同,l-1>=0 向右扩展直到字符不同,r+1<=len(s)-1 (保证中间的字符一样) l-1>=0 and r+1<=len(s)-1 and s[l-1]==s[r+1] (保证左右字符相同) 如果 回文长度>max: 记录 l max return s[l:l+max]代码###Pythoncl