首页 > 剑指offer--day07

剑指offer--day07

1.1 题目:反转链表:输入一个链表,反转链表后,输出新链表的表头。

1.2 思路:这道题,我们要做到的是反转链表,我们的思路是将前一个节点与后一个节点断开,然后让后一个节点指向前一个节点,这个过程就需要节点引用(可以理解为指针)来确定记录当前操作节点的前一个节点和后一个节点。

1.3 代码:

 1 # -*- coding:utf-8 -*-
 2 # class ListNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.next = None
 6 class Solution:
 7     # 返回ListNode
 8     def ReverseList(self, pHead):
 9         # write code here
10         if not pHead or not pHead.next:
11             return pHead
12         last = None
13         while pHead:
14             tmp = pHead.next
15             pHead.next = last
16             last = pHead
17             pHead = tmp
18         return last

 

2.1 题目:合并两个排序列表:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

2.2 思路

  先判断输入的链表是否为空的指针。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,则直接返回第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。

  两个链表都是排序好的,我们只需要从头遍历链表,判断当前指针,哪个链表中的值小,即赋给合并链表指针即可。使用递归就可以轻松实现。

2.3 代码:

 1 # -*- coding:utf-8 -*-
 2 # class ListNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.next = None
 6 class Solution:
 7     # 返回合并后列表
 8     def Merge(self, pHead1, pHead2):
 9         # write code here
10         if not pHead1:
11             return pHead2
12         if not pHead2:
13             return pHead1
14         pMergeHead = None
15         if pHead1.val < pHead2.val:
16             pMergeHead = pHead1
17             pMergeHead.next = self.Merge(pHead1.next, pHead2)
18         else:
19             pMergeHead = pHead2
20             pMergeHead.next = self.Merge(pHead1, pHead2.next)
21         return pMergeHead

 

3.1 题目:树的子结构:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

3.2 思路:要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步在树A中找到和B的根结点的值一样的结点R,第二步再判断树A中以R为根节点的子树是不是包含和树B一样的结构。这里使用递归的方法即可。

 

3.3 代码:

 1 # -*- coding:utf-8 -*-
 2 # class TreeNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7 class Solution:
 8     def HasSubtree(self, pRoot1, pRoot2):
 9         # write code here
10         if pRoot1 == None or pRoot2 == None:
11             return False
12         return self.subtree(pRoot1, pRoot2) or self.HasSubtree(pRoot1.left, pRoot2) or self.HasSubtree(pRoot1.right, pRoot2)
13     def subtree(self, A, B):
14         if B == None:
15             return True
16         if A == None or A.val != B.val:
17             return False
18         return self.subtree(A.left, B.left) and self.subtree(A.right, B.right)

 

转载于:https://www.cnblogs.com/WJZheng/p/11231052.html

更多相关:

  • 这是我在stackoverflow上的第一个问题。我成功地安装了其他需要的包,如箭头,但我无法安装。jq. https:/pypi.orgprojectjq。我尝试安装 jq 在Win10上使用此命令(有代理限制,python 3.7.7)。(project) C:project>pip --proxy=https://xxx:80...

  • # Input icrf(tensor数据) # Output out(float数据) import tensorflow as tf import numpy as npsess = tf.Session() preinput = tf.placeholder(tf.float32, [None, None, None, 3])...

  • 转自:https://keras-cn.readthedocs.io/en/latest/layers/convolutional_layer/ https://keras-cn.readthedocs.io/en/latest/layers/pooling_layer/ 1.con1D keras.layers.convoluti...

  • 1、 text{-moz-user-select: none; /*火狐*/-webkit-user-select: none; /*webkit浏览器*/-ms-user-select: none; /*IE10*/-khtml-user-select: none; /*早期浏览器*/-o-user-select: non...

  • 1、一元运算符 2、二元运算符 3、三元运算符 4、h5中div可设置是否能编辑的属性,当然如果在p、span标签什么的也是可以的

    5、css3 去掉下拉框后面的三角形 ,去掉之后,若想在后面换成其他的什么图片背景就很容易了  select {appearance...

  • /*判断屏幕宽高比是否为16:9*/ function isScreen16to9() {return window.screen.height / window.screen.width === 9 / 16; }...

  • /*关闭、刷新、跳转、离开当前网页前提示*/ onbeforeunload = function () {return false; };  ...

  • let json = {/**判断JSON格式*/ isJSON: function (str) {if (typeof str == "string") {try {var obj = JSON.parse(str);if (typeof obj == "object" && obj) {return true;} else {...

  •   项目结构   index.js //必须要安装否则就别想运行了❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤ //npm i body-parser -D & cnpm i express & cnpm i node-xlsx & cnp...

  • 一、递归 函数    为什么要有函数,提高代码的可读性,避免重复的代码,提高代码的复用性      在函数中能用return的不要print 1、递归的最大深度997 def foo(n):print(n)n+=1foo(n) foo(1) 递归的最大深度 2、修改递归的最大深度     由此我们可以看出,未报错之前能看到的最大数...