企业真题笔记
17岁歌手想当果果
想吃想睡想见果果
展开
-
数据结构0902
树1.平衡二叉树(AVL树)和红黑树的定义,特点以及区别平衡二叉树(AVL树):平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。一句话表述为:以树中所有结点为根的树的左右子树高度之差的绝对值不超过1。将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只可能是-...原创 2020-09-08 20:37:44 · 154 阅读 · 0 评论 -
20200827动态规划(1.4键键盘 ) 贪心算法 (2.无重叠区间 3.用最少数量的箭引爆气球)
1.4键键盘其实就是要么直接输入数字 每次+1 要么复制 复制就看几次了 所以这个得到复制值不断比较即可不知道为什么我的超出时间限制class Solution {public: int maxA(int N) { vector<int>dp(N+2,0); for(int i=1;i<=3;i++){ dp[i]=i; } for(int i=4;i<=N;i++){原创 2020-08-28 20:59:02 · 159 阅读 · 0 评论 -
20200826动态规划(1.最长公共子序列 2. 最长回文子序列 3.博弈问题 石子游戏 )
1.最长公共子序列这道题和编辑距离的题 比较类似 使用动态规划双循环字符串的长度 然后判断若字符相同 则等于前面的 i-1 j-1 进行+1若不相同 则等于前面的(双前和单前)的最大值dp时刻注意初始化问题自己原创代码class Solution {public: int longestCommonSubsequence(string text1, string text2) { int n1=text1.size(); int原创 2020-08-27 16:05:47 · 108 阅读 · 0 评论 -
输入 逗号隔开的一组数据
https://blog.csdn.net/weixin_43821376/article/details/100490943原创 2020-08-26 14:33:49 · 865 阅读 · 0 评论 -
20200825动态规划(1.完全背包问题 2.高楼扔鸡蛋 3.戳气球 切记vector初始化长度不初值自动为0 临时变量数组不可,要全局或者初始化)
1.完全背包问题就是说01背包不同的是 每件物品都不限量了#include <bits/stdc++.h>using namespace std;const int maxn = 1000 + 5;int w[maxn], v[maxn], dp[maxn];int main(){ int N, W; cin >> N >> W; for(int i = 1; i <= N; ++i) cin >&g原创 2020-08-26 14:31:24 · 171 阅读 · 0 评论 -
20200821动态规划(1.最长上升子序列 1.1 最大子序和 2.分割等和子集(子集背包问题) 3.注意初始化临时变量问题 零钱兑换II)
1.最长上升子序列这道题和最长抖动序列(花匠)问题的区别在于 抖动序列每次递推 都为dp表保存了两个值 ,一个是上升表一个是下降表 这其中 无论当前值与前一个值的大小关系 都包含了取与不取的关系 也就是 这个表下来 包含了取任意多少的元素情况 因此最后结果直接cout即可但是这道上升子序列问题 首先只有一个变量 就是当前位置 其次它只考虑了取当前值的问题 如果不取当前值(也就是数字未递增)就没有进行更新新递归表 所以它需要在指针走到每一位置 取一下最大值max 最终输出m原创 2020-08-24 11:13:03 · 119 阅读 · 0 评论 -
20200823猿辅导两道题(1.猜数字大小 2. 最大子矩阵)
1.猜数字大小这道题要考动态规划dp[i][j]表示的是 从i 到j 要花多少钱选项有选两个边值 也可以选中间的任何值 所以来找出需要的最大花费注意1.要注意虽然求的是最大花费,但是是考虑策略的 不是毫无目的的刻意最大 要考虑到因为我们猜是只能去猜最大 或者最小的 还有中间的某一个值 要求其中的最小的 但我们没法确定目标值是在左还是右 所以要求左右花费的最大值注意2:动态规划求最值的时候必须从基础到上层 从简单情况到目标情况 对于这个题来说的话就是先计算左右比较短的原创 2020-08-24 10:21:36 · 456 阅读 · 0 评论 -
20200820动态规划(1.零钱兑换 2. 目标和 3.01背包问题 )
1.零钱兑换自己思考的是 首先只有一个变量 就是当前金额余量 ,那么动态规划要自底向上所以要从金额为1开始往上进行计算 这是第一个循环 第二个循环是对于每种硬币如果硬币面值小于当前金额 就规划 一下 扣掉当前面值之前的数量+1class Solution {public: int coinChange(vector<int>& coins, int amount) { if(amount==0)return 0; if(amount原创 2020-08-21 10:07:20 · 162 阅读 · 0 评论 -
memset函数用法
memset用来进行内存赋值 但是最好不要赋非0值容易导致错误memset(a,0,sizeof(a));参考文献https://www.cnblogs.com/yhlboke-1992/p/9292877.html原创 2020-08-21 09:45:22 · 90 阅读 · 0 评论 -
20200813刷题 动态规划(1.花匠(最长摆动序列) 2.小朋友的数字)
1.花匠刷题链接https://ac.nowcoder.com/acm/problem/16535思路就是一个最长摆动序列我本来想的是要分奇偶 但是这样很难实现 要求出一个通用的状态转移方程 递推公式 就应该不分奇偶 他分的是看最后是上升序列还是下降序列 根据当前这个和前一个的关系如果data[i]==data[i-1] 没有带来改变如果 data[i]>data[i-1] data[i]<data[i-1] 分类讨论 一旦变换了摆动 摆动序列原创 2020-08-17 21:55:49 · 129 阅读 · 0 评论 -
20200812刷题(1.DFS走出迷宫 2.dp美丽系列 3.dp传纸条)
1.走出迷宫刷题链接https://ac.nowcoder.com/acm/problem/14572注意1:这道题自己做的 可以通过样例但是超出时间限制原因在于没有避免他重复回头寻找 这样一来就复杂度提升了解决办法是通过设置已经搜索过的位置为脏位(‘#’)防止回头复杂度降低注意2:对于有多组输入的情况 全局变量数组一定要进行 清空使用#include<string.h> memset(data, 0, sizeof(data)); flag=0;来进行原创 2020-08-13 10:13:00 · 144 阅读 · 0 评论 -
20200811 DFS刷题(1.选择困难症 2.贝伦卡斯泰露 3.数的划分)
1.选择困难症刷题链接https://ac.nowcoder.com/acm/problem/13594#include<iostream>#include<vector>#include<string.h>using namespace std;int count=0;int temp;int N,M; int data[6][100];void dfs(int cur,int num){ if((cur>M) &&a原创 2020-08-11 21:27:23 · 124 阅读 · 0 评论 -
20200810刷题宝藏(DFS 小猫爬山,字节0809笔试工厂零件问题,soduko数独问题)
1.小猫爬山注意1:切记 在定义的data vector固定了大小的情况下一定要谨慎使用sort函数 因为有许多没有数据的0值 所以容易出错注意2.切记在cin>>data【i】的时候一定要定义data的大小#include<iostream>#include<vector>#include<algorithm>using namespace std;int N,W;vector<int>cat(20);int minc=2原创 2020-08-11 14:39:41 · 246 阅读 · 0 评论 -
《算法竞赛进阶指南》题目练习
https://ac.nowcoder.com/acm/archive/oi-advance?pageSize=10&page=2https://blog.csdn.net/hqg_ac/category_8657490.html原创 2020-08-10 15:21:20 · 383 阅读 · 0 评论 -
20200808网抑云笔试(动态规划 补全回文串)刷题(粉刷房子,会议室(最多一心几用))
1.网抑云题 一个是进行字符串补全使之成为回文串 AC70% 另一个是一堆物品平均分给两个人 (允许丢弃) 求最少丢弃字符串补全为回文串的我的做法是 动态规划 判断if(s[i]==s[j])是的话就dp[i][j]=dp[i+1][j-1]否则 的话就是我们的dp[i][j]=dp[i+1][j]要注意的是对于动态规划 状态转移来计算dp[i][j]的时候要从小到大 否则前面计算好的可能被后面的计算覆盖掉先计算边缘 dp[i][i] 然后增大 如果你直接原创 2020-08-09 16:53:15 · 292 阅读 · 0 评论 -
20200723广联达笔试(hashmap的错误引址,vector大小一定要设置!调试)
1.平行四边形构造我认为就是计算矩形的大小 然后在数组中取最大的两个个数超过2 的数#include<iostream>#include<vector>#include<algorithm>#include<map>using namespace std;int main() { cout << "hello, jianwen" << endl; int n; cin >> n; vector<原创 2020-07-29 14:58:22 · 288 阅读 · 0 评论 -
输入输出自测场 https://ac.nowcoder.com/acm/contest/5646
https://ac.nowcoder.com/acm/contest/5646原创 2020-07-23 10:11:33 · 3794 阅读 · 0 评论 -
20200716笔记(1.N 叉树的最大深度2.检查网格中是否存在有效路径3.验证二叉搜索树)
1.N 叉树的最大深度类似于二叉树的深度二叉树的深度是我自己写的深度优先搜索DFS函数/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<Node*> _children原创 2020-07-18 14:51:52 · 84 阅读 · 0 评论 -
20200715字节刷题准备(字符串的最大公因子,复原IP地址,乘积最大子数组)
字符串的最大公因子其实就是对于两个字符串的长度 来取公约数 只要能当做两个整除的 就作为备选的然后一个一个看 按照这些每一个长度 截取到字符串的前几个字符 作为公因子 假如以他们来填充 是对的 那么作为res 遍历完备选的长度 就可以了class Solution {public: string gcdOfStrings(string str1, string str2) { vector<int>temp; int i.原创 2020-07-15 19:47:46 · 159 阅读 · 0 评论 -
关于输入输出的第二次总结
1.为什么字节7.11不能AC 原因在于循环没有设置终止条件要么在while判断中设置终止要么在循环进行中设置终止cin>>temp 其实就是读入一个无空格的数据遇到空格和换行都停止所以可以作为循环的判断条件while(cin>>temp)字符串题3注意对于数组或者临时变量都需要及时的晴空 否则会导致错误还有就是对于这个题 分都好隔开的 那么遇到逗号就把temp塞进数组中 继续进行 要注意最后一个数是没有逗号的 所以要单独处理这里是输入原创 2020-07-14 19:45:57 · 133 阅读 · 0 评论 -
计算机网络总结
第一章 概述1.ISP互联网服务提供商互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。2.主机之间的通信方式客户、服务器(C/S)对等(P2P)3.电路交换和分组交换(1)电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%。(2)每原创 2020-07-08 15:49:46 · 1027 阅读 · 0 评论 -
百度2019校招网络研发工程师题(第三批)(网络地址主机号)
4.172.16.100.5/255.255.255.252 的网络地址和主机号是多少这道题考的是网络地址和主机号前一个是IP地址 后一个是子网掩码所以做法是 根据子网掩码来获知 网络号和主机号分别有多少位比如 子网掩码是 255.255.255.252化成二进制是 11111111 11111111 11111111 11111100 也就是说 有多少个1就是多少位网络号 有多少个0就是多少个主机号即30个网络号 2位主机号对于IP地址172.16.100.5最后的是5原创 2020-07-07 20:04:17 · 867 阅读 · 0 评论 -
20200705一些字节面经
https://www.nowcoder.com/discuss/447129?channel=666&source_id=home_feed字节新鲜面经(凉经)1.TCP UDP协议的头部数据(1)TCP源端口号 目的端口号 各2个字节序号 4字节确认号 4字节数据偏移 4位保留 6位 标志位 URG 紧急字段 ACK 确认 PSH 推送 RST 复位 连接错误时重建连接SYN 同步 请求连接的信号 FIN 释放连接的信号窗口检验和紧急原创 2020-07-07 09:44:59 · 336 阅读 · 1 评论 -
tpzhubei
1.static & extern被static修饰的变量只能在本文件中访问extern 是指外部声明 也就是在此处声明 在外部定义 扩大函数的作用域2.const的作用是什么限定一个只读变量限定函数参数 做形参的时候只能读取不能改变3.常量指针和指针常量4.面对对象的三大特征封装 把客观事物封装成抽象的类继承 在无需重新编写原有类的情况下对功能进行扩展多态多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术原创 2020-07-05 20:55:05 · 104 阅读 · 0 评论 -
20200705八大排序算法 手撕纪要快排归并插入冒泡
1.https://www.jianshu.com/p/e136ec79235c红黑树的组成 ,旋转,变色查找 ,插入和删除先放着 容我把排序手撕搞清楚开始排序(1) 冒泡排序 最简单void bubbleSort(vector<int> &a){ int len = a.size(); for (int i = 0; i < len - 1; i++) //需要循环次数 { for (int j = 0; j <原创 2020-07-05 16:08:11 · 189 阅读 · 0 评论 -
leetcode20200701 贪心算法
最小差值 II使用贪心算法 这道题直接用贪心 可以做因为你想 既然通过加减要让差值最小 那么这一排有序数组 第一个数一定是要加的 最后一个数是一定要减的 剩下的数可加可减 那么这个最小的差值一定是某一个数加了 下一个数减了产生的就这样class Solution {public: int smallestRangeII(vector<int>& A, int K) { if(A.size()==0){return 0;} .原创 2020-07-04 15:49:56 · 160 阅读 · 0 评论 -
leetcode 20200630 六道股票问题
121.买卖股票的最佳时机这道题维持一个最小值的记录 假如小于它 就更换最小值 假如不小于 可以去更换差值class Solution {public: int maxProfit(vector<int>& prices) { int len=prices.size(); if(len==0 ||len==1){return 0;} int zuixiao=INT_MAX; int res=0;原创 2020-07-01 17:18:40 · 165 阅读 · 0 评论 -
20200611剑指offer
1.二维数组中的查找不用看了 这个题已经刷过了 直接右上开始查找就可以2.替换空格去年做过 有点印象 就是需要让复杂度减小 因为一个空格替换为三个字符的话 我们需要多字符 每一个空格多出两个字符的话 在原来的字符串上进行操作 就从后面开始 因为从前面开始的话 就会不断替换掉字符 从后面开始的话就不会影响到前面还没操作的字符这道题注意的是 给定的是char *str 没法直接size() 所以的话就用count计算长度建新的 碰到空格反着进行%20原创 2020-06-21 16:14:15 · 128 阅读 · 0 评论 -
TPLINK 笔试记录20200617
1.实现一个内存池 提供malloc free等函数 c++2.有两台PC上的有线网卡通过网线相连,IP为同一网段,却无法互相ping通3.十进制位数在10万以内的两个数字的乘法用分治算法编程实现两个n位十进制大整数的乘法运算4.generic_swap函数是将a和b分别指向的内存区域的size个字节交换其内容5.TCP协议 连接断开过程中主动方的状态https://blog.csdn.net/vampire0008/article/details/509263166.设有5000个无序原创 2020-06-17 15:58:27 · 1319 阅读 · 0 评论 -
20200610种花问题 scanf 动态规划
1.对于奇怪的输入 我们可以使用scanf来读取#include<iostream>#include<vector>using namespace std;struct product { int num; char c;};int main() { int n, m; vector<product>pp; vector<product>res; cin >> n >> m; for (int i = 0;原创 2020-06-11 09:23:33 · 163 阅读 · 0 评论 -
刷题笔记20200609 (erase函数 n组数据的分别输入,处理以及输出)
1.万万没想到之聪明的编辑(字节跳动2019春招研发部分编程题汇总)我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello上面的规则优先“从左到右”原创 2020-06-09 11:25:25 · 274 阅读 · 0 评论 -
C++ 笔试 对于处理输入的一些常用操作
1.对于普通的 输入n 然后输入n个数的情况int n; cin >> n; vector<int>data; for (int i = 0;i < n;i++) { cin >> data[i]; }对于输入N组数据 每组数据的个数不确定的情况应该这样写int rows = 0; cin >> rows; vector<vector<int>> data(rows); int temp原创 2020-06-08 21:34:18 · 585 阅读 · 0 评论 -
字节跳动2019春招研发部分编程题 订正
1.小包最近迷上了一款叫做雀魂的麻将游戏,但是这个游戏规则太复杂,小包玩了几个月了还是输多赢少。于是生气的小包根据游戏简化了一下规则发明了一种新的麻将,只留下一种花色,并且去除了一些特殊和牌方式(例如七对子等),具体的规则如下:总共有36张牌,每张牌是1~9。每个数字4张牌。你手里有其中的14张牌,如果这14张牌满足如下条件,即算作和牌14张牌中有2张相同数字的牌,称为雀头。除去上述2张牌,剩下12张牌可以组成4个顺子或刻子。顺子的意思是递增的连续3个数字牌(例如234,567等),刻子的意思是相原创 2020-06-01 11:54:17 · 345 阅读 · 0 评论 -
快手2020校园招聘秋招笔试--工程B试卷 订正
1.三种攻击DNS欺骗攻击:冒充域名 把原来查询的IP改为其他IPddos攻击:大量合法的服务器向某一目标不断发送请求,导致其他用户无法使用SYN Flooding攻击:攻击者使用无效IP地址 利用TCP三次握手过程,连续发送回话请求,直至连接超时,最终因耗尽资源而停止响应2.TCP状态SYN表示建立连接FIN表示关闭连接ACK表示响应PSH表示有DATA数据传输RST表示连接重置 用来强制关闭那么什么时候发送RST包呢 如下几种情况 1.建立连接的SYN到达某端口 但是该端口原创 2020-05-27 19:52:49 · 436 阅读 · 0 评论 -
20200524美团点评系统开发试题 订正
8.回文子串个数给定一个字符串,你的任务是计算这个字符串中有多少个回文子串(回文串是一个正读和反读都一样的字符串)。具有不同开始位置或结束位置的回文串,即使是由相同的字符组成,也会被计为是不同的子串。我自己的代码如下思路为 子函数用来判断是否为回文子串 main函数来规定取子串函数substr的长度和起点 判断即可#include<iostream>#include<string>#include<vector> using namespace std原创 2020-05-25 13:20:04 · 323 阅读 · 0 评论 -
20200523滴滴2018计算机视觉研发算法订正(find substr) 字符串操作
1.给定一个非空字符串, 按照如下方式编码, 使得编码后长度最小, 返回编码后的长度:编码规则为: k[encoding_string], 表示重复k次encoding_strng,例如’abcdefabcdefabc’可表示为’2[abcdef]abc’, 但是’aaa’仅能编码成’aaa’,因为len(‘3[a]’)>len(‘aaa’).补充:k为正整数, []内的encoding_string不得含有空格不得为空;[]内的encoding_string 本身可以为编码过的字符串,原创 2020-05-24 19:19:10 · 227 阅读 · 0 评论 -
腾讯2020校园招聘-后台
2.高楼挡住与否的问题该题用常规方法会很复杂但是 如果用单调栈来解决就可以好办很多这里涉及单调栈 即栈中的元素是有序存放的从两个端点开始压入栈保证最大的在栈中 如果栈顶元素不如新元素大 则弹出pop()这样最后记录栈中元素的个数即可...原创 2020-05-10 15:36:07 · 703 阅读 · 0 评论 -
旷视科技2019实习生春招算法研究员笔试(线上)笔记
11.给出两个分别有序的单链表,将其合并成一条新的有序单链表。class Solution{ public: Listnode* combinelist(Listnode* l1,Listnode* l2){ if(l1==NULL){return l2;} if(l2==NULL){return l1;} ...原创 2020-05-07 18:26:46 · 549 阅读 · 1 评论 -
拼多多2018校招编程题汇总 笔记
3.第三题数三角形#include<vector>#include<iostream>using namespace std;int main(){ int n; cin>>n; vector<int>x; vector<int>y; for(int i=0;i<n;i++){ ...原创 2020-05-07 15:46:51 · 160 阅读 · 0 评论 -
快手2020校园招聘秋招笔试--算法C试卷 试卷订正
24题class Solution{ vector<int>maxpooling(vector<int>nums,int n){ int len=nums.size(); int max_; vector<int>res; for(int i=0;i<len-n+1;i++){ ...原创 2020-05-03 12:12:26 · 364 阅读 · 0 评论