当前位置: 首页 > news >正文

摄像网站建设山西建设厅八大员查询网站

摄像网站建设,山西建设厅八大员查询网站,商务网站的功能和建设,室内设计怎么样算法-递归 教程: ⭐告别递归,谈谈我的一些经验 LeetCode刷题总结-递归篇 基础框架 leetcode刷题 1.leetcode-101. 对称二叉树-简单 101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。…

算法-递归

教程:

⭐告别递归,谈谈我的一些经验

LeetCode刷题总结-递归篇

基础框架

leetcode刷题

1.leetcode-101. 对称二叉树-简单

101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。1/ \2   2/ \ / \
3  4 4  3
但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:1/ \2   2\   \3    3
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def isMirror(self,t1,t2):if not t1 and not t2:return Trueif not t1 or not t2:return Falsereturn t1.val == t2.val and self.isMirror(t1.right,t2.left) and self.isMirror(t1.left,t2.right)def isSymmetric(self, root: TreeNode) -> bool:# 递归算法if not root:return Truereturn self.isMirror(root.left,root.right)'''# 非递归: BFS判断当前层元素是否为对称res = []if not root:return Truequeue = [root]row = 1while queue:line_res = []queue_size = len(queue)# 将当前队列元素向四周扩散for i in range(queue_size):curNode = queue.pop(0)# 划重点: 判断是否到达终止if curNode:line_res.append(curNode.val)queue.append(curNode.left)queue.append(curNode.right)else:line_res.append('null')# 判断当前层是否符合镜像二叉树要求if len(line_res) % 2 != 0 and row != 1: return Falseback = line_res[::-1]if line_res != back:return Falserow += 1 return True'''

2.剑指 Offer 24. 反转链表-简单

剑指 Offer 24. 反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
  • python 递归方法:
    在这里插入图片描述
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def reverseList(self, head: ListNode) -> ListNode:if head == None or head.next == None:return head# 递归子链表# 下层递归返回值cur = self.reverseList(head.next)head.next.next = headhead.next = Nonereturn cur
  • python迭代方法:
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def reverseList(self, head: ListNode) -> ListNode:if not head:return None        pHead = headpTmp1 = head# 下面两条顺序不能变化,否则就会报错; pHead = pHead.nextpTmp1.next = Nonewhile pHead:# 原则: 两前1后指针pTmp2 = pHead.nextpHead.next = pTmp1pTmp1 = pHeadpHead = pTmp2return pTmp1

3.leetcode-25. K 个一组翻转链表

25. K 个一组翻转链表难度困难639收藏分享切换为英文关注反馈给你一个链表,
每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
示例:
给你这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5

思路: 使用 递归的思路:

递归思维:k 个一组反转链表

在这里插入图片描述
python实现:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = Noneclass Solution:def reverseKGroup(self, head: ListNode, k: int) -> ListNode:# 翻转区间[a, b) 的元素, 注意是 左闭右开。  def reverse(a, b):pre = ListNode()cur = anxt = a# while终止条件变成 != bwhile cur != b:    nxt = cur.nextcur.next = prepre = curcur = nxt# 反转后的头节点return preif not head:return Nonea = b = headfor i in range(k):if not b:return headb = b.next# 返回z反转后的头节点newHead = reverse(a, b)# a: 反转之前的头节点, 然后把 反转后的 下一次的头节点拼起来a.next = self.reverseKGroup(b, k)return newHead
http://www.yayakq.cn/news/575004/

相关文章:

  • 上传网站图片处理江门网站建设联系电话
  • 万维网网站域名续费蛋糕店网站建设
  • 小型企业网站建设方案现代广告创意设计
  • 券优惠网站如何做嘉兴模板建站定制
  • 网站弹窗广告怎么做做网站用的主机多少合适
  • 商务网站开发seo深度优化外包
  • 天门市城市建设管理局网站seo研究中心道一老师
  • 网站建设平台推荐文件大小 wordpress
  • 自己在百度上可以做网站吗c语言 做网站
  • 新手有关网站建设需要看哪些书雷山网站建设
  • 网站开发文档要求wordpress写文章500
  • 商洛市商南县城乡建设局网站北京企业名录一览表
  • 搜狐最大的门户网站长春 万网 网站建设
  • 思明区建设局网站建筑公司的愿景和使命
  • 网站内容与栏目设计免费发广告的软件
  • 可信网站验证多少钱建设网站需要购买虚拟主机吗
  • 郑州做网站的论坛网站制作要用哪些软件
  • 本地wordpress无法打开网站建筑设计方案怎么做
  • 网站建设需要内容网站升级改版的目的
  • 网站建设与管理怎么做开封美食网站建设规划
  • 自己如何建企业网站自适应网站模板源码
  • 企业网站设计怎么做营销网站推广策略
  • 网站制作哪些公司制作淮南网上房地产
  • 上海免费网站建设品牌百度广告竞价
  • 北京学做网站网站建设整个流程图
  • 营销型网站建设的步骤流程是什么代驾平台
  • 查询做导员的网站网页设计制作大作业
  • 电脑上做网站的软件高定网站
  • 做家电网站好免费网站建设的基本流程
  • 企业建站项目河南便宜网站建设费用