![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 77
timathy33
这个作者很懒,什么都没留下…
展开
-
栈的压入、弹出序列
剑指 Offer 31. 栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof如原创 2021-06-21 15:27:11 · 118 阅读 · 0 评论 -
132 模式
456. 132 模式给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。示例 1:输入:nums = [1,2,3,4]输出:false解释:序列中不存在 132 模式的子序列。来源:力扣原创 2021-06-19 13:03:16 · 332 阅读 · 0 评论 -
用randX()实现randY()——随机数生成题目
470. 用 Rand7() 实现 Rand10()以前看见这题就没有点进去的欲望,因为完全不懂,今天点进去看了看题解,总算是会写了,但是依旧不懂啊,只是会用结论罢了,以后有空再细细研究一下原理把测试结论:(randX() - 1)*Y + randY() 可以等概率的生成[1, X * Y]范围的随机数说高级的之前,先来点好理解的方法:把任何随机函数转成rand01()即随机生成0和1的函数,然后用0,1,以二进制的方式求得目标数值题目给了个rand7()1,2,3,4,5,6,7原创 2021-06-16 14:25:55 · 614 阅读 · 0 评论 -
寻找重复数
287. 寻找重复数给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。你设计的解决方案必须不修改数组 nums 且只用常量级 O(1) 的额外空间。来源:力扣(LeetCode)题目不难,但是要求很严格,不修改原数组,有要求只用O(1)空间,进阶条件还要满足O(n)时间…如果只要求O(1)空间的话,可以排序+查找,如果要求O(n)时间,可以用哈希表如果要原创 2021-06-15 15:12:53 · 101 阅读 · 0 评论 -
数组中数字出现的次数 II
剑指 Offer 56 - II. 数组中数字出现的次数 II在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4来源:力扣(LeetCode)思路一:哈希表,很容易想到,就不细说了思路二:位运算统计原理我也不想说了,看大佬的讲解吧????这那么不搞高级的,直接用32位的数组来计数就行,不过这里注意,c++的数字是有符号位的,所以其实只需要31位,因为题目的数都是正数,不过就算有负原创 2021-06-15 14:20:14 · 106 阅读 · 0 评论 -
数字拆分
343. 整数拆分剑指 Offer 14- I. 剪绳子这两题都是一样的,题目要求就是给你应该整数,要你把它拆分成n个整数相加的形式,而且整数的乘积必须为所有可能组合的最大值这一题主要还是考数学,如果要满足题意,只有一个要求尽量多的拆3出来(3以下的数字除外)这是数学定理,反正我也不会证明,所以用就完事了比如5,我们先拆一个3,变成3+2,好剩下的2不能再拆了,那么这就是答案(3 * 2)了拆出来到最后只有2,3,4这三种选择,为什么是4?因为4如果拆成3+1的话,那不是亏了嘛,莫名其妙多个原创 2021-06-14 13:54:12 · 553 阅读 · 0 评论 -
leetcode——背包问题
初识背包问题算法题也做了有200多题了,终于准备刷一波背包问题,花了点时间写了一题中等难度的,其实就是动态规划按题目类型来分有三种,完全背包,0-1背包0-1背包就是指货物只有两种状态,装或不装,不能多装,也不能拆一半装完全背包就是指同种类的货物是无限的,可以无限重复选取动态规划:今天写的是子集背包,所谓子集背包,就是直接或间接给出一个目标值target,然后让你在货物中选择,看看能不能正好凑出一堆价值为target的子集,所以从货物的选取上来看,是属于0-1背包问题的一种416. 分割等和子原创 2021-06-07 14:25:50 · 501 阅读 · 2 评论 -
摩尔投票法
今天写了一题简单题的算法题169. 多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3来源:力扣(LeetCode)实现目标很简单,哈希表存出现次数,或者排序直接取中位数,但都不是最完美的排序时间复杂度降不下来O(NlogN),当然也可以用快速选择(基于随机快速排序改进),直接选出中位数,平均期望时间复杂度也为O(N),但是有点大原创 2021-06-04 14:44:37 · 84 阅读 · 0 评论 -
最长连续序列
128. 最长连续序列给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。进阶:你可以设计并实现时间复杂度为 O(n) 的解决方案吗?示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。来源:力扣(LeetCode)简单一点的思路:左右一起搜索,直到边界期间进行计数并标记,避免重复的查找,标记的办法很多,可以用unordered_map<int,原创 2021-05-28 11:04:50 · 187 阅读 · 0 评论 -
版本号比较
165. 比较版本号给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号原创 2021-05-27 15:49:10 · 1078 阅读 · 0 评论 -
最长有效括号
32. 最长有效括号给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"来源:力扣(LeetCode)这一题真的太有意思了,栈,动态规划,还有括号计数,都是很方便很巧妙的方法,但我只会最low的暴力求每个子串的最大长度,哈哈????(一)先说说括号计数的方法吧,顾名思义就是计数左原创 2021-05-18 16:04:33 · 348 阅读 · 0 评论 -
leetcode学习记录_前缀和
560. 和为K的子数组给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。来源:力扣(LeetCode)先说说简单的思路:最简单的当然是两个for遍历数组,让每一个下标都作为起点,然后从起点遍历到结尾,看看中间有多少个连续的子数组和为k,这里我就随便写写核心部分 int sum = 0,res = 0 for(int L = 0;L&l原创 2021-05-15 15:32:50 · 106 阅读 · 0 评论 -
leetcode学习记录_k个数
这种题目通常都是和堆,优先队列有关,即在插入数据的时候对数据进行排序 前 K 个高频元素给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。进阶:你所设计算法的时间复杂度 必须 优于 O(n log n) ,其中 n 是数组大小。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]先来个简单的思路,数组+自定义排序,当然,用上排序的时候就不满足题目进阶要求的O(n log n)了,因为排序原创 2021-05-13 22:07:01 · 188 阅读 · 0 评论 -
回溯算法
回溯算法 是一种穷举所有可能性的算法,也就是列举一棵决策树的所有路径再说题目前,先说说选择层数和选择列表如上所说,列举一棵树的所有路径,这里用[ a, b, c]的全排列来举个例子蓝色的就是当前选择列表,红色的就是选择层数,一开始,选择列表为[a, b, c]所以我们有三种选择而我们用递归实现回溯时,通常通过递归的调用进入下一层,而在回溯的函数里用for来列举当前选择列表一般来说,使用回溯算法的题目可以分三种三种在写法还是略有不同的,主要在结束条件上和for的初值等一:排列排列的思路比..原创 2021-05-11 18:00:43 · 92 阅读 · 0 评论 -
排序算法
冒泡排序先来个最简单的,一般都是最先接触的算法:冒泡排序冒泡排序的思路也很简单,用升序排序来看,就是依次比较相邻的数字,如果前一个数字大于后面的那个,就交换两数(即把大数后移),假设数组长度为size,第一轮比较完毕时,就把最大数移动到了 下标size-1 处第二轮就在下标0到size-2中找到第二大的数字,并移动到下标size-2处,循环往复,循环size-1 或 size轮即可完成排序代码也很简单:void BubbleSort(vector<int>& nums)原创 2021-05-03 20:51:48 · 99 阅读 · 0 评论 -
leetcode学习记录_dfs(深度优先搜索)
200. 岛屿数量给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,“0”],[“1”,“1”,“0”,“0”,“0”],[“0”,“0”,“0”,“0”,“0”]]输出:1来源:力扣(LeetCode)思路:遍历二原创 2021-05-02 10:58:43 · 86 阅读 · 0 评论 -
leetcode学习记录_二分法
虽然写了二分法的技巧文章,但是我才发现我还没有二分法题目的文章,都放到其他文章里去了。 先来个简单的:69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。来源:力扣(LeetCode)本来是想按照惯例用左闭右开区间的,但考虑到给的x可能是INT_MAX,如果要开区间,R就得用long型了,所以还是用闭区间吧,所以while就得用(L <= R)class Solut原创 2021-04-28 15:47:58 · 105 阅读 · 0 评论 -
leetcode学习记录_单调栈
739. 每日温度请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。来源:力扣(LeetCode)思路:单调栈,我们维护一个非递增的栈;注意:非递增指的是对应下标再数组目标数组中的值,栈里存放的是下标而不是值!原创 2021-04-27 12:52:45 · 75 阅读 · 0 评论 -
leetcode学习记录_罗马数字
13. 罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V原创 2021-04-24 14:43:02 · 183 阅读 · 0 评论 -
leetcode学习记录_回文
9. 回文数给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true来源:力扣(LeetCode)进阶:你能不将整数转为字符串来解决这个问题吗?看见题目的第一眼就是转成字符串或者数组,然后刷刷的的写了字符串的,发现,速度和内存使用排名都特别低,有点纳闷,看了题解才想到,如果数字是回文数,那么它反转的数字也等于原数字原创 2021-04-24 11:13:06 · 122 阅读 · 0 评论 -
leetcode学习记录_贪心
贪心的特点就是不断求得局部最优解然后用局部最优解求得全局最优解55. 跳跃游戏原创 2021-04-23 12:18:28 · 94 阅读 · 0 评论 -
leetcode学习记录_回溯算法
剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]来源:力扣(LeetCode)思路全排列,考虑使用回溯算法,但我刚接触回溯算法,能看懂,但不是特别熟悉,以下都是自己的理解,果有错误的地方,请指出!由下图可以看出,全排列的本质可以看成记录下面这颗树的所有路径,用递归的方法就能很好的达成目的原创 2021-04-19 22:12:35 · 120 阅读 · 0 评论 -
leetcode学习记录_双指针
42. 接雨水示例 :输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)来源:力扣(LeetCode)思路:蓄水必须得有个条件:左右都比当前位置高,才能蓄水,所以单从一个方向遍历的话,容易考虑不周到,所以从两边往中间逼近双指针,一个从左开始,一个从右开始,同时用max_L 和 max_R来维护当前左/右的最大高度,原创 2021-04-18 10:03:22 · 102 阅读 · 0 评论 -
leetcode学习记录_链表
链表剑指 Offer 24. 反转链表迭代:class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* after = head , *before = nullptr; while(after != nullptr) { ListNode* t; t = after->next; after->next = before; before = after..原创 2021-04-11 19:34:15 · 135 阅读 · 0 评论 -
树_二叉树_学习记录
声明:该文章仅为我个人的学习记录,由于我只是个新手,因此有错误之处还请各位见谅!也恳请大家能积极提出建议!二叉树二叉树就是树形结构里比较特殊的一种,即每个结点最多只有左右两个子树,整棵树中不存在度>2的结点二叉树的左右子树是有顺序的,即使只有一个子树,也得区分它到底是左子树还是右子树二叉树的五种基本形态:空树只有根节点只有根节点+左子树只有根节点+右子树根节点+左、右两个子树满二叉树/完全二叉树/斜二叉树满二叉树:顾名思义,一切都是满满当当的,所有叶子都在最后一层,而且每个子结点原创 2021-04-08 21:28:20 · 103 阅读 · 0 评论 -
leetcode学习记录_动态规划
本人暂时对于动态规划的理解还不是很深,只能说是皮毛甚至是错误的理解,如果有人发现了错误之处,请提醒我,我会尽快改正,非常感谢! 198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 :输入:[1,2,3,1]输出:4解释:偷窃 1 号原创 2021-04-16 19:52:54 · 217 阅读 · 2 评论 -
leetcode学习记录_字符串
不管做什么类型的题,当然都是从简单的开始????179. 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 :输入:nums = [3,30,34,5,9]输出:"9534330"来源:力扣(LeetCode) 题解具体思路来自这位大佬:(个人只修改了一点点,基本没差别)https://leetcode-cn.com/problems/largest-number/sol原创 2021-04-12 14:25:32 · 211 阅读 · 0 评论 -
leetcode学习记录_数组
个人决定分类型来做,一开始是最简单的数组题如果有说明数组内的数据均为0~n-1,那我们就可以把数组和下标联合起来,进行思考例如:剑指 Offer 03. 数组中重复的数字这道题里面的原地置换法这题的条件就是从数组中找重复的数字,且数组内的数据均为0~n-1三种解法:第一种最容易想到的,暴力解法:原理就是先利用sort对数组进行排序,然后重复的数字必然会挨在一起,以此为依据来查找class Solution {public: int findRepeatNumber(vector&l原创 2021-04-09 14:10:58 · 216 阅读 · 0 评论