技术栈
结构与算法
橘颂TA
19 小时前
c++
·
算法
·
结构与算法
【剑斩OFFER】算法的暴力美学——leetCode 662 题:二叉树最大宽度
思路:使用队列实现层序遍历 + 让节点绑定一个下标 pair< TreeNode* , unsigned int>
橘颂TA
2 天前
算法
·
leetcode
·
结构与算法
【剑斩OFFER】算法的暴力美学——leetCode 103 题:二叉树的锯齿形层序遍历
思路:在层序遍历的基础上添加一个标志位。层序遍历的算法实现:https://blog.csdn.net/2403_84958571/article/details/156873549?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
橘颂TA
5 天前
数据结构
·
c++
·
结构与算法
【剑斩OFFER】算法的暴力美学——力扣 394 题:字符串解码
思路:使用双栈,一个栈原来存储字符串,另外一个存储整型数字;1)一开始,把 string 栈先放个空字符串进去,方便后面操作;
橘颂TA
5 天前
c++
·
算法
·
leetcode
·
职场和发展
·
结构与算法
【剑斩OFFER】算法的暴力美学——leetCode 946 题:验证栈序列
思路:使用栈结构来模式出栈和入栈以 pushed = [1,2,3,4,5],popped = [4,5,3,2,1] 为例。
橘颂TA
8 天前
数据结构
·
c++
·
算法
·
力扣
·
结构与算法
【剑斩OFFER】算法的暴力美学——力扣 844 题:比较含退格的字符串
思路:使用 string 模拟栈遍历字符串,如果字符等于 '#' 并且栈里面有数据,那么就让栈顶元素出栈,如果字符 != ‘#’ 就入栈,直到遍历完整个字符串。
橘颂TA
8 天前
算法
·
leetcode
·
哈希算法
·
散列表
·
结构与算法
【剑斩OFFER】算法的暴力美学——二进制求和
思路:小学生加法运算把逢十进一,改成逢二进一:
橘颂TA
9 天前
数据结构
·
算法
·
leetcode
·
职场和发展
·
哈希算法
·
结构与算法
【剑斩OFFER】算法的暴力美学——力扣 43 题:字符串相乘
思路:无进位相乘首先我们先把两个字符串进行逆序:然后开辟一个数组,这个数组的大小为:两个字符串的长度 - 1,原因:假设是三位数乘以三位数,那么这个三位数的最大值位:999 * 999 :
橘颂TA
9 天前
算法
·
leetcode
·
哈希算法
·
散列表
·
结构与算法
【剑斩OFFER】算法的暴力美学——存在重复元素Ⅱ
思路:哈希表使用 unordered_map<int,int> 来存储值和对应的下标,这道题目跟之前那道存储重复元素差不多,我们先遍历数组,在把数组里面的元素放到哈希表之前,我们先判断这个元素是否存在于哈希表中,如果存在,我们就要判断这个值的下标和当前值的下标相减是否 <= k ,如果符合这个条件,返回 true,不符合就把这个元素入哈希表中,那么这个有个问题,就是如果当前元素在之前遍历数组的时候已经入哈希了,都是不符合题目下标相减大于k,那么我们也是要把当前值入哈希的,而且入哈希之后,之前那个值就会被覆
橘颂TA
11 天前
数据结构
·
c++
·
算法
·
力扣
·
散列表
·
结构与算法
【剑斩OFFER】算法的暴力美学——存在重复元素
思路:哈希表过程:遍历数组,遍历过程中每次判断这个数在不在哈希表中,如果在,那么返回 true ,否则把这个数字入哈希,当遍历完这个数组之后,还是没有找到符合题目要求的数字,那么返回 false。
橘颂TA
11 天前
数据结构
·
算法
·
leetcode
·
力扣
·
哈希算法
·
散列表
·
结构与算法
【剑斩OFFER】算法的暴力美学——字母异位词分组
思路:哈希表使用一个 unordered_map< string , vector<string>> ,这个哈希表的 key 值是以 ASCII 码值来排序归类的,value 值就是数组,专门来存储符合这个 ASCII 值排序的字符串,例如:
橘颂TA
12 天前
数据结构
·
算法
·
leetcode
·
力扣
·
结构与算法
【剑斩OFFER】算法的暴力美学——两数之和
思路:差值 + 哈希表假设我们遍历到 7 这个数字,此时 7 前面的数字都放到哈希表里面,当然不能把 7 也题目放到这个哈希表里面,原因待会说,如果 target - 7 = 2 存在于这个哈希表中,那么符合题目要求,因为 2 + 7 = 9 ,那为什么不能提前把 7 放到哈希表中呢?答:假设哈希表里面只有一个数字 1,taget = 4,此时刚好遍历到数字 2 ,如果我们提前把 2 放到哈希表里面,那么 target - 2 = 2 ,这个 2 刚好在哈希表里面,此时我们返回的值是错误的,不符合题目要求
橘颂TA
12 天前
c++
·
算法
·
leetcode
·
职场和发展
·
结构与算法
【剑斩OFFER】算法的暴力美学——面试题 01.02 :判定是否互为字符串重排
思路:哈希表统计字符串里每个字符的个数这道题我使用的是用一个数组来模拟哈希表(原因:效率高,而且每个字符串都是小写字母,所以我们可以创建数组:int arr[ 26 ] 来模拟哈希表),我们先把第一个字符串里面的每个字符的个数都放到这个哈希表中,然后再访问第二数组,对第二个数组:我们用第一个数组里面存储的第一个字符串里面的每个字符出现个数减去第二个数组里每个字符出现的个数,如果数组里面的值都为0,那么这个两个字符串符合题目要求;当然前提是两个字符串的长度是一样的,如果不一样,这个两个字符串是绝对不符合题目
橘颂TA
13 天前
c++
·
算法
·
力扣
·
结构与算法
【剑斩OFFER】算法的暴力美学——K 个一组翻转链表
思路:1)计算要逆序的链表对2)创建一个哨兵位,分别把要逆序的结点头插到这个哨兵位上插入完一对逆序对之后:
橘颂TA
14 天前
算法
·
leetcode
·
牛客
·
结构与算法
【剑斩OFFER】算法的暴力美学——合并 k 个升序链表
思路:最小堆1)首先弄出这样的堆,这个堆里面的结点保存的是每个链表的地址2)每次拿出堆顶的结点,这个结点就是这么多个链表里面里面的最小值的结点
橘颂TA
15 天前
算法
·
结构与算法
【剑斩OFFER】算法的暴力美学——重排链表
思路:1)使用快慢指针来找到链表的中间结点2)把中间结点(不包含中间结点)后面的链表进行逆转3)合并两个链表
橘颂TA
16 天前
数据结构
·
算法
·
结构与算法
【剑斩OFFER】算法的暴力美学——两两交换链表中的结点
思路:引入哨兵位 + 3 个指针为什么要引入哨兵位?当我们实现完第一次交换时:prev 的 next 要指向 cur ,所以引入哨兵位,这样一次循环就能搞定交换两两结点;这里我为什么要引入 nnext ?其实是为了方便对两个结点时的交换。
橘颂TA
20 天前
数据结构
·
链表
·
牛客
·
结构与算法
【剑斩OFFER】算法的暴力美学——链表相加(二)
橘颂TA
21 天前
c++
·
算法
·
结构与算法
【剑斩OFFER】算法的暴力美学——两数相加
思路:模拟因为本来我们是要把链表里面的值进行翻转的,但是题目已经帮我们翻转了,所以可以直接进行加法操作就行,不过要考虑进位问题,我们使用一个值 t 来保存这个两个链表加的值,假设 t = 12 ,那么这个最终的结果是:t % 10 = 2,此时进行进位操作: t = t / 10 = 1;然后不断的进行加法运算直到:运算到第一个和第二个链表的最后值,而且当 t != 0 时,代表着加法运算还没有结束。
橘颂TA
1 个月前
算法
·
排序算法
·
结构与算法
【剑斩OFFER】算法的暴力美学——翻转对
思路:归并排序(降序) + 双指针如果:nums [ cur1 ] <= 2 * nums[ cur2 ],那么证明我们还没有找到符合题目要求的 nums[ cur ] ,所以:cur2 ++
橘颂TA
1 个月前
算法
·
leetcode
·
动态规划
·
结构与算法
【剑斩OFFER】算法的暴力美学——数青蛙
我们用一个哈希表来统计 croak 每个字符出现的次数,我们重头开始遍历原数组,我们先聊一下除了遍历到字符 "c" 的情况: