坚持写算法题的第四周(五)

简介: 坚持写算法题的第四周(五)

2021-11-5

题目

1.最小的k个数

image.png



2.数组中出现次数超过数组长度一半的数

image.png



3.最长差定子序列

image.png



4.礼物的最大价值

image.png



题解

1.最小的k个数

本题太过简单!!!


看代码就可以理解!!!


2.数组中出现次数超过数组长度一半的数

本题我是用哈希表来解的,但是本题应该不止一种方法,所以大家也可以自己试试自己的方法!


我们先用一个字典把不同的元素放到字典中,初始值都为0,然后我们在遍历nums数组,然后找到每个元素的有多少个,然后返回value里面的最大值得键就可以!!


3.最长差定子序列

本题时一个一维dp问题,我们先创建一个哈希表,如果num在这个哈希表里面,就把这个元素加一,然后返回最大得哈希值!!!


4.礼物的最大价值

本题也是一个dp问题,其实画一个矩阵是可以非常简单明了的,由于时间问题我就没有画了,大家可以自行脑部hhhhh,我们把矩阵的每个从左上角叠加的值计算出来,然后进行比较相加,然后返回右下角里面的那个值就可以。


代码

1.最小的k个数

class Solution:
    def getLeastNumbers(self, arr: List[int], k: int) -> List[int]:
        arr.sort()
        return arr[:k]

2.数组中出现次数超过数组长度一半的数

class Solution:
    def majorityElement(self, nums: List[int]) -> int:
        d = {}
        for i in set(nums):
            d[i] = 0
        for i in nums:
            d[i] += 1
        for i in d:
            if d[i] > len(nums)//2:
                return i

3.最长差定子序列

class Solution:
    def longestSubsequence(self, arr: List[int], difference: int) -> int:
        d = defaultdict(int)
        for num in arr:
            d[num] = d[num - difference] + 1
        return max(d.values())

4.礼物的最大价值

class Solution:
    def maxValue(self, grid: List[List[int]]) -> int:
        m, n = len(grid), len(grid[0])
        for j in range(1, n): # 初始化第一行
            grid[0][j] += grid[0][j - 1]
        for i in range(1, m): # 初始化第一列
            grid[i][0] += grid[i - 1][0]
        for i in range(1, m):
            for j in range(1, n):
                grid[i][j] += max(grid[i][j - 1], grid[i - 1][j])
        return grid[-1][-1]


相关文章
|
7月前
|
Serverless C语言 C++
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究
138 1
|
11月前
|
前端开发 容器
3D旋转选秀盒,收纳刹那间的小美好
浏览器发展至今,在网页上呈现 3D 效果已经非常简单了,只需要我们用上一个 css 属性,就可以让我们的页面元素拥有 3D 效果,今天我们就使用这个特性来做一个 3D 旋转盒子。
64 0
|
前端开发 JavaScript
使用html+css+JavaScript制作抛物线小球
使用html+css+JavaScript制作抛物线小球
87 0
|
并行计算 前端开发 数据可视化
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
129 0
【视觉基础篇】11 # 图案生成:如何生成重复图案、分形图案以及随机效果?
137.正六边形螺旋图案
137.正六边形螺旋图案
47 0
杭电OJ变形 骨牌铺满方格 2501
杭电OJ变形 骨牌铺满方格 2501
72 0
|
机器学习/深度学习
2038. 如果相邻两个颜色均相同则删除当前颜色 : 脑筋急转弯运用题
2038. 如果相邻两个颜色均相同则删除当前颜色 : 脑筋急转弯运用题
坚持写算法题的第四周(三)
坚持写算法题的第四周(三)
坚持写算法题的第四周(三)
坚持写算法题的第四周(四)
坚持写算法题的第四周(四)
坚持写算法题的第四周(四)