958. 二叉树的完全性检验
958. 二叉树的完全性检验
class Solution:
def __init__(self):
self.level = 0
self.able2change = True
def isCompleteTree(self, root: Optional[TreeNode]) -> bool:
node = root
while node:
self.level += 1
node = node.left
return self.dfs(root, 0)
def dfs(self, node, level):
if node is None:
return self.check_level(level)
ret = self.dfs(node.left, level + 1)
if not ret:
return False
ret = self.dfs(node.right, level + 1)
if not ret:
return False
return True
def check_level(self, level):
if level == self.level:
return True
if self.level - level == 1 and self.able2change:
self.level = level
self.able2change = False
return True
return False
201. 数字范围按位与
201. 数字范围按位与
import math
class Solution:
def rangeBitwiseAnd(self, left: int, right: int) -> int:
if left == 0 or right == 0:
return 0
ans = 0
while left != 0 and right != 0:
left_p = int(math.log(left, 2))
right_p = int(math.log(right, 2))
if left_p != right_p:
return ans
ans |= 1 << left_p
left = left & ~(1 << (left.bit_length() - 1))
right = right & ~(1 << (right.bit_length() - 1))
return ans
154. 寻找旋转排序数组中的最小值 II
154. 寻找旋转排序数组中的最小值 II
class Solution:
def findMin(self, nums: List[int]) -> int:
left = 0
right = len(nums) - 1
if nums[right] > nums[left]:
return nums[left]
while left < right:
mid = left + (right - left) // 2
if nums[right] > nums[left]:
return nums[left]
if nums[mid] < nums[left]:
right = mid
left += 1
elif nums[mid] > nums[left]:
left = mid + 1
else:
left += 1
return nums[left]
26. 删除有序数组中的重复项
26. 删除有序数组中的重复项
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
p = 1
last_num = nums[0]
for i in range(1, len(nums)):
if last_num == nums[i]:
continue
last_num = nums[i]
nums[i], nums[p] = nums[p], nums[i]
p += 1
return p
341. 扁平化嵌套列表迭代器
341. 扁平化嵌套列表迭代器
from collections import deque
class NestedIterator:
def __init__(self, nestedList: [NestedInteger]):
self.chain = deque(self.expand(nestedList))
def expand(self, nestedlist):
ans = []
for i in range(len(nestedlist)):
if nestedlist[i].isInteger():
ans.append(nestedlist[i])
else:
ans.extend(self.expand(nestedlist[i].getList()))
return ans
def next(self) -> int:
return self.chain.popleft().getInteger()
def hasNext(self) -> bool:
return bool(self.chain)
Comments | NOTHING