2021_02_01 LeetCode刷题

2022年整理LeetCode最新刷题攻略分享(附中文详细题解) 所以我整理了leetcode刷题攻略一个超级详细的刷题顺序,每道题目都是我精心筛选,都是经典题目高频面试题,大家只要按照这个顺序刷就可以了,你没看错,README已经把题目顺序都排好了,文章顺序就是刷题顺序!挨个刷就可以,不用自己再去题海里选题了!其实我之前在知乎上回答过这个问题,回答内容大概是按照如下类型来刷数组->链表->哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构,再从简单刷起,做了几个类型题目之后,再慢慢做中等题目、困难题目。... 阅读详情

1736. 替换隐藏数字得到的最晚时间

简单模拟题。就一个个判定即可。

class Solution {
public:
    string maximumTime(string time) {
        if(time[0] == '?') {
            if(time[1] == '?')
                time[0] = '2', time[1] = '3';
            else {
                if(time[1] >= '0' && time[1] <= '3')
                    time[0] = '2';
                else 
                    time[0] = '1';
            }
        } else {
            if(time[0] == '0') {
                if(time[1] == '?')
                    time[1] = '9';
            }
            if(time[0] == '1') {
                if(time[1] == '?')
                    time[1] = '9';
            }
            if(time[0] == '2') {
                if(time[1] == '?')
                    time[1] = '3';
            }
        }

        if(time[3] == '?') {
            if(time[4] == '?')
                time[3] = '5', time[4] = '9';
            else
                time[3] = '5';
        } else {
            if(time[4] == '?')
                time[4] = '9';
        }
        return time;
    }
};

1346. 检查整数及其两倍数是否存在

简单模拟题。使用哈希表解决。

class Solution {
public:
    bool checkIfExist(vector<int>& arr) {
        int cnt[4001] = {0};
        int* hash_set = cnt + 2000;
        for (int n : arr)
            ++hash_set[n];
        for (int n : arr)
            if (n != 0 && hash_set[2 * n] >= 1)
                return true;
            else if (n == 0 && hash_set[2 * n] >= 2)
                return true;
        return false;
    }
};

1576. 替换所有的问号

简单模拟题。判定前后是否为问号,同时保证前后字符与其不相同即可。

