【LeetCode】HOT 100(18)

简介: 【LeetCode】HOT 100(18)

题单介绍:

精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。


目录


题单介绍:


题目:148. 排序链表 - 力扣(Leetcode)


题目的接口:


解题思路:


代码:


过过过过啦!!!!


题目:152. 乘积最大子数组 - 力扣(Leetcode)


题目的接口:


解题思路:


代码:


过过过过啦!!!!


写在最后:


题目:148. 排序链表 - 力扣(Leetcode)


题目的接口:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* sortList(ListNode* head) {
    }
};


解题思路:

这道题,如果直接做的话并不难,


就直接把链表的值塞进数组里面,然后sort一下就行,


最后在把值送回链表里面,


如果考虑进阶的空间复杂度的话,就需要用很复杂的归并来做,


今天时间不太够,我把这道题收藏了,之后再用归并做进阶,


代码如下:


代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* sortList(ListNode* head) {
        vector v;
        ListNode* cur = head;
        while(cur) {
            v.push_back(cur->val);
            cur = cur->next;
        }
        sort(v.begin(), v.end());
        cur = head;
        for(int i = 0; i < v.size(); i++) {
            cur->val = v[i];
            cur = cur->next;
        }
        return head;
    }
};


过过过过啦!!!!


题目:152. 乘积最大子数组 - 力扣(Leetcode)

题目的接口:

class Solution {
public:
    int maxProduct(vector& nums) {
    }
};

解题思路:

这道题怎么说呢,


一眼动态规划,


但是,规划不出来。。。


学习动态规划真的是刻不容缓,


但是我最近有没有时间,只好先收藏为敬,


等我暑假拿下动态规划,系统学习一遍之后,再来找她报仇。


那现在我就先用其他方法做了,


虽然这些是动态规划的题目,但是,总会有大神能想出牛逼的方法,


思路如下:


实际上这个乘积的最大值只有两种情况,


第一种:如果数组中存在0,那就是求各个子数组乘积的最大值,


直接遍历求解即可,(更新最大值,遇到0就重新开始计算)


第二种;如果数组中不存在0,那就又分成两种情况:


1. 负数存在偶数个,那最大值就是整个数组的乘积


2. 负数存在奇数个,那最大值就是:


max(从左边开始乘到最后一个负数的值,从右边开始乘到最后一个负数的值)


代码如下:


代码:

class Solution {
public:
    int maxProduct(vector& nums) {
        int sum = 1;
        int maxVal = nums[0];
        for(auto e : nums) {
            sum *= e;
            maxVal = max(maxVal, sum); //更新最大值
            if(e == 0) sum = 1; //如果有0,重新计算
        }
        sum = 1;
        for(int i = nums.size() - 1; i >= 0; i--) {
            sum *= nums[i];
            maxVal = max(maxVal, sum);
            if(nums[i] == 0) sum = 1;
        }
        return maxVal;
    }
};

过过过过啦!!!!


写在最后:

以上就是本篇文章的内容了,感谢你的阅读。


如果感到有所收获的话可以给博主点一个赞哦。


如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~


相关文章
Idea 项目结构不显示解决方案
Idea 项目结构不显示解决方案
1403 0
Idea 项目结构不显示解决方案
|
SQL Web App开发 Java
java.sql.SQLException: Unsupported character encoding 'utf8mb4'.
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/76199827 四月 12, 2017 3:47:52 下午 org.
5262 0
|
NoSQL 网络协议 Redis
解决:启动Redis报错
当 Redis 启动报错“Could not create *:6379”时,可能是端口占用或配置问题。解决方法:依次运行以下命令——先通过 `redis-cli.exe` 进入命令行并执行 `shutdown` 关闭服务,再用 `exit` 退出工具,最后通过 `redis-server.exe redis.windows.conf` 重启 Redis。此操作可有效释放端口并正常启动 Redis 服务。
1687 1
|
机器学习/深度学习 存储 人工智能
【AI系统】流水并行
在大模型训练中,单个设备难以满足计算和存储需求,分布式训练成为必要。模型并行是其中关键技术之一,通过将模型计算任务拆分至不同设备上执行,提高训练效率。模型并行主要包括朴素模型并行、张量并行和流水线并行。流水线并行通过将模型的不同层分配到不同设备上,采用微批次处理,提高设备利用率。Gpipe和PipeDream是两种流行的流水线并行方案,前者通过重叠前向和反向传播提升效率,后者则通过1F1B策略实现交错执行,最大化利用计算资源。
754 15
|
数据采集 搜索推荐 安全
智慧城市的交通管理大数据模型
智慧城市交通管理系统借助大数据模型,通过全面收集交通数据(如监控、GPS、公共交通信息等),进行数据清洗和预处理,利用Python的Pandas进行数据管理。通过ARIMA等模型分析,预测交通流量、识别交通模式,支持智能信号控制、预测性维护和事件响应。这种集成分析与决策支持系统提升城市交通效率,确保出行安全,预示着未来交通管理的智能化和个性化趋势。【6月更文挑战第23天】
1555 10
|
机器学习/深度学习 人工智能 监控
一文读懂deepSpeed:深度学习训练的并行化
DeepSpeed 是由微软开发的开源深度学习优化库,旨在提高大规模模型训练的效率和可扩展性。通过创新的并行化策略、内存优化技术(如 ZeRO)及混合精度训练,DeepSpeed 显著提升了训练速度并降低了资源需求。它支持多种并行方法,包括数据并行、模型并行和流水线并行,同时与 PyTorch 等主流框架无缝集成,提供了易用的 API 和丰富的文档支持。DeepSpeed 不仅大幅减少了内存占用,还通过自动混合精度训练提高了计算效率,降低了能耗。其开源特性促进了 AI 行业的整体进步,使得更多研究者和开发者能够利用先进优化技术,推动了 AI 在各个领域的广泛应用。
|
缓存 数据可视化 机器人
07 ROS的TF坐标管理工具
本文详细介绍了ROS(机器人操作系统)中TF(Transform)坐标管理工具的使用方法,包括如何监听和广播坐标变换消息,使用相关命令行工具查看TF关系,以及如何通过编写节点代码来创建TF广播器和监听器,并展示了如何在launch文件中配置TF相关的节点。
973 0
|
人工智能 自然语言处理 程序员
解密:Prompt、Token、和completions是什么?
解密:Prompt、Token、和completions是什么?
1445 0

热门文章

最新文章