給定乙個二叉搜尋樹和乙個目標結果,如果 bst 中存在兩個元素且它們的和等於給定的目標結果,則返回 true。
通過二叉樹的中序遍歷使其生成乙個陣列,可通過雙指標和雜湊表的方法進行查詢。
class solution:
def inorder(self,root):
if root is none:
return
self.inorder(root.left)
self.inorder(root.right)
def findtarget(self, root: treenode, k: int) -> bool:
self.tmp =
self.inorder(root)
l = 0
r = len(self.tmp)-1
while lk:
r-=1
elif rst bool:
def inorder(root):
if not root:
return
return inorder(root.left)+[root.val]+inorder(root.right)
target = inorder(root)
n = len(target)
_dict = {}
for i, m in enumerate(target):
_dict[m] = i
if _dict.get(k - m) is not none:
return true
return false
通過二叉樹中序遍歷生成陣列儲存在target中
n是target陣列的長度
建立乙個空字典
將target陣列的下標存入i中,值存入m中
將其值於下表對應放入字典中
如果目標值減去陣列中的乙個值所得的值在陣列中
返回為真,否則返回為假
653 兩數之和 IV 輸入 BST
給定乙個二叉搜尋樹和乙個目標結果,如果 bst 中存在兩個元素且它們的和等於給定的目標結果,則返回 true。案例 1 輸入 5 3 6 2 4 7target 9 輸出 true 案例 2 輸入 5 3 6 2 4 7target 28 輸出 false 分析 先先序遍歷樹,將所有節點值放入陣列,...
兩數之和,三數之和
兩數之和 方法一 暴力 throw new illegalargumentexception 時間複雜度 o n 2 空間複雜度 o 1 public int twosum int nums,int target throw newillegalargumentexception no twosum...
leetcode 兩數之和與兩數之和
題目描述 給定乙個已按照公升序排列 的有序陣列,找到兩個數使得它們相加之和等於目標數。函式應該返回這兩個下標值 index1 和 index2,其中 index1 必須小於 index2。說明 返回的下標值 index1 和 index2 不是從零開始的。你可以假設每個輸入只對應唯一的答案,而且你不...