剑指offer
文章平均质量分 77
ych9527
这个作者很懒,什么都没留下…
展开
-
实现 Trie (前缀树
实现 Trie (前缀树)方法1利用哈希进行实现插入单词时,将单词添加至set之中,达到去重的目的查找单词是否存在时,直接从set中进行查找即可查找部分单词时,遍历整个set,进行比较查找 void insert(string word) {//向前缀树中插入字符串 st.insert(word); } /** Returns if the word is in the trie. */ bool search(string wo原创 2021-09-16 22:05:08 · 96 阅读 · 0 评论 -
通过删除字母匹配到字典里最长单词
通过删除字母匹配到字典里最长单词题意:字典是一个string数组,从数组中寻找元素与s的子串进行匹配,要求匹配的字符串尽可能的长,当匹配的字符串长度相等时,选择字典序小的题解:将string数组进行排序,按照长度排升序,按照字典序排降序从前往后进行匹配,越匹配后面的越符合要求,因为后面的长度越长,字典序越小匹配方法,给定两个指针,一个指针begin1指向s,一个指针begin2指向数组的元素,当begin2指向的位置超过当前元素,表示全部匹配class Solution {publi原创 2021-09-14 20:57:38 · 78 阅读 · 0 评论 -
C++经典面试题打卡
文章目录传递信息大餐计数和相同的二元子数组基于时间的键值存储传递信息小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。每轮信息必须需要传递给另一个人,且信息可重复经过同一个人给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relatio原创 2021-07-10 21:55:34 · 161 阅读 · 0 评论 -
最长递增子序列——系列题
文章目录最长子序列求解基础题堆箱子马戏团人塔俄罗斯套娃信封问题最长子序列求解基础题堆箱子堆箱子。给你一堆n个箱子,箱子宽 wi、深 di、高 hi。箱子不能翻转,将箱子堆起来时,下面箱子的宽度、高度和深度必须大于上面的箱子。实现一种方法,搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。输入使用数组[wi, di, hi]表示每个箱子。题解:本题本质上就是一个求最长递增子序列的问题,按照任意一维排序之后,进行"最长递增子序列求解"排序帮助我们固定了位置,然后从中挑选,如果不排序直接采用当前位置原创 2021-06-30 20:55:34 · 233 阅读 · 1 评论 -
BFS经典面试题——C++版
文章目录1.[蛇梯棋](https://leetcode-cn.com/problems/snakes-and-ladders/)2.[单词接龙](https://leetcode-cn.com/problems/word-ladder/)3.[青蛙过河](https://leetcode-cn.com/problems/frog-jump/)1.蛇梯棋N x N 的棋盘 board 上,按从 1 到 N*N 的数字给方格编号,编号 从左下角开始,每一行交替方向。例如,一块 6 x 6 大小的棋盘,原创 2021-06-30 18:34:08 · 438 阅读 · 3 评论 -
面试题打卡——C++版
文章目录二进制手表打开转盘锁滑动谜题堆盘子直线上最多的点数二进制手表二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。给你一个整数 turnedOn ,表示当前亮着的 LED 的数量,返回二进制手表可以表示的所有可能时间。你可以 按任意顺序 返回答案。小时不会以零开头:例如,“01:00” 是无效的时间,正确的写法应该是 “1:00” 。分钟必须由两位数组成,可能会以零开头:例如,“10:2” 是无原创 2021-06-26 12:16:56 · 283 阅读 · 0 评论 -
位运算相关题目
文章目录插入整数转换配对交换下一个数插入给定两个整型数字 N 与 M,以及表示比特位置的 i 与 j(i <= j,且从 0 位开始计算)。编写一种方法,使 M 对应的二进制数字插入 N 对应的二进制数字的第 i ~ j 位区域,不足之处用 0 补齐。具体插入过程如图所示。题解:1.将N的 i-j位置为0,即用N减去N当前位置的值2.将M左移i位,即将M的最后一位挪到i的位置3.将两个数相加class Solution {public: int insertBits(int N原创 2021-06-25 18:50:04 · 113 阅读 · 0 评论 -
面试题打卡——C++版
文章目录跳石板字符串通配符串联字符串的最大长度柱状图中最大的矩形皇位继承顺序跳石板小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。例如:N = 4,M = 24:4->6->8->12->18-原创 2021-06-20 22:12:52 · 161 阅读 · 0 评论 -
面试题打卡——C++版
文章目录格雷编码LRU缓存机制字符串解码石子游戏蘑菇阵格雷编码格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。即使有多个不同答案,你也只需要返回其中一种。格雷编码序列必须以 0 开头。题解:1.相邻不同 -> 每次只改变一位2.改变一位 -> 将本身往右移动一位进行异或class Solution {public: vector<int> grayCode(int n) {原创 2021-06-17 20:26:16 · 192 阅读 · 0 评论 -
面试题打卡——C++版
文章目录把二叉搜索树转换为累加树打家劫舍II最长公共子序列最长递增子序列01矩阵把二叉搜索树转换为累加树给出二叉 搜索 树的根节点,该树的节点值各不相同,请你将其转换为累加树(Greater Sum Tree),使每个节点 node 的新值等于原树中大于或等于 node.val 的值之和。题解:二叉搜索树的特性是 左<根<右 ,现在题目要求,每个节点的值,大于等于原树中的值。根据二叉树的性质,我们进行 右、根、左的遍历顺序,将前面节点的值加到当前对应的节点即可class Solut原创 2021-06-15 08:27:32 · 220 阅读 · 0 评论 -
哈希常见面试题——C++版
文章目录两个数组的交集两个数组的交集II存在重复元素两句话中的不常见单词字母异位词分组单词拆分和为K的子数组任务调度器最长连续序列两个数组的交集给定两个数组,编写一个函数来计算它们的交集。输出结果是唯一确定的题解:用两个set分别存储两个数组中的元素,达到去重的效果,然后用其中一个数组去另外一个数组中进行查找class Solution {public: vector<int> intersection(vector<int>& nums1, vector原创 2021-06-09 14:31:50 · 633 阅读 · 6 评论 -
面试题打卡——C++版
文章目录股票价格跨度买卖股票的最佳时机含手续费最佳买卖股票时机含冷冻期买卖股票的最佳时机III买卖股票的最佳时机IV股票价格跨度编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。题解:给定两个栈,一个栈存原创 2021-06-07 13:46:01 · 458 阅读 · 0 评论 -
面试题打卡——C++版
文章目录旋转链表二叉搜索树中第K小的元素Nim游戏链表中的节点每k个一组翻转数组中相加和为0的三元组旋转链表题解:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。class Solution {public: ListNode* rotateRight(ListNode* head, int k) { if(head==nullptr||head->next==nullptr)//没有或者只有一个节点 retu原创 2021-06-03 15:57:14 · 478 阅读 · 11 评论 -
面试题打卡——C++版
文章目录下一个排列合并区间最长公共前缀最接近的三数之和[螺旋矩阵 II](https://leetcode-cn.com/problems/spiral-matrix-ii/)下一个排列实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。class Solution {public: void nextPermutation(vector<int>& nums)原创 2021-05-29 10:19:30 · 1030 阅读 · 15 评论 -
剑指offer保姆级题解全集—C/C++版
前言剑指offer作为经典算法题、在面试中遇到的几率非常之高,赶紧行动起来。下次学妹,啊呸,面试官,再问你剑指offer直接一番天秀。数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。题目链接方法1:sort排序后,遍历数组,前面的值和后面的值相等即可时间复杂度:nongn;空间复杂度:快排需要递归,栈桢消耗 lon原创 2021-05-27 11:26:13 · 4614 阅读 · 26 评论