面试
文章平均质量分 74
Ch_ty
这个作者很懒,什么都没留下…
展开
-
leetcode解题思路分析(一百三十八)1178 - 1189 题
【代码】leetcode解题思路分析(一百三十八)1178 - 1189 题。原创 2023-03-22 20:39:27 · 372 阅读 · 0 评论 -
leetcode解题思路分析(一百三十四)1131 - 1143 题
假设爱丽丝和鲍勃都发挥出最佳水平,返回爱丽丝可以得到的最大数量的石头。我们从一块字母板上的位置 (0, 0) 出发,该坐标对应的字符为 board[0][0]。给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2。原创 2022-12-14 19:46:53 · 569 阅读 · 0 评论 -
leetcode解题思路分析(一百三十三)1122 - 1130 题
【代码】leetcode解题思路分析(一百三十三)1122 - 1130 题。原创 2022-11-30 20:35:17 · 395 阅读 · 0 评论 -
leetcode解题思路分析(一百三十二)1111 - 1117 题
【代码】leetcode解题思路分析(一百三十二)1111 - 1117 题。原创 2022-11-20 16:26:03 · 431 阅读 · 0 评论 -
leetcode解题思路分析(一百三十一)1103 - 1109 题
【代码】leetcode解题思路分析(一百三十一)1103 - 1109 题。原创 2022-11-03 20:57:20 · 275 阅读 · 0 评论 -
leetcode解题思路分析(一百二十六)1038 - 1044 题
要使游戏结束,你可以执行的最小和最大移动次数分别是多少?以长度为 2 的数组形式返回答案:answer = [minimum_moves, maximum_moves]。·1040. 移动石子直到连续 II。原创 2022-08-17 20:11:39 · 285 阅读 · 0 评论 -
leetcode解题思路分析(一百二十四)1025 - 1031 题
数学题:先写几项观察规律,然后采用归纳演绎法证明。节点与其祖先之间的最大差值给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。递归的传入当前祖先中的最大和最小值,然后比较即可最长等差数列给你一个整数数组 nums,返回 nums 中最长等差子序列的长度。回想一下,nums 的子序列是一个列表 nums[i1], nums[i2], …, nums[ik] ,且 0 ...原创 2022-08-04 21:01:38 · 418 阅读 · 0 评论 -
leetcode解题思路分析(一百二十三)1018 - 1024 题
代码】leetcode解题思路分析(一百二十三)1018-1024题。原创 2022-07-28 21:07:19 · 251 阅读 · 0 评论 -
leetcode解题思路分析(一百一十九)994 - 1000 题
BFSK 连续位的最小翻转次数给定一个二进制数组 nums 和一个整数 k 。k位翻转 就是从 nums 中选择一个长度为 k 的 子数组 ,同时把子数组中的每一个 0 都改成 1 ,把子数组中的每一个 1 都改成 0 。返回数组中不存在 0 所需的最小 k位翻转 次数。如果不可能,则返回 -1 。子数组 是数组的 连续 部分。从左到右地执行这些翻转操作。由于翻转操作是唯一的,若最终数组元素均为 11,则执行的翻转次数就是最小的。正方形数组的数目给定一个非负整数数组 A,如果该数组每对相邻元原创 2022-06-25 18:54:16 · 301 阅读 · 0 评论 -
leetcode解题思路分析(一百一十八)987 - 993 题
二叉树的垂序遍历给你二叉树的根结点 root ,请你设计算法计算二叉树的 垂序遍历 序列。从根节点开始,对整棵树进行一次遍历,在遍历的过程中使用数组记录下每个节点的行号,列号 以及值。在遍历完成后,我们按照col 为第一关键字升序,row 为第二关键字升序,value 为第三关键字升序,对所有的节点进行排序即可。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode.原创 2022-06-08 22:32:49 · 237 阅读 · 0 评论 -
leetcode解题思路分析(一百一十六)973 - 979 题
最接近原点的 K 个点给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,并且是一个整数 k ,返回离原点 (0,0) 最近的 k 个点。这里,平面上两点之间的距离是 欧几里德距离( √(x1 - x2)2 + (y1 - y2)2 )。你可以按 任何顺序 返回答案。除了点坐标的顺序之外,答案 确保 是 唯一 的。可以排序、用堆,但是最好的方法是类似于快排的思想分治查找class Solution {private: mt19937.原创 2022-05-22 17:12:38 · 295 阅读 · 0 评论 -
leetcode解题思路分析(一百一十五)966 - 972 题
元音拼写检查器在给定单词列表 wordlist 的情况下,我们希望实现一个拼写检查器,将查询单词转换为正确的单词。对于完全匹配,将原始单词加入哈希集合;对于忽略大小写的情况下的匹配,将单词转成小写,然后将转成小写之后的单词和原始单词存入大小写哈希表;对于忽略元音的情况下的匹配,将单词中的所有元音使用点号替换,然后将替换元音之后的单词和原始单词存入元音哈希表。class Solution {private: string LowerWord(const string& str.原创 2022-05-14 16:54:13 · 338 阅读 · 0 评论 -
leetcode解题思路分析(一百一十四)959 - 965 题
由斜杠划分区域在由 1 x 1 方格组成的 n x n 网格 grid 中,每个 1 x 1 方块由 ‘/’、‘’ 或空格构成。这些字符会将方块划分为一些共边的区域。给定网格 grid 表示为一个字符串数组,返回 区域的数量 。请注意,反斜杠字符是转义的,因此 ‘’ 用 ‘\’ 表示DFS或者BFS或者并查集均可class Solution {public: int find(vector<int>& f, int x) { if (f[x] == x.原创 2022-05-03 22:42:12 · 288 阅读 · 0 评论 -
关于校招简历和面试的吐槽(扩展版)
一. 前言 两年前写过两篇《面试官角度看简历和笔试,不得不吐的槽》《面试官角度看校招面试之吐槽》,一晃2年过去了,数数看又多过了2K+的简历,面了几百场,回看之前的内容,觉得又可以补充一批新的槽点与时俱进。二.简历有倾向性什么叫有倾向性呢,比如你旨在面后端,那简历项目写一堆和后端无关的项目那肯定不会是明智的选择,下面随便举几个例子,简历质量由差到好。简历1:项目经历0简历2:电子/硬件/医疗/生物等等,甚至包括写社团活动简历3:U3D/UE4简单小游戏(雷同极多,一看就能从百度、b站搜到原创 2022-04-28 21:20:18 · 413 阅读 · 0 评论 -
leetcode解题思路分析(一百一十一)937 - 943 题
重新排列日志文件给你一个日志数组 logs。每条日志都是以空格分隔的字串,其第一个字为字母与数字混合的 标识符 。有两种不同类型的日志:字母日志:除标识符之外,所有字均由小写字母组成数字日志:除标识符之外,所有字均由数字组成请按下述规则将日志重新排序:所有 字母日志 都排在 数字日志 之前。字母日志 在内容不同时,忽略标识符后,按内容字母顺序排序;在内容相同时,按标识符排序。数字日志 应该保留原来的相对顺序。返回日志的最终顺序。按规则写比较函数即可class Solution {.原创 2022-04-18 22:28:25 · 300 阅读 · 0 评论 -
leetcode解题思路分析(一百一十)930 - 936 题
和相同的二元子数组给你一个二元数组 nums ,和一个整数 goal ,请你统计并返回有多少个和为 goal 的 非空 子数组。子数组 是数组的一段连续部分。可以用前缀和+哈希表解决:前缀和记录了以i结尾的前缀和,减去goal得到的是之前的前缀和数量,累加即可。另一种做法是不用哈希表记录,而是使用双指针滑动来统计一个区间。class Solution {public: int numSubarraysWithSum(vector<int>& nums, int goa.原创 2022-03-15 22:16:16 · 439 阅读 · 0 评论 -
leetcode解题思路分析(一百零九)923 - 929 题
三数之和的多种可能给定一个整数数组 arr ,以及一个整数 target 作为目标值,返回满足 i < j < k 且 arr[i] + arr[j] + arr[k] == target 的元组 i, j, k 的数量。由于结果会非常大,请返回 109 + 7 的模。保存每个数字出现的次数,然后遍历之class Solution {public: int mod=1e9+7; int threeSumMulti(vector<int>& arr,.原创 2022-03-06 10:42:19 · 660 阅读 · 0 评论 -
leetcode解题思路分析(一百零八)916 - 922 题
单词子集给你两个字符串数组 words1 和 words2。现在,如果 b 中的每个字母都出现在 a 中,包括重复出现的字母,那么称字符串 b 是字符串 a 的 子集 。例如,“wrr” 是 “warrior” 的子集,但不是 “world” 的子集。如果对 words2 中的每一个单词 b,b 都是 a 的子集,那么我们称 words1 中的单词 a 是 通用单词 。以数组形式返回 words1 中所有的通用单词。你可以按 任意顺序 返回答案。本质就是检查words1中每个单词是否包含了words.原创 2022-02-15 21:08:51 · 463 阅读 · 0 评论 -
leetcode解题思路分析(一百零七)909 - 915 题
蛇梯棋给你一个大小为 n x n 的整数矩阵 board ,方格按从 1 到 n2 编号,编号遵循 转行交替方式 ,从左下角开始 (即,从 board[n - 1][0] 开始)每一行交替方向。返回达到编号为 n2 的方格所需的最少移动次数,如果不可能,则返回 -1。我们可以将棋盘抽象成一个包含 N^2个节点的有向图,原问题等价于在这张有向图上求出从 1 到 N^2 的最短路长度。class Solution { pair<int, int> id2rc(int id, int.原创 2022-02-07 18:37:19 · 604 阅读 · 0 评论 -
leetcode解题思路分析(一百零六)902 - 908 题
最大为 N 的数字组合我们有一组排序的数字 D,它是 {‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’} 的非空子集。(请注意,‘0’ 不包括在内。)现在,我们用这些数字进行组合写数字,想用多少次就用多少次。例如 D = {‘1’,‘3’,‘5’},我们可以写出像 ‘13’, ‘551’, ‘1351315’ 这样的数字。返回可以用 D 中的数字写出的小于或等于 N 的正整数的数目。分情况讨论,小于N位数的情况下随意排列均可,等于N位数则需要从首位数开始逐个考虑。clas.原创 2022-01-30 00:13:37 · 885 阅读 · 0 评论 -
leetcode解题思路分析(一百零五)895 - 901 题
最大频率栈实现 FreqStack,模拟类似栈的数据结构的操作的一个类。用一个变量存储最大频率,用一个哈希表存储每个值和其对应的频率,再用一个哈希表存储每个频率对应的栈。例如输入x,y,z 它们的频率都都是1, 所以{1, {x, y,z}}继续输入z,y, x 这个时候它们的频率已经是2了,这个时候其实hashmap中存现{1, {x, y,z}}{2, {z, y,x}}继续输入x,y{1, {x, y,z}}{2, {z, y,x}}{3, {x,y}}。class Freq.原创 2022-01-23 16:38:44 · 434 阅读 · 0 评论 -
leetcode解题思路分析(一百零四)888 - 894 题
公平的糖果交换爱丽丝和鲍勃拥有不同总数量的糖果。给你两个数组 aliceSizes 和 bobSizes ,aliceSizes[i] 是爱丽丝拥有的第 i 盒糖果中的糖果数量,bobSizes[j] 是鲍勃拥有的第 j 盒糖果中的糖果数量。两人想要互相交换一盒糖果,这样在交换之后,他们就可以拥有相同总数量的糖果。一个人拥有的糖果总数量是他们每盒糖果数量的总和。返回一个整数数组 answer,其中 answer[0] 是爱丽丝必须交换的糖果盒中的糖果的数目,answer[1] 是鲍勃必须交换的糖果盒中的.原创 2022-01-16 21:44:27 · 426 阅读 · 1 评论 -
leetcode解题思路分析(一百零三)881 - 887 题
救生艇第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回载到每一个人所需的最小船数。(保证每个人都能被船载)。贪心算法:双指针滑动,如果最轻+最重可以坐得下,则一起走,否则把最重的人先驮走class Solution {public: int numRescueBoats(vector<int> &people, int limit) { int a.原创 2022-01-04 22:37:20 · 367 阅读 · 0 评论 -
leetcode解题思路分析(一百零一)867 - 873 题
转置矩阵给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。加粗样式class Solution {public: vector<vector<int>> transpose(vector<vector<int>>& matrix) { int m = matrix.size(), n = matrix[0].size(); .原创 2021-12-13 18:59:07 · 504 阅读 · 0 评论 -
leetcode解题思路分析(一百)860 - 866 题
柠檬水找零在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。逐个判断即可class Solution {pub.原创 2021-12-06 18:46:46 · 191 阅读 · 0 评论 -
leetcode解题思路分析(九十九)853 - 859 题
车队N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地。每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地。一辆车永远不会超过前面的另一辆车,但它可以追上去,并与前车以相同的速度紧接着行驶。此时,我们会忽略这两辆车之间的距离,也就是说,它们被假定处于相同的位置。车队 是一些由行驶在相同位置、具有相同速度的车组成的非空集合。注意,一辆车也可以是一个车队。即便一辆车在目的地才赶上了一个车队,它们仍然会被视作是同一个车队。.原创 2021-11-29 21:02:36 · 393 阅读 · 0 评论 -
leetcode解题思路分析(九十八)846 - 852 题
一手顺子爱丽丝有一手(hand)由整数数组给定的牌。 现在她想把牌重新排列成组,使得每个组的大小都是 W,且由 W 张连续的牌组成。如果她可以完成分组就返回 true,否则返回 false。记录每个牌是否用过,排序后依次找即可class Solution {public: bool isNStraightHand(vector<int>& hand, int groupSize) { int len = hand.size(); // .原创 2021-11-20 16:46:08 · 508 阅读 · 0 评论 -
leetcode解题思路分析(九十七)839 - 845 题
相似字符串给你一个字符串列表 strs。列表中的每个字符串都是 strs 中其它所有字符串的一个字母异位词。请问 strs 中有多少个相似字符串组?用并查集的思想,将字符串数组转化为一个图求联通的边的问题class Solution {public: vector<int> f; int find(int x) { return f[x] == x ? x : f[x] = find(f[x]); } bool check(cons.原创 2021-11-08 18:52:15 · 128 阅读 · 0 评论 -
leetcode解题思路分析(九十六)832 - 838 题
翻转图像给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。在一次遍历中,即进行逆序也进行值的反转,用双指针完成任务class Solution {public: vector<vector<int>>.原创 2021-10-30 10:22:19 · 2948 阅读 · 0 评论 -
leetcode解题思路分析(九十五)825 - 831 题
适龄的朋友人们会互相发送好友请求,现在给定一个包含有他们年龄的数组,ages[i] 表示第 i 个人的年龄。当满足以下任一条件时,A 不能给 B(A、B不为同一人)发送好友请求:age[B] <= 0.5 * age[A] + 7age[B] > age[A]age[B] > 100 && age[A] < 100否则,A 可以给 B 发送好友请求。注意如果 A 向 B 发出了请求,不等于 B 也一定会向 A 发出请求。而且,人们不会给自己发送好友请求。.原创 2021-10-16 23:42:02 · 299 阅读 · 0 评论 -
leetcode解题思路分析(九十四)818 - 824 题
赛车你的赛车起始停留在位置 0,速度为 +1,正行驶在一个无限长的数轴上。(车也可以向负数方向行驶。)你的车会根据一系列由 A(加速)和 R(倒车)组成的指令进行自动驾驶 。现在给定一个目标位置,请给出能够到达目标位置的最短指令列表的长度。加粗样式class Solution {public: int racecar(int target) { queue<pair<int,int>>que; set<pair<int,.原创 2021-10-13 22:55:43 · 448 阅读 · 0 评论 -
leetcode解题思路分析(九十三)811 - 817 题
子域名访问计数一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名 “com”。给定一个带访问次数和域名的组合,要求分别计算每个域名被访问的次数。其格式为访问次数+空格+地址,例如:“9001 discuss.leetcode.原创 2021-10-01 22:54:09 · 225 阅读 · 0 评论 -
leetcode解题思路分析(九十二)804 - 810 题
唯一的摩尔斯密码给定一个单词列表,每个单词可以写成每个字母对应摩尔斯密码的组合。例如,“cab” 可以写成 “-.-…–…”,(即 “-.-.” + “.-” + “-…” 字符串的结合)。我们将这样一个连接过程称作单词翻译。返回我们可以获得所有词不同单词翻译的数量。class Solution {public: int uniqueMorseRepresentations(vector<string>& words) { set<string&.原创 2021-09-22 22:22:08 · 270 阅读 · 0 评论 -
leetcode解题思路分析(九十一)796 - 803 题
旋转字符串给定两个字符串, A 和 B。A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = ‘abcde’,在移动一次之后结果就是’bcdea’ 。如果在若干次旋转操作之后,A 能变成B,那么返回True。题目主要思路是,A + A若包含B则满足,不包含则没有,所以实际问题是找子串的问题,采取KMP即可class Solution {public: void getNext(string& p, vector<int>& next) {.原创 2021-09-16 22:39:04 · 828 阅读 · 0 评论 -
leetcode解题思路分析(九十)789 - 795 题
逃脱障碍者你在进行一个简化版的吃豆人游戏。你从 [0, 0] 点开始出发,你的目的地是 target = [xtarget, ytarget] 。地图上有一些阻碍者,以数组 ghosts 给出,第 i 个阻碍者从 ghosts[i] = [xi, yi] 出发。所有输入均为 整数坐标 。只有在你有可能成功逃脱时,输出 true ;否则,输出 false 。曼哈顿距离编辑求解class Solution {public: int manhattanDistance(vector<in.原创 2021-09-08 22:02:14 · 264 阅读 · 0 评论 -
leetcode解题思路分析(八十九)781 - 788 题
森林中的兔子森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在 answers 数组里。返回森林中兔子的最少数量。如果有 x 只兔子都回答 y,则至少有 x / (y + 1) 取上界种不同的颜色,且每种颜色有 y+1只兔子class Solution {public: int numRabbits(vector<int> &answers) { unordered_map<int,.原创 2021-09-04 11:04:52 · 344 阅读 · 0 评论 -
leetcode解题思路分析(八十八)771 - 780 题
宝石与石头给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。集合的简单使用class Solution {public: int numJewelsInStones(string jewels, string stones) { int cnt = 0; std::unordered_set<char> m_set; f.原创 2021-08-24 20:59:01 · 389 阅读 · 0 评论 -
leetcode解题思路分析(八十七)764 - 770 题
最大加号标志在一个大小在 (0, 0) 到 (N-1, N-1) 的2D网格 grid 中,除了在 mines 中给出的单元为 0,其他每个单元都是 1。网格中包含 1 的最大的轴对齐加号标志是多少阶?返回加号标志的阶数。如果未找到加号标志,则返回 0。四方遍历求一边即可class Solution {public: int orderOfLargestPlusSign(int N, vector<vector<int>>& mines) { .原创 2021-08-16 21:58:57 · 215 阅读 · 0 评论 -
leetcode解题思路分析(八十六)753 - 763 题
破解保险箱有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位是 k 位序列 0, 1, …, k-1 中的一个 。你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。举个例子,假设密码是 “345”,你可以输入 “012345” 来打开它,只是你输入了 6 个字符.请返回一个能打开保险箱的最短字符串。欧拉回路+hierholzer算法+贪心解决class Solution {public: string crackSafe(int n, int.原创 2021-08-10 19:04:42 · 449 阅读 · 0 评论 -
leetcode解题思路分析(八十五)744 - 750 题
寻找比目标字母大的最小字母给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。直接暴力搜索可以,二分查找亦可以class Solution {public: char nextGreatestLetter(vector<char>& letters, char target) { int nLeft = 0, nRight = letters..原创 2021-08-01 11:35:31 · 310 阅读 · 0 评论