日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

剑指offer--day07

發(fā)布時間:2023/11/27 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer--day07 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 題目:反轉鏈表:輸入一個鏈表,反轉鏈表后,輸出新鏈表的表頭。

1.2 思路:這道題,我們要做到的是反轉鏈表,我們的思路是將前一個節(jié)點與后一個節(jié)點斷開,然后讓后一個節(jié)點指向前一個節(jié)點,這個過程就需要節(jié)點引用(可以理解為指針)來確定記錄當前操作節(jié)點的前一個節(jié)點和后一個節(jié)點。

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 題目:合并兩個排序列表:輸入兩個單調遞增的鏈表,輸出兩個鏈表合成后的鏈表,當然我們需要合成后的鏈表滿足單調不減規(guī)則。

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為根節(jié)點的子樹是不是包含和樹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

總結

以上是生活随笔為你收集整理的剑指offer--day07的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。