
目录
1. 多数元素 🌟
2. 二叉树的层序遍历 II 🌟🌟
3. 最接近的三数之和 🌟🌟
🌟 每日一练刷题专栏 🌟
Golang每日一练 专栏
Python每日一练 专栏
C/C++每日一练 专栏
Java每日一练 专栏
1. 多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:[3,2,3] 输出:3
示例 2:
输入:[2,2,1,1,1,2,2] 输出:2
进阶:
- 尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。
出处:
https://edu.csdn.net/practice/26466465
代码:
from typing import List
class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        count, candi = 0, 0
        for i in nums:
            if i == candi:
                count += 1
            else:
                if count == 0:
                    candi = i
                    count = 1
                else:
                    count -= 1
        return candi
if __name__ == '__main__':
    s = Solution()
    nums = [3,2,3]
    print(s.majorityElement(nums))
    nums = [2,2,1,1,1,2,2]
    print(s.majorityElement(nums))
输出:
3
 2
2. 二叉树的层序遍历 II
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
 给定二叉树 [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7
 
返回其自底向上的层序遍历为:
[ [15,7], [9,20], [3] ]
出处:
https://edu.csdn.net/practice/26466466
代码:
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None
class Solution(object):
    res = dict()
    def forwardSearch(self, root, depth):
        if root != None:
            if depth not in self.res.keys():
                self.res[depth] = []
            self.res[depth].append(root.val)
            self.forwardSearch(root.left, depth + 1)
            self.forwardSearch(root.right, depth + 1)
    def levelOrderBottom(self, root):
        self.forwardSearch(root, 1)
        result = []
        self.dic = dict()
        for i in self.res.keys():
            result.append(self.res[i])
        return result[::-1]
def listToTree(lst):
    if not lst:
        return None
    root = TreeNode(lst[0])
    queue = [root]
    i = 1
    while i < len(lst):
        node = queue.pop(0)
        if lst[i] is not None:
            node.left = TreeNode(lst[i])
            queue.append(node.left)
        i += 1
        if i < len(lst) and lst[i] is not None:
            node.right = TreeNode(lst[i])
            queue.append(node.right)
        i += 1
    return root
if __name__ == '__main__':
    s = Solution()
    null = None
    nums = [3,9,20,null,null,15,7]
    root = listToTree(nums)
    print(s.levelOrderBottom(root))
输出:
[[15, 7], [9, 20], [3]]
3. 最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
示例:
输入:nums = [-1,2,1,-4], target = 1 输出:2 解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
提示:
- 3 <= nums.length <= 10^3
- -10^3 <= nums[i] <= 10^3
- -10^4 <= target <= 10^4
出处:
https://edu.csdn.net/practice/26466467
代码:
from typing import List
class Solution:
    def threeSumClosest(self, nums: List[int], target: int) -> int:
        nums.sort()
        cur = 0
        closest = nums[0] + nums[1] + nums[2]
        while cur < len(nums) - 2:
            left = cur + 1
            right = len(nums) - 1
            while left < right:
                n = nums[cur] + nums[left] + nums[right]
                if abs(target - n) < abs(target - closest):
                    closest = n
                if n == target:
                    break
                elif n > target:
                    t = right - 1
                    while (t > left and nums[t] == nums[right]):
                        t -= 1
                    right = t
                else:
                    t = left + 1
                    while (t < right and nums[t] == nums[left]):
                        t += 1
                    left = t
            t = cur + 1
            while (t < len(nums) and nums[t] == nums[cur]):
                t += 1
            cur = t
        return closest
# %%
s = Solution()
print(s.threeSumClosest(nums = [-1,2,1,-4], target = 1))
输出:
2
🌟 每日一练刷题专栏 🌟
✨ 持续,努力奋斗做强刷题搬运工!
👍 点赞,你的认可是我坚持的动力!
🌟 收藏,你的青睐是我努力的方向!
✎ 评论,你的意见是我进步的财富!
☸ 主页:https://hannyang.blog.csdn.net/
|  | Golang每日一练 专栏 | 
|  | Python每日一练 专栏 | 
|  | C/C++每日一练 专栏 | 
|  | Java每日一练 专栏 | 



















