第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

`mid = low + (high -low)//2` 與 `(low + high)//2`

`mid = low + (high -low)//2` 與 `(low + high)//2`

慕碼人2483693 2022-01-05 20:12:52
我正在研究樹問題Convert Sorted Array to Binary Search Tree - LeetCode給定一個(gè)元素按升序排序的數(shù)組,將其轉(zhuǎn)換為高度平衡的 BST。對于這個(gè)問題,高度平衡二叉樹被定義為一個(gè)二叉樹,其中每個(gè)節(jié)點(diǎn)的兩個(gè)子樹的深度相差永遠(yuǎn)不會超過 1。例子:Given the sorted array: [-10,-3,0,5,9],One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST:      0     / \   -3   9   /   / -10  5直觀的 D&Q 解決方案是class Solution:    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:        """        Runtime: 64 ms, faster than 84.45%        Memory Usage: 15.5 MB, less than 5.70%         """        if len(nums) == 0: return None        #if len(nums) == 1: return TreeNode(nums[0])        mid = len(nums) // 2        root = TreeNode(nums[mid])        if len(nums) == 1: return root         if len(nums) > 1:             root.left = self.sortedArrayToBST(nums[:mid])            root.right = self.sortedArrayToBST(nums[mid+1:])        return root        mid設(shè)置為len(nums)//2或(low + high)//2當(dāng)閱讀其他提交時(shí),我發(fā)現(xiàn)class Solution:    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:        return self.buildBST(nums, 0, len(nums))    def buildBST(self, nums, left, right):        if right <= left:            return None        if right == left + 1:            return TreeNode(nums[left])        mid = left + (right - left) // 2        root = TreeNode(nums[mid])        root.left = self.buildBST(nums, left, mid)        root.right = self.buildBST(nums, mid + 1, right)        return rootmid 被設(shè)置為 mid = low + (high -low)//2mid = low + (high -low)//2超過有(low + high)//2什么好處?
查看完整描述

2 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

這是一種避免整數(shù)溢出的模式;該代碼可能是從具有固定大小整數(shù)的語言移植而來的。當(dāng)索引可以變得與用于包含它們的類型一樣大時(shí),中間low + high值的溢出就會成為一個(gè)問題,導(dǎo)致未定義的行為、錯(cuò)誤的結(jié)果和漏洞。(這甚至?xí)l(fā)生在大整數(shù)類型中,例如size_t當(dāng)您搜索不是數(shù)組的內(nèi)容時(shí)。)

… 但在 Python 中,沒有整數(shù)溢出,所以你是對的,你可以只做(low + high) // 2.


查看完整回答
反對 回復(fù) 2022-01-05
?
陪伴而非守候

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊

在許多語言中,例如 C++、JAVA。整數(shù)有固定的取值范圍,例如:

int32: -2147483648 ~ 2147483647
int64: -9223372036854775808 ~ 9223372036854775807

有時(shí)在有效范圍內(nèi)的低和高,但low + high可能會溢出。

所以使用差異更安全 mid = low + (high -low)//2

但對于 python 來說不是必需的,因?yàn)樗墓ぷ鞣绞筋愃朴?code>BigIntegerJava。


查看完整回答
反對 回復(fù) 2022-01-05
  • 2 回答
  • 0 關(guān)注
  • 673 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號