![](https://img-blog.csdnimg.cn/4612416ad4fd4e60bc50cde6635f8658.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
leetcode
实践出真知,多写算法题,笔试面试才不慌
0泡果奶
愿你的努力撑得起你的野心
展开
-
高频笔试题_手撕快排
这道题目一般大厂都会让你做的,可以提前准备一下原创 2022-02-27 20:47:37 · 223 阅读 · 0 评论 -
高频面试题_合并K个升序链表
今天把面试题背了一部分后,开始做笔试题,这是今天做的两道题,虽然第二道是困难题,但弄清楚第一道题目后,第二道题就好做很多了1.要合并两个有序链表,需要把两个链表对应节点的值进行比较,首先进行特判,如果第一个节点为空,则可以直接返回第二个节点,反之亦然;2.想清楚两个节点什么时候不比较值的大小,当其中一个节点为空时,就不用比较了,因此可以用while来写它们循环比较的代码,循环终止条件是两个节点中有一个为空就终止。3.将剩余的链表节点拼接到新链表节点的下一个节点,如果第一个链表不为空,则当前节点的下一个原创 2022-02-26 20:04:30 · 280 阅读 · 0 评论 -
高频面试题_前缀和+哈希表
今天一共解决了两道题目1.和可被K整除的子数组2.和为K的子数组第一题:class Solution {public: int subarraysDivByK(vector<int>& nums, int k) { unordered_map<int, int> map = {{0, 1}}; int preSum = 0; int cnt = 0; for(int i = 0原创 2022-02-24 21:57:24 · 248 阅读 · 1 评论 -
高频面试题_LRU缓存
双向链表和哈希表这道题没有想象中的简单原创 2022-02-23 21:00:42 · 442 阅读 · 2 评论 -
高频面试题_字符串相加
这种题目也称为大数相加,思路比较简单,但没那么好写出来定义两个指针,分别指向第一个字符串和第二个字符串的某位,也就是最低位定义进位并将其初始化为零两个数字相加的终止条件就是第一个数的当前位和第二个数的当前位都为0并且进位也为零,按照这样的思路我们可以这样来写class Solution {public: string addStrings(string num1, string num2) { string res = ""; int i = num1.le原创 2022-02-22 17:10:38 · 155 阅读 · 0 评论 -
两数之和以及扩展
两数之和class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int, int> map; int size = nums.size(); for(int i=0; i<size; i++) { auto iter = map.find(target原创 2022-01-24 22:24:53 · 311 阅读 · 1 评论 -
无重复字符的最长子串
滑动窗口原创 2022-01-24 19:32:55 · 56 阅读 · 0 评论 -
高频笔试题_二叉树
构造二叉树原创 2022-01-21 20:30:26 · 551 阅读 · 0 评论 -
高频笔试题_栈和队列
注意第二题原创 2022-01-20 21:18:25 · 2122 阅读 · 0 评论 -
高频笔试题_栈和队列
回文链表里面包含了反转链表和排序链表的知识原创 2022-01-19 21:09:32 · 284 阅读 · 0 评论 -
高频笔试题_栈和队列
有效的括号字符串今天时间不是很够,只写出来这一题,讲一下这个题目的思路吧1.先遍历字符串,如果遍历到左括号或者通配符星号,则将它们压入vec1.1同时,如果遍历到星号,让star++(代表通配符个数)2.第二种情况就是遍历到右括号的时候,如果vec空了,则代表没有与右括号匹配的字符了,就return false2.1先抵消右括号,当遍历到右括号时,定义一个bool类型的变量,判断遍历完整个vec之后,是否有左括号出现,如果没出现过,则证明vec里面全部是通配符星号,用星号抵掉一个右括号,否则用左括原创 2022-01-18 21:19:56 · 173 阅读 · 0 评论 -
笔试高频题_栈和队列
这次有三道题,不过都是难度为简单的题目用队列实现栈class MyStack {public: queue<int> que; MyStack() { } void push(int x) { que.push(x); } int pop() { int size = que.size(); size--;//因为要返回栈顶元素,所以先减一个,这样留下来的最后一个队列元原创 2022-01-17 20:48:43 · 336 阅读 · 0 评论 -
高频笔试题_反转链表Ⅱ
高频笔试题_反转链表Ⅱ这一题做起来和反转链表的思路差不多,都是把一个区间的链表来反转class Solution {public: ListNode* reverseBetween(ListNode* head, int left, int right) { ListNode* dummy = new ListNode(0); dummy->next = head; ListNode* pre = dummy; //先将原创 2022-01-14 21:01:22 · 222 阅读 · 0 评论 -
高频笔试题_相交链表
面试常考题相交链表题目已经保证链表中不存在环的问题,那就很好写了。先让两个链表的指针的位置相对一样,然后同时向右移动,直到两指针相等,详细注释已经放在代码里了,相信对大家有所帮助class Solution {public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { ListNode* curA = headA; ListNode* curB = head原创 2022-01-14 19:31:42 · 168 阅读 · 0 评论 -
高频笔试题_排序链表
排序链表我的做法分为以下几步:1.特殊判定2.链表分成两部分3.排序后再来合并链表class Solution {public: ListNode* sortList(ListNode* head) { // 特殊判定 if(head == nullptr || head->next == nullptr) { return head; } //使用归并排序和快慢指针来将链表分为两段原创 2022-01-13 21:17:08 · 222 阅读 · 0 评论 -
万人千题计划-39
万人千题计划前言推荐社区:万人千题今日题解统计位数为偶数的数字有序数组中的单一元素[剑指 Offer 21. 调整数组顺序使奇数位于偶数前面](https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/)有效的字母异位词丢失的数字找不同平衡二叉树二叉树的所有路径左叶子之和找树左下角的值路径总和前言前面的是今天英雄哥给的题解,后面的二叉树是自己的内容,你们按自己的需求原创 2021-11-28 18:59:39 · 3343 阅读 · 0 评论 -
万人千题计划 - 38
其实不是英雄哥给的打卡题目,是我按照个人需求来写的推荐社区:万人千题前言二叉树的前序遍历二叉树的层序遍历翻转二叉树划分字母区间结语推荐社区:万人千题前言已经按照英雄哥给的路子走了有差不多两个月了,可以自己上路了,所以在为自己查漏补缺,如果英雄哥给的题目是我之前做过的,搞懂了的,我就不会再写题解了,我需要刷一些我还不太熟练的。下面的题目除了最后一题,都是有模板的,你们仔细看就能找出模板,我不贴出来,你们自己找二叉树的前序遍历思路:递归+深度优先遍历class Solution {public:原创 2021-11-27 20:35:55 · 421 阅读 · 1 评论 -
万人千题计划-37
万人千题计划推荐社区:万人千题今日题解最小时间差有序数组的平方优势洗牌救生艇判断子序列搜索二维矩阵Ⅱ推荐社区:万人千题今日题解最小时间差思路:如果时间差大于最大的时间差(12小时),说明从另一个方向时间差更小。比如:01:00 与16:00,时间差并不是16小时,而是24 - (16 - 1) = 9小时不要忽略最早与最晚的时间的时间差,比如:00:00 与23:59分其实是连续的class Solution {public: int findMinDifference(vector原创 2021-11-26 20:40:24 · 366 阅读 · 0 评论 -
万人千题计划-36
万人千题计划今日题解推荐社区:万人千题排序数组存在重复元素多数元素合并排序的数组排序链表今日题解推荐社区:万人千题排序数组思路:本来想用选择排序的,但是超时了,试着用归并写一下吧当然,你也可以直接用sort,不过如果你面试这样的话offer可能就和你绝缘了class Solution {public: vector<int> tmp; void mergeSort(vector<int>& nums, int left, int right) {原创 2021-11-25 20:48:34 · 180 阅读 · 0 评论 -
力扣-数据结构基础第一天
November 21, 2021 12:17 PM数据结构基础(学习广场)第一题:只出现一次的数字题目要求:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。思路:我第一个想到的方法是使用哈希表来筛选只出现一次的数字代码如下:int res = 0;unordered_map<int, int> map;for(int i=0; i<nums.size(); ++i) { if(map.find[nums[i]] ==原创 2021-11-24 19:13:40 · 111 阅读 · 0 评论 -
万人千题计划-35
万人千题计划推荐社区:万人千题今日题解对链表进行插入排序合并两个有效数组推荐社区:万人千题今日题解对链表进行插入排序思路:链表转数组,然后sort排序,再转换成链表class Solution {public: ListNode* insertionSortList(ListNode* head) { if(head == nullptr) return head; ListNode* p = head; vector<int>原创 2021-11-24 19:11:21 · 295 阅读 · 0 评论 -
万人千题计划-34
万人千题计划今日题解推荐社区:万人千题找出数组的最大公约数有效三角形的个数重构字符串最多能完成排序的块删除链表中的节点删除链表中的倒数第N个节点今日题解推荐社区:万人千题找出数组的最大公约数思路:先排序,让用 nums.front() 和 nums.back()取出nums数组中最小的和最大的值使用while循环,当 max % min 不为零的时候,不断的继续让max对min取余,结束循环后的min就是最大公约数class Solution {public: int findGCD原创 2021-11-23 18:20:31 · 607 阅读 · 0 评论 -
万人千题计划-33
万人千题计划今日题解七进制数k进制表示下的各位数字总和数字转换成十六进制数统计最大组的数目颜色分类至少是其他数字两倍的最大数今日题解七进制数思路:除 k 取余法class Solution {public: string convertToBase7(int num) { string res = ""; int flag = 0;//判断数字的正负 if(num==0) return "0"; if(num < 0)原创 2021-11-22 15:59:55 · 199 阅读 · 0 评论 -
万人千题计划-32
万人千题计划今日题解推荐社区:万人千题二进制中1的个数各位相加两个数组之间的距离顺次数两个数组的交集统计特殊四元组重复至少k次且长度为m的模式今日题解推荐社区:万人千题二进制中1的个数思路:不断地让n和n-1做与运算(n&=(n-1)),直到n变为0因为每次运算会使n的最低位被翻转class Solution {public: int hammingWeight(uint32_t n) { int res = 0; while(n) {原创 2021-11-21 20:53:01 · 4667 阅读 · 0 评论 -
万人千题计划-31
万人千题计划今日题解推荐社区第一题一周中的第几天一年中的第几天判断子序列差的绝对值为k的数对数目找不同拥有糖果最多的孩子所有奇数长度子数组的和统计好三元组按既定顺序创建目标数组统计平方和三元组的数目搜索二维矩阵Ⅱ今日题解推荐社区第一题思路:在这里插入代码片一周中的第几天思路:使用基姆拉尔森计算公式w = (day+2month+3(month+1)/5 + year +year/4 - year/100 + year/400) % 7把一月和二月看成是上一年的十三月和十四月class原创 2021-11-20 11:50:50 · 1112 阅读 · 3 评论 -
万人千题计划-30
万人千题计划今日题解推荐社区:万人千题判断字符是否唯一第一次只出现一次的字符赎金信飞机座位分配概率期望个数统计用rand7()实现rand10()n个骰子的点数今日题解推荐社区:万人千题我们社区新增加了问答频道,大家可以在里面询问有关算法的问题,如果直到如何解决,社区成员会为你们解答的判断字符是否唯一思路:哈希集合不用我再多说了吧class Solution {public: bool isUnique(string astr) { unordered_set<c原创 2021-11-19 12:35:51 · 241 阅读 · 6 评论 -
万人千题计划-29
万人千题计划今日题解丑数Ⅲ播放列表的数量统计点对的数目二叉树的坡度今日打卡题丑数丑数Ⅱ最长公共前缀最接近的三数之和除自身以外数组的乘积螺旋矩阵螺旋矩阵Ⅱ前言:最近一直在写刷题和写题解,突然发现以前不敢想、不敢做的事情,现在已经走上正轨了,之前从没想过会在力扣上刷到300题以上,但到了今天,我只觉得300题是一个新的开始,如果不是英雄哥的万人千题计划,我可能还是会像一个无头苍蝇在程序的门口毫无目的的乱转,从刚开始刷简单题的艰难重重,到后面的得心应手,再到今天困难题的艰难险阻,但这次碰到困难,我好像并不是那么原创 2021-11-18 22:10:37 · 238 阅读 · 0 评论 -
万人千题计划-28
万人千题计划推荐社区:万人千题(上周第一)推荐专栏:算法零基础100讲(买了的都说好,但是白嫖更香哈哈)交替打印FooBar斐波那契数列泰波那契数杨辉三角杨辉三角Ⅱ爬楼梯圆圈中最后剩下的数字(约瑟夫环)翻转字符推荐社区:万人千题(上周第一)推荐专栏:算法零基础100讲(买了的都说好,但是白嫖更香哈哈)交替打印FooBar思路:先给大家讲一下什么是原子操作原子操作(atomic operation)指的是由多步操作组成的一个操作。如果该操作不能原子地执行,则要么执行完所有步骤,要么一步也不执行,不可原创 2021-11-17 19:06:27 · 336 阅读 · 0 评论 -
万人千题计划-27
万人千题计划千位分隔数字符串转化后的各位数字之和字符串中第二大的数字最小时间差罗马数字转整数整数转罗马数字二级目录二级目录千位分隔数思路:class Solution {public: string thousandSeparator(int n) { if(n == 0) return "0"; string res = to_string(n); int size = res.size(); while(size) {原创 2021-11-16 13:11:51 · 284 阅读 · 4 评论 -
万人千题计划-26
今日题目共八道向大家推荐一下我们的社区:万人千题同时向大家推荐一下我们社区几位大佬的主页英雄哥磊哥解题者大佬第一题:回文排列.思路:只有当字符个数奇数个的情况最多有一个时,才会形成回文字符串class Solution {public: bool canPermutePalindrome(string s) { int res = 0; unordered_map<char, int> map; for(auto &原创 2021-11-15 14:52:13 · 1962 阅读 · 2 评论 -
万人千题计划-25
之前写的文章都在我们的万人千题社区帖子里,以后我会慢慢搬运到我的博客文章里宣传一下我们的社区:万人千题.欢迎大家的加入我们的社区,共同成长力扣:414. 第三大的数题目链接:第三大的数.思路:增强for循环、加上if判断,把nums中最大的赋给a,第二大的赋给b,第三大的数赋给c关键是if判断里的条件,以及值交换的细节class Solution {public: int thirdMax(vector<int>& nums) { long a =原创 2021-11-14 11:44:56 · 1022 阅读 · 0 评论