当前位置: 首页 > news >正文

LeetCode 热题 100(持续更新版)

目录

一、哈希

(一)两数之和

(二)字母异位词分组

(三)最长连续序列


一、哈希

(一)两数之和

2025.10.9

1. 两数之和 - 力扣(LeetCode)

这个题应该没有写题解的必要了,只是自己好久没用力扣的环境了,还有点不习惯,哈哈

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {vector<int> ans;int i, j, k;int n = nums.size();for(i = 0; i < n; i ++){for(j = i+1; j < n; j ++){if(nums[i] + nums[j] == target){ans.push_back(i);ans.push_back(j);return ans;}}}return {};}
};

(二)字母异位词分组

2025.10.10

49. 字母异位词分组 - 力扣(LeetCode)

讲这道题之前,推荐大家一点要学会map,这简直是我最喜欢的数据结构,谁懂!!

推荐看看:map讲解

可以发现,同一组的字母异位词他们排序后的字符串是一样,例如,["ate","eat","tea"]所有字符串sort之后都是aet,说明他们是属于aet这一组的,这里使用map,把排序后相同的字符串设为一类,再把所有类合在一起,就是答案了,具体见代码

class Solution {
public:vector<vector<string>> groupAnagrams(vector<string>& strs) {map<string, vector<string>> mp;string data;for(auto str: strs){data = str;sort(str.begin(), str.end());mp[str].push_back(data);}vector<vector<string>> res;for(auto m: mp){res.push_back(m.second);}return res;}
};

(三)最长连续序列

2025.10.11

128. 最长连续序列 - 力扣(LeetCode)

这道题还蛮有意思,求解方法有很多,但是限定了时间复杂度为O(n)

1、下面这个方案是我两年前写的,这个代码并不好,使用了sort,时间复杂度为O(n log n),并不符合题意,但是也过了,算是运气好吧。创建了一个tag数组,用来记录以第i个值为结尾对应的长度,具体题解在代码中,可以看看,思路还是比较清晰的。

class Solution {
public:int longestConsecutive(vector<int>& nums) {int i, j;int n = nums.size();if(n == 0)  return 0;sort(nums.begin(), nums.end()); //sort排序已经不符合题意了vector<int> tag(n);tag[0] = 1;  // tag数组是用来记录以第i个值为结尾对应的长度,第0个长度为1for(i = 1; i < n; i ++){if(nums[i] == nums[i-1] + 1){tag[i] = tag[i-1] + 1; // 说明是连续的,长度+1}else if(nums[i] == nums[i-1]){tag[i] = tag[i-1]; // 相同数值,对应的长度是不变的}else{tag[i] = 1; // 说明前面没有联系数值,只能以自身开头连续,值为1}}int max_size = 0;// 找出最长的for(auto t: tag){max_size = max(max_size, t);}return max_size;}
};

2、这是最新写的,其实思路和上面差不多,使用set,就不用sort排序了,同时还帮我们去重了,同时,不需要创建一个新的数组帮我们记录长度,直接边遍历边更新最大长度,具体见代码

class Solution {
public:int longestConsecutive(vector<int>& nums) {if(nums.size() == 0)  return 0;// 使用set,可以帮我们排序,顺便还去重了,非常好用!!set<int> new_nums;   for(auto num: nums){new_nums.insert(num);}// max_size记录的是最新的最长序列长度// temp_size是出现了新的连续序列,此时的长度,初值设为1,因为pre_num的存在,长度至少为1 了int i, j, max_size = 0, temp_size = 1; // pre_num是用来记录当前数的前一个值的int pre_num = *new_nums.begin(); // 记录第一个值for(auto new_num: new_nums){if(new_num == pre_num + 1){temp_size ++; //连续了,temp_size的值++}else{// 并不连续max_size = max(max_size, temp_size); //更新max_size的值temp_size = 1; //标记为1, 出现了新的连续数字串}pre_num = new_num; // pre_num的值更新一下}// 最后还需要更新一下 max_size的值,我就忘了max_size = max(max_size, temp_size);return max_size;}
};

二、双指针

你们有没有这种感觉,对双指针迷迷糊糊的,只能说太强了,变换多样,经典的还是滑动窗口,想想都痛苦~~~

(一)移动零

2025.10.11(看论文真的看不下去了,做道简单题休息一下,哈哈,说着玩的——严肃!!)

283. 移动零 - 力扣(LeetCode)

发现并不简单,我还是回去看论文吧,不想做了,明天写……

主要是记录并监督自己每天练题的,题解也写得比较简略,如有问题,欢迎指正,谢谢。

http://www.dtcms.com/a/470004.html

相关文章:

  • 网站开发 jsp开发工具网页设计介绍说明
  • 沈阳网站建站推广湖南网站建设效果
  • 会员体系搭建攻略讲解:从分层运营到提升用户忠诚度
  • Merkle Tree(默克尔树)原理分析
  • Vue3 学习笔记 8:其它 API
  • 库早报|15999元!先临三维发布口袋式3D扫描仪;激光制造与增材制造大会延期;拓竹双项入选《时代》年度发明榜
  • 流量网站建设教程电子商务网站建设php
  • React中Element、Fiber、createElement和Component关系
  • 大语言模型(LLM)是“预制菜”? 从应用到底层原理,在到中央厨房的深度解析
  • 做的好的商城网站南昌网站搭建公司 赣ICP
  • 软件测试资源笔记(4万字,持续更新中)
  • 做外贸网站做成哪种形式好WordPress购物个人中心
  • LeetCode 395 - 至少有 K 个重复字符的最长子串
  • 科技有限公司可以做网站建设吗成都网站网络建设
  • Qt绘制折线图
  • Idea中新建package包,变成了Directory
  • 如何自建淘宝客网站wordpress 知笔墨
  • Python爬虫实战:腾讯控股2024年资产负债分析
  • AI-调查研究-100-具身智能 现代AI方法全解析:强化学习、模仿学习与Transformer在机器人控制中的应用
  • Docker核心技术:深入理解网络模式 ——Host/None/Container 模式与混合云原生架构实践
  • 南通市住房城乡建设局网站磁力蜘蛛种子搜索
  • 解决HTML塌陷的方法
  • sqlite 使用: 03-问题记录:在使用 sqlite3_bind_text 中设置 SQLITE_STATIC 参数时,处理不当造成的字符乱码
  • 网站建设与维护难不难为什么找别人做网站
  • 广州木马网站建设公司医院门户网站建设规划
  • 大模型学习之 深入理解编码器与解码器
  • pyqt 触摸屏监听
  • C++ Primer Plus 第六版 第十三章 编程题
  • 大模型前世今生(十二):Hessian矩阵
  • 蛙跳积分法:分子动力学模拟中的高效数值积分技术