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

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

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]


目录
相关文章
|
传感器 JSON 监控
Springboot + oshi 实现对服务器硬件的监控
OSHI是一个免费的基于JNA的(本机)Java操作系统和硬件信息库。它不需要安装任何额外的本地库,旨在提供跨平台实现来检索系统信息,如操作系统版本、进程、内存和CPU使用情况、磁盘和分区、设备、传感器等。
1430 0
|
Ubuntu
ubuntu 换源 阿里源
ubuntu 换源 阿里源
1670 0
|
存储 供应链 前端开发
宜搭平台搭建应用的最佳实践(二)| 学习笔记
快速学习宜搭平台搭建应用的最佳实践。
宜搭平台搭建应用的最佳实践(二)| 学习笔记
|
10月前
|
数据采集 中间件 API
在Scrapy爬虫中应用Crawlera进行反爬虫策略
在Scrapy爬虫中应用Crawlera进行反爬虫策略
|
11月前
|
机器学习/深度学习 数据采集 传感器
智能交通信号:城市交通流的优化
【10月更文挑战第25天】智能交通信号系统通过集成现代信息技术、大数据分析和人工智能技术,实现交通信号动态优化,有效缓解城市交通拥堵,提升交通效率。系统涵盖数据采集、交通状态感知、流量预测、信号控制策略制定及实施优化等环节,已在多城市应用并取得显著效果。未来将向多模态数据融合、深度学习算法应用、区域协同控制和智能交通系统集成方向发展。
|
8月前
|
存储 Java 数据安全/隐私保护
SpringBoot整合Flowable【03】- 通过Flowable-UI体验一个简单流程
本文介绍了如何使用Flowable 7.0以下版本的flowable-ui进行流程建模、发布和执行。首先,通过解压并启动flowable-ui war包,访问http://localhost:8080/flowable-ui/idm/#/login登录系统。接着,创建并绘制一个简单的绩效流程模型,包含开始节点、任务节点(自评、上级评、隔级评)和结束节点,并为各节点分配处理人。然后,创建应用并发布绩效流程。最后,通过创建a、b、c三个用户分别完成各节点任务,演示了整个流程的执行过程。本文旨在帮助读者理解Flowable的基本操作和流程元素,后续将介绍通过Java代码控制流程的方法。
1344 1
SpringBoot整合Flowable【03】- 通过Flowable-UI体验一个简单流程
|
11月前
|
Java
线程池设置原则
线程池设置原则
235 5
|
监控 5G 应用服务中间件
阿里云产品示例
阿里云产品示例涵盖多种功能,包括通过OpenAPI生成CLI命令、按小时阶梯计费、5G互联平台的定向流量服务、电商业务多活架构配置实践以及预付费产品的询价查询服务“GetSubscriptionPrice”,提供了详尽的计费信息与促销详情。这一系列工具和服务助力用户实现高效管理与成本优化。
384 26
|
弹性计算 缓存 前端开发
阿里云服务器ECS u1、c7、e实例、c8i实例有什么区别?性能有差异吗?
阿里云ECS提供多样化的实例规格,满足不同需求。经济型e实例为共享资源,适合轻负载应用;通用算力型u1与计算型c7/c8i为独享资源,后者性能更优。c7与c8i均具1:2的CPU内存比,但c8i作为第八代服务器,性能超越c7。价格方面,2核4G的u1实例企业用户专享价199元/年,性价比突出。选择时,轻负载可选e实例,中等负载选u1,高性能需求则推荐c7或c8i实例。更多详情参见阿里云官方页面。
414 4