自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (2)
  • 收藏
  • 关注

原创 栈的压入、弹出序列

剑指 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 126

原创 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 353

原创 用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 664

原创 寻找重复数

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 113

原创 数组中数字出现的次数 II

剑指 Offer 56 - II. 数组中数字出现的次数 II在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4来源:力扣(LeetCode)思路一:哈希表,很容易想到,就不细说了思路二:位运算统计原理我也不想说了,看大佬的讲解吧????这那么不搞高级的,直接用32位的数组来计数就行,不过这里注意,c++的数字是有符号位的,所以其实只需要31位,因为题目的数都是正数,不过就算有负

2021-06-15 14:20:14 111

原创 数字拆分

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 590

原创 leetcode——背包问题

初识背包问题算法题也做了有200多题了,终于准备刷一波背包问题,花了点时间写了一题中等难度的,其实就是动态规划按题目类型来分有三种,完全背包,0-1背包0-1背包就是指货物只有两种状态,装或不装,不能多装,也不能拆一半装完全背包就是指同种类的货物是无限的,可以无限重复选取动态规划:今天写的是子集背包,所谓子集背包,就是直接或间接给出一个目标值target,然后让你在货物中选择,看看能不能正好凑出一堆价值为target的子集,所以从货物的选取上来看,是属于0-1背包问题的一种416. 分割等和子

2021-06-07 14:25:50 540 2

原创 摩尔投票法

今天写了一题简单题的算法题169. 多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3来源:力扣(LeetCode)实现目标很简单,哈希表存出现次数,或者排序直接取中位数,但都不是最完美的排序时间复杂度降不下来O(NlogN),当然也可以用快速选择(基于随机快速排序改进),直接选出中位数,平均期望时间复杂度也为O(N),但是有点大

2021-06-04 14:44:37 92

原创 最长连续序列

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 201

原创 版本号比较

165. 比较版本号给你两个版本号 version1 和 version2 ,请你比较它们。版本号由一个或多个修订号组成,各修订号由一个 ‘.’ 连接。每个修订号由 多位数字 组成,可能包含 前导零 。每个版本号至少包含一个字符。修订号从左到右编号,下标从 0 开始,最左边的修订号下标为 0 ,下一个修订号下标为 1 ,以此类推。例如,2.5.33 和 0.1 都是有效的版本号。比较版本号时,请按从左到右的顺序依次比较它们的修订号。比较修订号时,只需比较 忽略任何前导零后的整数值 。也就是说,修订号

2021-05-27 15:49:10 1102

原创 最长有效括号

32. 最长有效括号给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"来源:力扣(LeetCode)这一题真的太有意思了,栈,动态规划,还有括号计数,都是很方便很巧妙的方法,但我只会最low的暴力求每个子串的最大长度,哈哈????(一)先说说括号计数的方法吧,顾名思义就是计数左

2021-05-18 16:04:33 371

原创 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 115

原创 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 213

原创 回溯算法

回溯算法 是一种穷举所有可能性的算法,也就是列举一棵决策树的所有路径再说题目前,先说说选择层数和选择列表如上所说,列举一棵树的所有路径,这里用[ a, b, c]的全排列来举个例子蓝色的就是当前选择列表,红色的就是选择层数,一开始,选择列表为[a, b, c]所以我们有三种选择而我们用递归实现回溯时,通常通过递归的调用进入下一层,而在回溯的函数里用for来列举当前选择列表一般来说,使用回溯算法的题目可以分三种三种在写法还是略有不同的,主要在结束条件上和for的初值等一:排列排列的思路比..

2021-05-11 18:00:43 101

原创 排序算法

冒泡排序先来个最简单的,一般都是最先接触的算法:冒泡排序冒泡排序的思路也很简单,用升序排序来看,就是依次比较相邻的数字,如果前一个数字大于后面的那个,就交换两数(即把大数后移),假设数组长度为size,第一轮比较完毕时,就把最大数移动到了 下标size-1 处第二轮就在下标0到size-2中找到第二大的数字,并移动到下标size-2处,循环往复,循环size-1 或 size轮即可完成排序代码也很简单:void BubbleSort(vector<int>& nums)

