- 博客(120)
- 问答 (1)
- 收藏
- 关注

原创 字节跳动面试算法题目以及答案
题目来源于牛客https://www.nowcoder.com/discuss/455003?type=post&order=time&pos=&page=2&channel=-1&source_id=search_post_nctrack
2021-01-28 20:24:16
4294
1

原创 复习算法 寻找数组中重复元素这种类型题目(原地标记法)
很明显, nums.size()=n 并且里面的每个数字在 0~n-1 之间,将每个没有归位的元素归位,如果发现待归位元素的待交换的位置是存的相同的值,也就是重复了。每次将元素归位,时间复杂度是o(n) (for中虽有while循环,但是代码运行时,while并不是每次都执行,最多执行的总次数是o(n).)将元素归位时间复杂度是o(n)(for中虽有while循环,但是代码运行时,while并不是每次都执行,最多执行的总次数是o(n).)这题和上一题基本一样,这题将所有的重复元素算出,
2021-01-23 16:08:28
293
1

原创 2020面试题汇总(已完结)
手撕字节跳动面试时出现过的算法题1.买股票的最佳时机leetcode 原题链接:买股票的最佳时机题目:121. 买卖股票的最佳时机给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。代码:class Solution {public: int maxProfit(vector<int>& prices) { int minDat
2020-12-08 00:15:51
1076

原创 面试中被问到一组有序序列(无序),求这组序列中的第n个小
之前面试的时候,被问到,我的回答是每次都取头部进行比较,然后再取剩下的进行比较。身为菜鸡的我思路有了,却写不出来,后面想一想,这种topk问题,不就是堆问题解决吗?唉。菜鸡的悲哀。如果是一个数列,求前n个如下#include<iostream>#include<queue>#include<vector>//求一组数中最小的n个数 using namespace std;class Solution {public: //获取数组中第n个小的数
2020-10-05 21:53:25
1312
原创 专题:剑指offer
JZ6 从尾到头打印链表思路:先顺序输出到栈里面 然后再以此从栈顶弹出即可JZ24 反转链表思路:借助虚拟头结点进行头插法JZ25 合并两个排序的链表方法一:迭代法方法二 递归:JZ52 两个链表的第一个公共结点方法一:循环遍历两个链表方法二·:遍历长链表 先快走几步 后面和端链表一起同步走方法一方法二JZ23 链表中环的入口结点思路:快慢指针 循环体内 快指针每次走两步 慢指针每次走一步 能够相遇也就是说明有环 然后 慢指针从头开始 另外一个指针从相遇节点开始 判断是否再次相遇 不相遇
2025-02-06 21:08:48
502
原创 杂项 基础知识整体
1.c++中的类型转换: const_cast,static_cast,dynamic_cast,reinterpret_cast。c++中的智能指针:auto_ptr、shared_ptr、weak_ptr、 unique_ptr。
2024-10-20 15:45:40
315
原创 剑指offer是不是应该来场全方位的解析
之前leetcode上面,剑指offer刷了几遍,现在牛客上面重新刷题发现,牛客网上面和leetcode有些测试用例不同,导致leetcode能过,但是牛客不能过,而且牛客网上的剑指offer输入数据的很多范围都没有给出。考虑中,剑指offer全方位解析…...
2021-04-01 17:19:30
265
转载 C/C++在main函数之前和之后会做些什么
我们看看底层的汇编代码:__start: : init stack; init heap; open stdin; open stdout; open stderr; : push argv; push argc; call _main; (调用 main) : destory heap; close stdin; close stdout; close s
2021-04-01 14:58:16
416
原创 剑指 Offer 13. 机器人的运动范围
最近想将剑指 Offer 13 重新刷一遍,因为之间是在leetcode上面做的题目,现在在牛客上面,我发现有些边界条件牛客没给出,但是面试基本手撕代码都是在牛客上面。题目:牛客:剑指 Offer 13. 机器人的运动范围leetcode:剑指 Offer 13. 机器人的运动范围思路:首先我们做这种题目是需要有一些必须写出的函数。边界函数isArea() 还有个记录是否访问的二维数组used以及方向增量数组dxy bool isArea(int rows, int cols,int t
2021-03-20 21:12:11
235
原创 字节跳动面试题求叶子节点到叶子节点的最大距离
题目:给一个类似树的结构,每个节点都可以有多个节点(不止两个树)然后每个根节点和字节点间的路径不一样,求叶子结点到叶子结点的最大路径class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children) {
2021-01-30 19:36:04
339
原创 一些基于归并排序,自下而上的递归题目讲解
首先我们看看归并排序题目:思路:自底向上1.MergeSort函数一直二分到只有一个元素,2.Merge函数代表合并已经两个已经排序的数组(双指针法)3.回溯过程在MergeSort函数中,回溯也就是自底向上的过程代码:class Solution {private: void Merge(vector<int> &arr, int start, int end,int mid, vector<int> &temparr) {
2021-01-29 10:32:30
572
3
原创 类的四个默认函数以及string 的自己实现
首先类的默认函数A(void); // 缺省的无参数构造函数A(const A &a); // 缺省的拷贝构造函数~A(void); // 缺省的析构函数A & operate =(const A &a); // 缺省的赋值函数在实现的字符串中我们发现1.一般的构造函数String::String(const char* str)//通用构造{ if (!str) {//为空。String a() length = 0;
2021-01-28 19:52:17
254
原创 leetcode 72. 编辑距离
题目:代码;这题其实可以用,动态规划和递归来解方法一:动态规划 (自底向上)题目中 针对三个条件插入一个字符删除一个字符替换一个字符我们可以具体化:word1删除最后一个元素word2删除最后一个元素word1或者word2修改最后一个元素和另外一个字符串元素相同确认状态: 首先 dp[i][j]代表着从word1 中前第i(包括i)个字符到word2中第j(包含j)个字符的最小操作数状态转移:当 word1【i】==word1【j】时,dp[i][j] =dp[i-1][j
2021-01-27 22:09:46
129
原创 c++匿名函数考察点
一般的函数形式以及调用形式int foo(int a,int b){ return a + b;}foo(1,2)首先是匿名函数形式[]//捕获列表 默认是按值捕获()//参数列表->int //函数返回值int c2 = [](int a, int b) -> int { return a + b; }(1,2); //为了能够复用lamba表达式 auto f= [](int a, int b) -> int { return a + b;
2021-01-27 11:52:21
365
原创 leetcode 32. 最长有效括号
题目:32. 最长有效括号链接思路:方法一:栈看到括号匹配问题首先想到栈,这题求连续匹配的括号长度,因此我们首先想到如何指定弹栈,入栈的规则。首先 需要明确栈中存的是下标,并不是元素值s.push(-1); -1为了 后面计算maxLen方便进行的, 不用担心越界问题,因为-1下标,并不会直接使用。入栈规则 :代表着等待弹出if(str[i]=='(') { s.push(i); }出栈规则:这代表着经过出栈后,1.原栈中若是空,则代表着不用更新元素max
2021-01-26 12:47:09
167
原创 leetcode 数独是否合法与解数独
题目: 36. 有效的数独链接思路代码:题目:37. 解数独 链接思路:代码:class Solution {private: //vector<vector<bool>> used(9, vector<bool>(9, false)); vector<vector<bool> > row ;// vector<vector<bool> > col ;// vector<vecto
2021-01-25 23:30:41
167
原创 面试过程中常考的图形学知识汇总
1.渲染管线GAMES101-现代计算机图形学入门-闫令琪 讲的非常好 文字参考链接:首先,我必须对于英文翻译成中文的几个词作出解释光栅化(Rasterize/rasteriztion)。这个词儿Adobe官方翻译成栅格化或者像素化。没错,就是把矢量图形转化成像素点儿的过程。我们屏幕上显示的画面都是由像素组成,而三维物体都是点线面构成的。要让点线面,变成能在屏幕上显示的像素,就需要Rasterize这个过程。就是从矢量的点线面的描述,变成像素的描述。如下图,这是一个放大了1200%的屏幕,前面是
2021-01-24 11:02:50
1251
原创 大数相加,大数相乘
题目:大数相加链接思路:为了方便两个字符串相加,我们将短的字符串,前面补0,最重要的一点是我们需要设置进位标志ok代码:class Solution {public: string addStrings(string num1, string num2) { int ok=0; string ret; int size_num1=num1.size(); int size_num2=num2.size();
2021-01-21 20:06:11
258
1
原创 1293. 网格中的最短路径
题目:1293. 网格中的最短路径链接1294. 思路:这题我们可以采用bfs和dfs来做,首先我们需要明白bfs由于相当于没有回溯的过程,因此bfs是不需要遍历完所有节点就可以找到到目的的最短路径,但是由于dfs有借助于回溯的思想,因此是需要遍历完所有节点才可以知道最短路径长度。方法一bfs:思路首先,我们采用seen这个二维的vector里面存放着从起始点以相同的步数走到当前位置过程中,这个位置存放的最小的障碍obstacle数目(由于后面做了剪枝,因此只要obstacle数目>k
2021-01-19 21:29:51
1255
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人