class Solution {
public:
    string modifyString(string s) {
        int len1 = s.length();
        if(len1 == 1)
            s = "a";
        else {
            for(int i = 0; i < len1 ; i++) {
                if(s[i] == '?') {
                    if(i == 0) {
                        if(s[i + 1] == '?')
                            s[i] = 'a';
                        else {
                            if(s[i + 1] == 'z')
                                s[i] = 'y';
                            else
                                s[i] = s[i + 1] + 1;
                        }
                    } else {
                        if(i == len1 - 1) {
                            if(s[i - 1] == 'z')
                                s[i] = 'y';
                            else
                                s[i] = s[i - 1] + 1;
                        } else {
                            if(s[i+1] == '?') {
                                if(s[i - 1] == 'z')
                                    s[i] = 'y';
                                else
                                    s[i] = s[i - 1] + 1;
                            } else {
                                for(char j = 'a'; j <= 'z'; j++) {
                                    if(s[i-1] != j && s[i + 1] != j) {
                                        s[i] = j;
                                        break;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        return s;
    }
};

929. 独特的电子邮件地址

简单模拟题。以@为分隔符,之前的所有字符判定.和+,之后的则全部记录,然后去重保存不同种类的个数即可。

class Solution {
public:
    int numUniqueEmails(vector<string>& emails) {
        set<string> p;
        int len1 = emails.size();
        for(int i = 0; i < len1; i++) {
            int len2 = emails[i].length();
            string tempz = "";
            for(int j = 0; j < len2 ; j++) {
                if(emails[i][j] == '.')
                    continue;
                if(emails[i][j] == '+') {
                    while(j < len2 && emails[i][j]!='@')
                        j++;
                    while(j < len2) {
                        tempz = tempz + emails[i][j];
                        j += 1;
                    }
                    p.insert(tempz);
                    break;
                }
                if(emails[i][j] == '@') {
                    while(j < len2) {
                        tempz = tempz + emails[i][j];
                        j += 1;
                    }
                    p.insert(tempz);
                    break;
                }
                tempz += emails[i][j];
            }
            
        }
        return p.size();
    }
};

1441. 用栈操作构建数组

简单模拟题。从1开始模拟输入,遍历数组,判定和当前需要放进的数字是否相同,如果不相同,说明有push和pop操作,否则就是单纯的push操作。

class Solution {
public:
    vector<string> buildArray(vector<int>& target, int n) {
        vector<string> ans;
        int len1 = target.size(), sum = 1;
        for(int i = 0;i < len1; ) {
            if(target[i] == sum) {
                ans.push_back("Push");
                sum += 1;
                i += 1;
            } else {
                ans.push_back("Push");
                ans.push_back("Pop");
                sum += 1;
            }
        }
        return ans;
    }
};

1694. 重新格式化电话号码

简单模拟题。先记录数字个数,之后每三个存储,过程中记得判定当前还剩下几个字符,当剩下2,3,4时直接操作即可。

class Solution {
public:
    string reformatNumber(string number) {
        int len1 = number.length();
        string temp = "";
        for(int i = 0;i < len1; i++) {
            if(number[i] >= '0' && number[i] <= '9')
                temp += number[i];
        }
        string ans = "";
        int len2 = temp.length();
        if(len2 == 2 || len2 == 3)
            ans = temp;
        else {
            if(len2 == 4)
                ans = ans + temp[0] + temp[1] + "-" + temp[2] + temp[3];
            else {
                for(int i = 0; i < len2; i+=3) {
                    if((len2 - i) <= 4) {
                        if((len2 - i) == 2)
                            ans = ans + temp[i] + temp[i + 1];
                        if((len2 - i) == 3)
                            ans = ans + temp[i] + temp[i + 1] + temp[i + 2];
                        if((len2 - i) == 4)
                            ans = ans + temp[i] + temp[i + 1] + "-" + temp[i + 2] + temp[i + 3];
                        break;
                    } else
                        ans = ans + temp[i] + temp[i+1] + temp[i+2] + "-";
                }
            }
        }
        return ans;
    }
};

1608. 特殊数组的特征值

简单模拟题。直接遍历排序后的数组,记录根据下标获得当前大于当前数字的个数,然后判定特征值是否存在。

class Solution {
public:
    int specialArray(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int len1 = nums.size(), ans = -1;
        for(int i = 0; i < len1; i++) {
            int sum = len1 - i;
            if(i == 0) {
                if(sum <= nums[i]) {
                    ans = sum;
                    break;
                } 
            } else {
                if(sum <= nums[i] && sum > nums[i-1]) {
                    ans = sum;
                    break;
                }
            }
        }
        return ans;
    }
};

1394. 找出数组中的幸运数

简单模拟题。哈希表,存放查找。

class Solution {
public:
    int findLucky(vector<int>& arr) {
        map<int, int> p;
        int len1 = arr.size();
        for(int i = 0; i < len1; i++)
            p[arr[i]] += 1;
        int max1 = -1;
        for(map<int, int>::iterator it1 = p.begin(); it1 != p.end(); it1++) {
            if(it1 -> second == it1 -> first)
                max1 = max(max1, it1->first);
        }
        return max1;
    }
};

1399. 统计最大组的数目

简单模拟题。哈希表记录存放数字的和,之后对哈希表排序即可返回最终的结果。

class Solution {
public:
    int countLargestGroup(int n) {
        unordered_map<int, int> hashMap;
        int maxValue = 0;
        for (int i = 1; i <= n; ++i) {
            int key = 0, i0 = i;
            while (i0) {
                key += i0 % 10;
                i0 /= 10;
            }
            ++hashMap[key];
            maxValue = max(maxValue, hashMap[key]);
        }
        int count = 0;
        for (auto& kvpair: hashMap) {
            if (kvpair.second == maxValue) {
                ++count;
            }
        }
        return count;
    }
};

1337. 矩阵中战斗力最弱的 K 行

简单模拟题。存放两个变量,之后重写排序规则,即可得出答案。

class Solution {
public:
    vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
        int n = mat.size();
        vector<pair<int, int>> power;
        for (int i = 0; i < n; ++i) {
            int sum = accumulate(mat[i].begin(), mat[i].end(), 0);
            power.emplace_back(sum, i);
        }
        sort(power.begin(), power.end());
        vector<int> ans;
        for (int i = 0; i < k; ++i) {
            ans.push_back(power[i].second);
        }
        return ans;
    }
};

 

代码随想录-力扣刷题-总结笔记01 阅读详情

相关推荐

代码随想录-力扣刷题-总结笔记02

代码随想录-力扣刷题-总结笔记02

upward 1671

Leetcode刷题 2021.02.01

Leetcode刷题 2021.02.01Leetcode888 公平的糖果棒交换Leetcode1615 最大网络秩Leetcode1567 乘积为正数的最长子数组长度 Leetcode888 公平的糖果棒交换 爱丽丝和鲍勃有不同大小的糖果棒:A[i] 是爱丽丝拥有的第 i 根糖果棒的大小,B[j] 是鲍勃拥有的第 j 根糖果棒的大小。 因为他们是朋友,所以他们想交换一根糖果棒,这样交换后,他们都有相同的糖果总量。(一个人拥有的糖果总量是他们拥有的糖果棒大小的总和。) 返回一个整数数组 ans,其中 a

weixin_43447128的博客 321

Leetcode刷题 2021.01.30

Leetcode刷题 2021.01.30Leetcode778 水位上升的泳池中游泳Leetcode978 最长湍流子数组Leetcode1262 可被三整除的最大和 Leetcode778 水位上升的泳池中游泳 在一个 N x N 的坐标方格 grid 中,每一个方格的值 grid[i][j] 表示在位置 (i,j) 的平台高度。 现在开始下雨了。当时间为 t 时,此时雨水导致水池中任意位置的水位为 t 。你可以从一个平台游向四周相邻的任意一个平台,但是前提是此时水位必须同时淹没这两个平台。假定你可以

weixin_43447128的博客 465

leetcode刷题笔记——排序 2021-02-01

题目242.有效的字母异位词 class Solution { public boolean isAnagram(String s, String t) { if(s.length()!=t.length()) return false; List<Character> list=new ArrayList<>(); for(int i=0;i<s.length();i++){ list.

weixin_43111836的博客 214

力扣刷题01 - 编程学习

力扣刷题是一个很好的平台,提供了丰富的题目和讨论,可以帮助我们不断进步。力扣(LeetCode)是一个知名的在线编程题库,提供了各种难度级别的算法题目,适合不同层次的程序员进行练习和学习。如果找到了符合条件的索引,我们将其以列表形式返回,其中第一个索引是哈希表中存储的索引,第二个索引是当前遍历的索引。通过刷题和学习,我们可以提高编程能力和算法思维,逐步掌握更复杂的题目和解题技巧。在解决每个问题之前,先了解相关的算法和数据结构知识,这样可以更好地理解问题的本质和解题思路。每次解题后,都要进行总结和学习。

IELLQUI8的博客 303

Frida+Objection保姆级教程:从环境搭建到实战Hook(含Wallbreaker插件使用)

本文提供了一份从零开始的Frida与Objection移动安全动态分析实战指南。详细讲解了Python环境配置、Frida-Server部署、Objection核心命令使用以及Wallbreaker插件安装与应用。通过实战案例演示如何Hook网络请求(如HttpURLConnection和OkHttp3),帮助安全研究人员快速掌握应用运行时行为分析与漏洞挖掘技能。

weixin_28318011的博客 100

刷完 300 道 LeetCode 题后,我膨胀到要飘起来了!纯正 Java 版

优快云 的小伙伴们,大家好,我是爱学习爱分享的沉默王二。 迫不及待的小伙伴可以直接拖到文末,拉取离线版的下载地址,无套路无解压密码,我整理了将近一周的时间。 不经意间,在 GitHub 上发现了一个 1G 棒的 LeetCode 刷题笔记,重点来了,是纯正的 Java 版。我见过很多牛逼的刷题笔记,有 Go 版的,有 C++ 版的,唯独没有 Java 版的,所以这次,我感觉找到了宝藏! 其实私下里很多小伙伴问我有没有 Java 版的,一开始我觉得刷题嘛,用啥语言刷题根本不重要,重要的是解题的思路。但看到这

沉默王二 3万+

SiamFC++笔记

SiamFC++: Towards Robust and Accurate Visual Tracking with Target Estimation Guidelines 文章根据这些思路:引入分类和目标状态估计分支(G1),无歧义的分类得分(G2),无先验知识的跟踪(G3)和评估质量得分(G4)来设计SiamFC ++。 SiamRPN ++和SiamFC ++的比较(红色部分代表得分高的区域): guide: G1 : 分类和状态估计任务的分离:分类任务将目标从干扰物和背景中分类出来,目标状态

木木JL的博客 9432

力扣算法刷题顺序

字符串:520、125、14、34、58、344、541、557、151、387、389、383、242、49、451、423、657、551、696、467、535、299、412、506、539、553、537、592、640、38、443、8、13、12、273、165、481、392、524、521、522、66、67、415、43、306、482、6、68、28、686、459、214、5、647。链表:206、203、237、19、430、61、24、92、25、2、445、21、23。

m0_62154035的博客 3830

【SoloPi】SoloPi使用2-功能使用,录制回放

Soloπ是什么 Soloπ是一个无线化、非侵入式的Android自动化工具,公测版拥有录制回放、性能测试、一机多控三项主要功能,能为测试开发人员节省宝贵时间。 录制回放功能 Soloπ拥有录制操作的能力,用户只需要通过Soloπ执行用例步骤,Soloπ就能够将用户的操作记录下来,并且支持在各个设备上进行回放,这一切都能够在手机上独立完成。 ...

q_Catherine的博客 5828

Windows10完美驱动Apple Studio Display:从雷电接口到亮度调节全攻略

本文详细介绍了如何在Windows10系统上完美驱动Apple Studio Display,涵盖雷电接口兼容性、亮度调节及色彩管理等关键问题。通过实测对比不同转接方案和显卡兼容性,推荐使用贝尔金VR线和NVIDIA GTX-1660显卡,并提供了BootCamp驱动安装和亮度调节的终极解决方案,帮助用户实现最佳显示效果。

elastic6hunter的博客 1120

刷了几千道算法题,这些我私藏的刷题网站都在这里了!

遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...

Rocky0429 16万+

weblogic 集群搭建,双机部署,相关问题记录

4.5.集群搭建1 参考网址https://wenku.baidu.com/view/76365129cd1755270722192e453610661ed95aa4.html IP地址 端口 角色 192.168.1.160 9001 AdminServer ...

zl386119974的专栏 1669

力扣刷题攻略

按照 数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 >栈 >队列 的顺序,主要刷:难度简单,通过率在 50%以上的题目。按照 数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 >栈 >队列的顺序,主要刷:难度中等,通过率在50%以上的题目。先不要急着刷题,建议找个视频,把相关算法理论看一遍,比如:什么是分治,什么是贪心,什么是动态规划,什么是二叉搜索树,什么是图等概念。第四轮就比较难了,可以刷剩余困难的,还有以前没刷的,通过率低于 40%的题目。

weixin_42326417的博客 1303

matlab 点云均值、中值、高斯滤波【2024最新版】

点云均值滤波、中值滤波、高斯滤波的matlab自带函数实现。博客长期更新,本文最近一次更新时间为:2024年11月9日。

点云侠的博客 5259

精读204页华为的流程管理(文末附下载链接)

链接:https://pan.baidu.com/s/1eEwdBR5c0PIxkOrNhDZcGg?pwd=wha2 提取码:wha2 复制这段内容后打开百度网盘手机App,操作更方便哦。,以提升企业运营效率和竞争力,同时解决了诸多业务痛点,为华为的全球化发展提供了有力支撑。华为的流程管理对其发展起着关键作用,通过构建完善的流程体系,提升了企业运营效率与竞争力。华为的流程管理在企业发展中至关重要,其围绕。,并通过流程变革不断优化。在流程管理过程中,强调。构建了全面的流程体系。

cdfunlove的博客 282

【LeetCode】力扣刷题攻略路线推荐!适合新手小白入门~(含各类题目序号)

力扣上有许多数据结构及算法的练习,但是如果由第一题【两数之和】开始刷,会让50%的人倒在起点。所以我们刷题要讲究路线攻略以及技巧~

CodeCodeBond的博客 9万+

RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)II

承接上文《RK3568 OpenHarmony3.2 NFC 驱动适配(PN7150)I》,继续PN7150 NFC模块的整体适配。本文主要介绍包括HDI实现层、框架层以及设备适配层的代码修改思路。具体包括vendor_adaptor、hdi_service等;以及foundation下的frameworks、services等。此外还包括相关三方库libnfc-nci在鸿蒙平台的移植和适配。需要注意的是,当前nfc适配只是基于作者手上的RK3568平台以及相关OpenHarmony3.2的代码。

Martian_Jonas的博客 1360

力扣刷题指南

按照 数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 >栈 >队列 的顺序,主要刷:难度简单,通过率在 50%以上的题目。按照 数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 >栈 >队列的顺序,主要刷:难度中等,通过率在50%以上的题目。先不要急着刷题,建议找个视频,把相关算法理论看一遍,比如:什么是分治,什么是贪心,什么是动态规划,什么是二叉搜索树,什么是图等概念。第四轮就比较难了,可以刷剩余困难的,还有以前没刷的,通过率低于 40%的题目。

ArtinCode 1139

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

力扣刷题日记01

如果要对非字符串数组进行排序,或者要进行自定义排序,可以将一个比较函数作为参数传递给。

m0_63882057的博客 563

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

力扣刷题攻略路线推荐(含题号)!!!转载的!!给自己看的,怕找不到。

力扣刷题攻略路线推荐(含题号)!!!转载的!!给自己看的,怕找不到。

f552126506的博客 2301

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Leetcode刷题指南

按照 数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 >栈 >队列 的顺序,主要刷:难度简单,通过率在 50%以上的题目。按照 数学 > 数组 > 链表 > 字符串 > 哈希表 > 双指针 > 递归 >栈 >队列的顺序,主要刷:难度中等,通过率在50%以上的题目。先不要急着刷题,建议找个视频,把相关算法理论看一遍,比如:什么是分治,什么是贪心,什么是动态规划,什么是二叉搜索树,什么是图等概念。第四轮就比较难了,可以刷剩余困难的,还有以前没刷的,通过率低于 40%的题目。

2403_86977424的博客 1069

找工作、备考、面试刷题网站推荐(牛客网、力扣、计蒜客、hihocoder、七月在线)以及acm竞赛oj

不管是找工作笔试面试白板试进大厂,还是研究生参加初试复试,数据结构和算法都是都是重中之重,刷题就很必要,来拿走自己的offer 吧! 一、offer刷题推荐 1.牛客网 链接:https://www.nowcoder.com/activity/oj 牛客网作为国内内容超级丰富的 IT 题库,题库+面试+学习+求职+讨论 应有尽有,不仅是一个刷题的平台,还是一个交流学习的平台。 2.力扣 https://leetcode-cn.com/problemset/all/ leetcode(力

丨汀、的博客 1万+

刷题网站集合

1、leetcode 英文网址:https://leetcode.com/ 中文网址:https://leetcode-cn.com/ 估计 leetcode(力扣)大家都很熟悉了,都被推荐烂了,很多国内外的程序员在上面刷题,难度从 Easy、Medium 至 Hard 都有,据说很多面试官都会从中挑选各种题目,号称大厂的筛码工。 我很早就知道 leetcode,但是直到准备复试闲来无事的时候才在它上面刷了点儿题找感觉,发现上面的题型覆盖很广,像线段树、滑动数组、博弈论、扫描线等都应有具有,但是好像有的测试

代码是程序员的语言,博客是思想的桥梁,连接你我,共享智慧之光。 7527

LeetCode刷题攻略

分析错误:如果遇到错题,仔细分析错误原因并查找资料进行补充学习。回顾解法:总结解法背后的算法思路及其适用场景,确保知识内化。通过系统性刷题、定期复习、充分利用讨论区和总结错题,可以更有效地提高自己的算法能力和面试准备程度。最重要的是保持持续学习的态度和耐心,不断挑战自我。祝你在 LeetCode 刷题和面试中取得优秀的成绩!如果你还有其他具体问题或需要进一步的帮助,请告诉我!

Jak的博客 1702

力扣刷题思路

力扣刷题思路

m0_74212228的博客 1095
上一篇: 2021_01_29 LeetCode刷题
下一篇: 2021_02_02 LeetCode刷题
Ls_attack
博客等级 码龄10年 25粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值