- 博客(105)
- 资源 (5)
- 收藏
- 关注
原创 AtCoder Beginner Contest 190 题解(A-D)
AtCoder Beginner Contest 190题目A - Very Very Primitive Game思路:模拟代码:#include <bits/stdc++.h>using namespace std;int main() { int a, b, c; cin >> a >> b >> c; if(c == 0) { if(a > b) { cout << "Takahashi"; } els
2021-01-30 21:54:26
607
5
原创 字节跳动客户端一面面经(附答案)
福利来啦:后台回复“20210126”,获取PDF版面经题解~主题一:C++t1. int a[10]; 这个数组的数组变量和数组内容都是存在哪里的?若是全局数组,则会被创建在静态存储区;其他情况会被分配在栈上。t2.指针数组和数组指针的区别?指针数组本质上是数组,每个数组元素指向一个int型变量的地址,数组占多少个字节由数组本身决定。数组指针本质上是指针,是一个指向一个数组的指针变量,32位系统下永远占4个字节。t3. STL中vector和list的区别?vector和数组类似,拥有.
2021-01-30 10:51:11
1453
2
原创 字节跳动客户端三面面经(带答案!!!)
文末有福利!可下载pdf版面经!!!主题一:C++t1.vector的扩容机制?vector通过一个连续的数组存放元素,如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素;对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了;初始时刻vector的capacity为0,塞入第一个元素后capacity增加为1;不同的编译器实现的扩容方式不一样,VS2015中以1.5倍扩容,GCC以.
2021-01-25 22:35:41
1554
原创 字节跳动客户端二轮面试(附带答案版~~~)
文末有福利噢!主题一:C++t1. 内存分配方式一般有哪些?堆和栈的差别?一般来说,程序运行时有三种内存分配方式:静态的、栈式的、堆式的:(1)静态存储:是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。(2)栈式存储:由编译器自动分配释放 ,存放函数参数、局部变量等。(3)堆式存储:一般由程序员分配释放,若程序员不释放,程序结束时可由 OS 自动回收。如我们用 new,malloc 分配内存,用 delete,free来释放内存。堆和栈的区别主要有以下几点:(
2021-01-18 22:14:29
1554
2
原创 字节跳动客户端一轮面试(附带答案版~~~)
2021年1月5号面试字节跳动客户端,约50分钟。面完之后10分钟就进行二面了。文末有福利噢!主题一:C++t1. 有没有了解过拷贝构造函数?定义:拷贝构造函数是一种特殊的构造函数,函数的名称必须和类名称一致,它必须的一个参数是本类型的一个引用变量。作用:用来复制对象,使用这个对象的实例来初始化这个对象的一个新的实例。调用时机:当函数的参数为类的对象时函数的返回值是类的对象对象需要通过另外一个对象进行初始化。拷贝构造函数默认为浅拷贝。浅拷贝是指当出现类的等号.
2021-01-13 09:58:32
4201
4
原创 层序遍历?看这一篇就够了!
点关注不迷路1.树的层序遍历顾名思义,对于树型结构,层序遍历就是按层从上到下,每层按一定顺序对树的节点进行遍历。我们通过如图所示的二叉树进行说明:对于左边的二叉树,按层划分后可得到右边的分层结构。如果按照每层从左到右的遍历逻辑,这棵二叉树的层序遍历序列就是 [1,4,2,7,20,5][1, 4, 2, 7, 20, 5][1,4,2,7,20,5]。通过代码如何实现呢?一般地,我们利用队列 queuequeuequeue 作为容器,按照如下逻辑进行遍历:// 0. 声明队列queue<T
2021-01-09 12:24:35
18212
2
原创 LeetCode 第 222 场周赛 题解
第 222 场周赛题目1:5641. 卡车上的最大单元数题目描述:请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] = [numberOfBoxesi, numberOfUnitsPerBoxi] :numberOfBoxesi 是类型 i 的箱子的数量。numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。整数 truckSize 表示卡车上可以装载 箱子 的 最大数量 。只要箱子数量不超过 truckSize
2021-01-03 12:39:11
2815
原创 LeetCode 第 219 场周赛 题解
第 219 场周赛关注我们,查看更多优质题解题目1:5625. 比赛中的配对次数思路:模拟代码:class Solution {public: int numberOfMatches(int n) { int ret = 0; while(n > 1) { int cur = n / 2; // 比赛次数,也是晋级队伍数量 ret += cur; // 计入比赛场次 n -= c
2020-12-13 12:19:43
240
原创 牛客巅峰赛第7场-牛牛的独特子序列
牛牛的独特子序列解法1:前缀和 + 二分思路:包含三个字母的子序列问题不好考虑,我们来想一下如果简单化为 a,ba, ba,b 两个字母的情况。也即如何在给定字符串中找到最长的形如 anbna^n b^nanbn 的子序列。这个问题的 O(n)O(n)O(n) 复杂度方法是,遍历字符串每一个位置 indexindexindex,以该位置为 a,ba, ba,b 字母的分界线,取该位置以前字母 aaa 出现的次数,以及该位置以后字母 bbb 出现的次数(提前维护前缀和,获取出现次数复杂度为 O(1)
2020-12-08 22:01:05
223
1
原创 LeetCode 第 218 场周赛 题解 C++
第 218 场周赛给作者三连!!!题目1:5617. 设计 Goal 解析器思路:模拟代码:class Solution {public: string interpret(string s) { int n = s.size(); int i = 0; string ret = ""; while(i < n) { if(s[i] == '(' && s[i + 1] == '
2020-12-06 13:07:21
345
2
原创 LeetCode 第 217 场周赛 题解 C++
第 217 场周赛来看完整版题解,给作者三连!!!题目1:5613. 最富有客户的资产总量思路:模拟代码:class Solution {public: int maximumWealth(vector<vector<int>>& a) { int n = a.size(); int m = a[0].size(); int res = 0, pos = 0; for(int i = 0; i
2020-11-29 16:10:41
272
1
原创 LeetCode 第 216 场周赛 题解
LeetCode 第 216 场周赛来看配图版题目1:5605. 检查两个字符串数组是否相等思路:模拟将两个数组的字符串分别按序拼接,然后比较两字符串是否相等即可。代码:class Solution {public: bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) { string a = "", b = ""; for
2020-11-22 16:51:31
246
原创 LeetCode 第204场 周赛 题解!!!!
第 204 场周赛全套周赛题解新鲜出炉!题目1:5499. 重复至少 K 次且长度为 M 的模式思路:遍历签到题。第一层循环遍历子数组起点,第二层循环遍历子数组终点之后的部分,遍历 kkk 次,若不匹配则返回 falsefalsefalse,第二层循环遍历完成后说明匹配成功,返回 truetruetrue。否则继续匹配新的子数组,第一层循环遍历结束后还没有返回说明未匹配,返回 falsefalsefalse 。代码:class Solution {public: bool contai
2020-08-30 18:06:28
145
原创 LeetCode 第33场双周赛 题解
第 33 场双周赛关注"Grand Theft Algorithm",带你吃透算法题!## 题目1:[5479. 千位分隔数](https://leetcode-cn.com/problems/thousand-separator/)思路:模拟签到题,把整数变为字符串,从后向前遍历,每三位加点即可。代码:class Solution {public: string thousandSeparator(int n) { string s = to_string(n
2020-08-23 09:28:16
144
原创 牛客等级之题N2(8.19场) 牛妹和01串
欢迎关注我们的公众号:Grand Theft Algorithm专注算法题解、算法技术文分享二分法保证教会你就是个简单的贪心,两个布尔值判断当前段内是否有0和1,若遍历到某一字符时两个布尔值均为True,则可以分一段新的出来,然后两个布尔值更新即可。#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 5;int a[maxn], b[maxn];int main() { string s
2020-08-19 16:10:40
202
原创 技术文 | Billy陪你聊二分
欢迎关注公众号:Grand Theft Algorithm,看完整版技术文!引入借着二分答案的题目LeetCode 202场周赛,正好来跟大家聊聊二分系列~最经典的二分问题就是猜数问题:一个人选定一个1到100的数,第二个人有多次机会,每次猜一个数,第一个人会告诉第二个人猜的数比选定的数大还是小,然后第二个人继续猜,直到猜到答案。在这个问题里,当然每次猜可选区域里的中间元素即可,每次如果猜的数小了,就把区域上界缩小到猜的数;如果猜的数大了,就把区域下界提高到猜的数。简单代码如下:void gues
2020-08-19 10:49:38
131
1
原创 牛客等级之题N2(8.18场)Audio 题解
已知三点求圆心坐标:(关注自媒体 Grand Theft Algorithm,回复01送算法大礼包)#include <bits/stdc++.h>using namespace std;//常数double const pai = 3.1415926535897932384626;//坐标点结构struct point{ double x; //横坐标 double y; //纵坐标};//直线方程结构struct line{ d
2020-08-18 08:29:37
132
原创 LeetCode 第 202 场周赛 题解
第 202 场周赛题目1:5185. 存在连续三个奇数的数组思路:暴力签到题,暴力遍历即可。代码:class Solution {public: bool threeConsecutiveOdds(vector<int>& a) { int len = a.size(); for(int i = 0; i <= len - 3; i++) { if(a[i] % 2 == 1 && a[i
2020-08-16 13:50:37
174
原创 牛客编程巅峰赛S1第11场 - 青铜&白银 A B 题解
题目链接:https://ac.nowcoder.com/acm/contest/6911看之前,希望老铁们来个三连击,给更多的人看到这篇文章1、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。2、老铁们,关注我的原创微信公众号**「Grand Theft Algorithm」**,专注于写算法题解 + 计算机基础知识。关注回复01送你算法大礼包!A题签到,判断不能得到0用map判断一下之前是否出现过同样的数即可,出现过说明陷入循环肯定得不到。重点细节在于n < 0时就直接返
2020-08-13 21:22:06
440
原创 牛客等级之题N1(8.13场)3的倍数
题目链接:https://ac.nowcoder.com/acm/contest/7046/A有收获?希望老铁们来个三连击,给更多的人看到这篇文章1、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。2、老铁们,关注我的原创微信公众号**「Grand Theft Algorithm」**,专注于写算法题解 + 计算机基础知识分析最容易想到的办法是通过记录每个字符串中每个字母出现的次数,然后将所有n个字符串进行各种组合,确定最多可选择的字符串数。但是这样的复杂度为2的n次方,肯定不行。
2020-08-13 11:31:23
261
原创 牛客等级之题N2(8.13场)斐波那契前n项平方和
题目链接:https://ac.nowcoder.com/acm/contest/7047/A有收获?希望老铁们来个三连击,给更多的人看到这篇文章1、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我,嘻嘻。2、老铁们,关注我的原创微信公众号「Grand Theft Algorithm」,专注于写算法题解 + 计算机基础知识分析数学归纳法可得:Sn=fn∗(fn+fn−1)S_n = f_n * (f_n + f_{n - 1})Sn=fn∗(fn+fn−1)用矩阵快速幂即可:
2020-08-13 09:27:19
944
原创 牛客等级之题N1(8.12场)小w的a=b问题
题目链接:https://ac.nowcoder.com/acm/contest/7023/A分析简单哈希即可,细节处理在于为了防止哈希冲突,需要用较大的素数,这里选择了第二大素数2147483587代码#include <bits/stdc++.h>using namespace std;const int MAXN = 1e5 + 10;const int M = 2147483587;int a[MAXN], b[MAXN];int quick_pow(int n, in
2020-08-12 20:04:57
131
原创 牛客等级之题N2(8.12场)小 w 的 a+b 问题
题目链接:https://ac.nowcoder.com/acm/contest/7024/A分析根据32位整形定义,知 c = -1 时,无解,其余情况下只需令 a = INT_MAX即可代码#include<bits/stdc++.h>using namespace std;int main(){ int c, b; cin >> c; if (c == -1){ printf("No solution\n");
2020-08-12 20:01:09
114
原创 牛客算法周周练19 题解
牛客算法周周练19欢迎来我们的公众号看各类算法比赛、算法类型的题解,每日一题,一定给你讲明白!我们的公众号: Grand Theft Algorithm也可以点击我关注哦!!!题目1:神秘钥匙思路:数学运算 + 快速幂签到题。根据题意,先要从n个人中选出队伍人数k,然后在k个人中选出一名队长,所以总方案数为:∑k=1n(Cnk∗Ck1)\sum_{k=1}^{n}{(C^k_n * C^1_k)}k=1∑n(Cnk∗Ck1)化简可得到:∑k=1n(Cnk∗Ck1)=∑k=1n(
2020-08-12 15:35:29
304
原创 Leetcode 第30场双周赛
A.转变日期格式题目链接:https://leetcode-cn.com/problems/reformat-date/第一眼看到这题就觉得用Python做会很简单,但是我的Python实在是不太行,所以就拿C++硬怼了。C++:class Solution {public: string reformatDate(string s) { string M[12] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Au
2020-07-13 11:32:49
128
原创 Leetcode 面试题64. 求1+2+…+n 题解
题目链接:https://leetcode-cn.com/problems/qiu-12n-lcof/官方题解这次是真的帅考虑 a && b,如果 a 为 false 则不会再执行 b, 语句自动退出考虑 a || b,如果 a 为 true 则不会再执行 b,语句执行下去这道题来说,从 n 加到 1,只需要让 n = 0 时不再加即可。代码如下:class Solution {public: int sumNums(int n) { int res
2020-06-02 00:25:26
138
原创 Leetcode 5409. 检查一个字符串是否包含所有长度为 K 的二进制子串 题解
题目链接:https://leetcode-cn.com/problems/check-if-a-string-contains-all-binary-codes-of-size-k/难顶,一看见子串这种东西就晕乎看了题解,滑动窗口枚举所有出现的子串,最后判断总个数是否与预期相同即可。代码如下:class Solution {public: bool hasAllCodes(string s, int k) { int cur = 0; for(int
2020-05-31 09:51:22
245
原创 Leetcode 752. 打开转盘锁 题解
题目链接:https://leetcode-cn.com/problems/open-the-lock/字符串转换成0-10000内的数字记录状态。写两个函数next和last得到变换后的状态。deadend中的小可爱们标记状态不可访问即可。代码如下:class Solution {public: bool vis[10000]; int a[4]; int trans(string s) { int res = 0; for(int
2020-05-26 13:51:44
182
原创 Leetcode 994. 腐烂的橘子 题解
题目链接:https://leetcode-cn.com/problems/rotting-oranges/一分钟写完系列,可以直接把二维坐标一维化代码如下:class Solution {public: bool inmap(int xx, int yy, int n, int m) { return xx >= 0 && xx < n && yy >= 0 && yy < m; }
2020-05-26 10:54:15
190
原创 Leetcode 面试题 04.03. 特定深度节点链表 题解
题目链接:https://leetcode-cn.com/problems/list-of-depth-lcci/一年半没有写广搜了,重新上手的第一道题还一次过了就很nice由于要不同深度分类,所以抛开传统的while(!q.empty()),还需要在里面每次计算q.size(),作为这一层的操作次数。由于每次要把当前遍历节点的左右子树继续push到队列中,所以队列要用TreeNode*型,不然只存int型的值不好判断左右子树。代码如下:/** * Definition for a binar
2020-05-24 00:26:55
192
原创 Leetcode 980. 不同路径 III 题解
题目链接:https://leetcode-cn.com/problems/unique-paths-iii/典型题找路径数或者最长路径用深搜,找最短路径用宽搜由于要求每个点都要经历过一次,所以用cnt计算出所有无障碍空格数,然后每次深搜时都递减。求路径数,所以遍历记录数组vis要时刻回溯,即当前状态下标记为true,深搜结束后再标记回false,以便于下一次从不同路径仍能到达该点代码如下:class Solution {public: int res = 0; bool
2020-05-22 11:21:44
356
原创 Leetcode 886. 可能的二分法 题解
题目链接:https://leetcode-cn.com/problems/possible-bipartition/最近学习的二分染色,开始 color 数组初始化为 -1,深搜打进去,每次的 dislike 对象若没染色,则染色为当前颜色的对立颜色(0、1),并继续深搜,否则若跟当前颜色相同,说明有错误,return false即可代码如下:class Solution {public: bool dfs(int pos, vector<int>& color,
2020-05-20 18:24:19
289
原创 Leetcode 1315. 祖父节点值为偶数的节点和 题解
题目链接:https://leetcode-cn.com/problems/sum-of-nodes-with-even-valued-grandparent/第一眼看到就想到用两个bool值参数。因为一般的DFS都是一个参数标记状态,这次要考虑祖父节点,所以用两个参数 t1 和 t2,更新如下:若当前 t2 为 true,说明其祖父节点为偶数,res += root->val,更新t2 = false若当前 t1 为 true,说明其父节点为偶数,标记t2 = true, t1 = fal
2020-05-18 10:45:40
177
原创 Leetcode 841. 钥匙和房间 题解
题目链接:https://leetcode-cn.com/problems/keys-and-rooms/用栈更好搞,只要有钥匙且没被遍历过的房间就入栈,每次取栈顶元素继续遍历。代码如下:class Solution {public: bool canVisitAllRooms(vector<vector<int>>& rooms) { stack<int> s; bool vis[rooms.size()];
2020-05-18 10:25:10
171
原创 Leetcode 130. 被围绕的区域 题解
题目链接:https://leetcode-cn.com/problems/surrounded-regions/边界的O和与之相连的不会被改,所以干脆先把边界及其相连的所有O区域全部搜出来变成个别的保护一下,然后全图剩下的O就都得变成X了,最后再把保护的变回O就可以了代码如下:class Solution {public: void dfs(int x, int y, vector<vector<char>>& board) { if(bo
2020-05-14 14:17:06
137
原创 Leetcode 1443. 收集树上所有苹果的最少时间 题解
题目链接:https://leetcode-cn.com/problems/minimum-time-to-collect-all-apples-in-a-tree/这周周赛的一道题,但是当时没弄出来。做深搜tag正好碰上了就刚一刚开始设计的dfs是 int 型,返回步数,但是不知道为啥TLE:class Solution {public: bool vis[100005]; int dfs(int pos, vector<vector<int>> e
2020-05-14 13:05:10
361
原创 Leetcode 模拟面试Ⅱ 记录
为什么难度从2easy1medium突然就变成了2medium1hard,自闭自闭1.最大宽度坡(中等)题目链接:https://leetcode-cn.com/problems/maximum-width-ramp/差点就死在第一题手上了…最开始的思路是暴力+剪枝,剪枝的思路就是对应每一个起始点得到的最长距离,作为下一次比较的初始距离。比如样例1里面先对起始点6求最大结果,为2(2 - 0),下一次对起始点0求解时,直接从 0 + 2 开始往后遍历。然后就TLE了一个50000个数据的递减自
2020-05-14 00:18:31
248
原创 Leetcode 模拟面试Ⅰ 记录
这周开始间接做一做模拟面试题,一个半小时随机三道题。第一次很开心,运气好一个小时就搞出来了:1.旋转字符串(简单)题目链接:https://leetcode-cn.com/problems/rotate-string/由于tag是简单,给的长度又都是100之内,当然开开心心的 O(n^2)暴力啦!代码如下:class Solution {public: bool rotateString(string A, string B) { if(A.size() != B.
2020-05-12 16:26:10
456
原创 Leetcode 647. 回文子串 题解(Shout out to 橙子哥)
题目链接:https://leetcode-cn.com/problems/palindromic-substrings/看了大佬的题解,整理代码如下:一、中心扩展法class Solution {public: int countSubstrings(string s) { if (s.empty()) return 0; int size = s.size(), res = 0; for (int i = 0; i < size;
2020-05-11 09:22:45
141
原创 Leetcode 523. 连续的子数组和 题解(Shout out to 橙子哥)
题目链接:https://leetcode-cn.com/problems/continuous-subarray-sum/我以为的动态规划:dp这道题的动态规划:前缀和前缀和的复杂度是O(n^2),能AC,但是可以再简化从前向后遍历,记录到当前位置前缀和模k的余数及其下标,若该余数在当前下标之前出现过,则说明这二者之间的子数组满足条件。代码如下:class Solution {public: bool checkSubarraySum(vector<int>&
2020-05-09 12:06:27
113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人