懒得做二叉树了0 0
# 441
class Solution:
def arrangeCoins(self, n: int) -> int:
return int ((math.sqrt(8 * n + 1) - 1) / 2)
```python
# 442
class Solution:
def findDuplicates(self, nums: List[int]) -> List[int]:
for i in range(len(nums)):
while nums[i] != nums[nums[i] - 1]:
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]
return [num for i, num in enumerate(nums) if num - 1 != i]
# 443
class Solution:
def compress(self, chars: List[str]) -> int:
def reverse(left: int, right: int) -> None:
while left < right:
chars[left], chars[right] = chars[right], chars[left]
left += 1
right -= 1
n = len(chars)
write = left = 0
for read in range(n):
if read == n - 1 or chars[read] != chars[read + 1]:
chars[write] = chars[read]
write += 1
num = read - left + 1
if num > 1:
anchor = write
while num > 0:
chars[write] = str(num % 10)
write += 1
num //= 10
reverse(anchor, write - 1)
left = read + 1
return write
# 445
class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
s1, s2 = [], []
while l1:
s1.append(l1.val)
l1 = l1.next
while l2:
s2.append(l2.val)
l2 = l2.next
ans = None
carry = 0
while s1 or s2 or carry != 0:
a = 0 if not s1 else s1.pop()
b = 0 if not s2 else s2.pop()
cur = a + b + carry
carry = cur // 10
cur %= 10
curnode = ListNode(cur)
curnode.next = ans
ans = curnode
return ans
#447
class Solution:
def numberOfBoomerangs(self, points: List[List[int]]) -> int:
res = 0
for i in points:
cnt = defaultdict(int)
for j in points:
dis = (i[0] - j[0]) ** 2 + (i[1] - j[1]) ** 2
cnt[dis] += 1
for k in cnt.values():
res += k * (k - 1)
return res
# 448
class Solution:
def findDisappearedNumbers(self, nums: List[int]) -> List[int]:
res = []
for num in nums:
loc = abs(num) - 1
if nums[loc] > 0:
nums[loc] = -nums[loc]
for idx , val in enumerate(nums):
if val > 0:
res.append(idx + 1)
return res