2021-05-03 20:51:48 105

原创 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 92

原创 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 121

原创 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 82

原创 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 193

原创 leetcode学习记录_回文

9. 回文数给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true来源:力扣(LeetCode)进阶:你能不将整数转为字符串来解决这个问题吗?看见题目的第一眼就是转成字符串或者数组,然后刷刷的的写了字符串的,发现,速度和内存使用排名都特别低,有点纳闷,看了题解才想到,如果数字是回文数,那么它反转的数字也等于原数字

2021-04-24 11:13:06 130

原创 leetcode学习记录_贪心

贪心的特点就是不断求得局部最优解然后用局部最优解求得全局最优解55. 跳跃游戏

2021-04-23 12:18:28 108

原创 leetcode学习记录_回溯算法

剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]来源:力扣(LeetCode)思路全排列,考虑使用回溯算法,但我刚接触回溯算法,能看懂,但不是特别熟悉,以下都是自己的理解,果有错误的地方,请指出!由下图可以看出,全排列的本质可以看成记录下面这颗树的所有路径,用递归的方法就能很好的达成目的

2021-04-19 22:12:35 136

原创 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 106

原创 leetcode学习记录_动态规划

本人暂时对于动态规划的理解还不是很深,只能说是皮毛甚至是错误的理解,如果有人发现了错误之处,请提醒我,我会尽快改正,非常感谢! 198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 :输入:[1,2,3,1]输出:4解释:偷窃 1 号

2021-04-16 19:52:54 240 2

原创 leetcode学习记录_栈

剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )来源:力扣(LeetCode)思路:定义两个栈st1 , st2 插入元素只靠st1,删除元素只靠st2class CQueue { stack<int> st1 , st2;public: CQueue()

2021-04-14 21:20:09 66

原创 leetcode学习记录_二叉树_树

二叉搜索树(二叉排序树、二叉查找树)二叉树值一种特殊的二叉树,它要么是空树,要么满足以下条件:若左子树存在,则左子树上的所有结点都一定小于根结点,反之,右子树的所有结点都一定大于根节点,并且除了根节点外,所有的子树也满足这个条件。而且二叉搜索树有个特别的地方,那就是,用中序遍历这棵树的时候,得到的将会是一组递增的数据,原理就不说了,懂得搜索树的原理和中序遍历的原理的话,在纸上画一画或者脑子里想一想就知道了题目:783. 二叉搜索树节点最小距离给你一个二叉搜索树的根节点 root ,返回 树中任意

2021-04-14 20:05:25 205

原创 leetcode学习记录_斐波那契数列

剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。来源:力扣(LeetCode)思路很简单,唯

2021-04-12 19:23:10 71

原创 二分法细节技巧

声明:这些都是我参考了labuladong这位大佬的文章,以及结合了我的做题情况做的一个总结,如果有看不懂的,可以直接看大佬的文章!点这里 中点MID——L + ((R - L)>>1)首先是中点mid的取值,一开始我看大佬们的题解,还纳闷,为什么要写成 L + ((R - L)>>1) 这种形式,直接(L + R)/ 2不好吗?后来才知道,这样是防止溢出的写法,如果L 和 R太大,直接相加就有溢出的可能,这样写就不用担心而用>>1的原因其实就是移位操作比除

2021-04-12 19:17:10 436

原创 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 222

原创 C++_vector::reserve和resize

vector是可以动态增容的一种容器,但是频繁的扩容会使得代码运行效率下降,因此在条件允许的情况下,可以先给定一个size,避免频繁的扩容 初始化:vector< int > nums(20,0)设置size为20,并全部初始化为0;vector::reserve其实reserve并不能改变vector的size,只是分配这么大的空间给我们的对象而已,但是也能避免频繁扩容带来的效率损失vector < int > nums;nums.reserve(20);ps:因

2021-04-11 19:48:48 141

原创 leetcode学习记录_丑数

丑数263. 丑数给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。来源:力扣(LeetCode)根据丑数的定义,可以很容易想到,如下代码,把参数的所有2、3、5的因数通过除法去掉,如果最后剩下1,就代表这个数是丑数class Solution {public: bool isUgly(int n) { if(n <= 0) return false; while(1

2021-04-11 19:34:23 94

原创 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 142

原创 C++概念相关笔记

声明:本人是初学者,如有错误还望各位指出,我会积极改正! OOP(面向对象编程)OOP的思想是将属性和方法结合起来,比如list和list里面的sort,这个sort是属于list的方法,基于这个思想,继承和虚函数什么的就出现了GP(泛型编程)GP是将属性和方法分开来放,就比如STL里的vector和sort排序函数,这里把sort这个方法与vector里的数据分开了 多态(默认指动态多态)动态多态发生在运行的时候在C++中,动态多态的实现基于继承机制和虚函数,这两种机制允许子对象指针

2021-04-11 12:56:21 48

原创 leetcode学习记录_数组

个人决定分类型来做,一开始是最简单的数组题如果有说明数组内的数据均为0~n-1,那我们就可以把数组和下标联合起来,进行思考例如:剑指 Offer 03. 数组中重复的数字这道题里面的原地置换法这题的条件就是从数组中找重复的数字,且数组内的数据均为0~n-1三种解法:第一种最容易想到的,暴力解法:原理就是先利用sort对数组进行排序,然后重复的数字必然会挨在一起,以此为依据来查找class Solution {public: int findRepeatNumber(vector&l

2021-04-09 14:10:58 226

原创 树_二叉树_学习记录

声明:该文章仅为我个人的学习记录,由于我只是个新手,因此有错误之处还请各位见谅!也恳请大家能积极提出建议!二叉树二叉树就是树形结构里比较特殊的一种,即每个结点最多只有左右两个子树,整棵树中不存在度>2的结点二叉树的左右子树是有顺序的,即使只有一个子树,也得区分它到底是左子树还是右子树二叉树的五种基本形态:空树只有根节点只有根节点+左子树只有根节点+右子树根节点+左、右两个子树满二叉树/完全二叉树/斜二叉树满二叉树:顾名思义,一切都是满满当当的,所有叶子都在最后一层,而且每个子结点

2021-04-08 21:28:20 114

原创 数据结构_线性表_c++

线性表线性指的是逻辑结构,所以有顺序线性表和链式线性表关键词:有限(可为0),有序(有先来后到,且头元素无前驱,末元素无后继,其余元素有且只有一个前驱和后继),就像排队一样,一条线把所有元素连接在一起顺序线性表关于顺序线性表操作的具体实现代码就不写了,太简单熟悉了操作时间复杂度查找O(1)插入O(n)删除O(n)单链表单链表的定义:当一个序列中只含有指向它的后继结点的链接时,就称该链表为单链表。特点:内存地址可以不连续,而且除了存储数据的空间外,还

2021-04-04 19:58:31 142

原创 个人学习记录

数据结构与算法,学习记录_1目标:一个月学会数据结构记录一下自己的学习过程,好让自己不要半途而废学习产出:抽象数据类型:把数据类型和对这个数据类型的相关操作绑定在一起数据结构:从结构上分类可以分为逻辑结构和物理结构逻辑结构指的是个元素间的关系,分类有集合结构,线性结构,树状结构,图形结构线性表关键词:有限(可为0),有序(有先来后到,且头元素无前驱,末元素无后继,其余元素有且只有一个前驱和后继)物理结构就是数据在计算机内存储的形式,有顺序结构和链式结构顺序结构方便查找(因为在

2021-04-03 22:00:53 182 2

Frank Slash Pack 5 2.zip

Frank 的动画合集 Frank Slash Pack 5 2 Katana Assassin Warrior Dual 2Handed Spear Great Sword 2.1

2021-06-17

Behavior Designerv1.6.8

unity行为树,1.6.8最新版

2021-06-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除