力扣刷题——分治思想

小楚辞
2024-09-12 / 0 评论 / 12 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2024年09月12日,已超过70天没有更新,若内容或图片失效,请留言反馈。

169
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入:nums = [3,2,3]
输出:3
示例 2:

输入:nums = [2,2,1,1,1,2,2]
输出:2

提示:
n == nums.length
1 <= n <= 5 * 104
-109 <= nums[i] <= 109

进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。

from typing import List


class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        n = len(nums)
        check_n = n/2
        dic = {}
        new_nums = list(set(nums))
        for i in nums:
            if i in dic.keys():
                old_var = dic.get(i)
                dic[i]=int(old_var)+1
            else:
                dic[i]=1
        keys_list = list(dic.keys())
        values_list = list(dic.values())
        for i in range(len(keys_list)):
            if values_list[i] > check_n:
                return keys_list[i]

solution = Solution()
print(solution.majorityElement([3,2,3])) #input list

240
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

每行的元素从左到右升序排列。
每列的元素从上到下升序排列。

示例 1:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5
输出:true
示例 2:

输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20
输出:false

from typing import List

class Solution:
    def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
        for row in matrix:
            for element in row:
                if element == target:
                    return True
        return False

solution = Solution()
print(solution.searchMatrix(matrix,target)) #input list and target
1

评论

博主关闭了当前页面的评论
您是第 7555 位访客