首页
学习
活动
专区
圈层
工具
发布

字节跳动2019算法笔试题第二弹,很考基础的基础题

现在,给定每一帧的特征,特征的数量可能不一样。小明期望能找到最长的特征运动。 输入描述: 第一行包含一个正整数N,代表测试用例的个数。 每个测试用例的第一行包含一个正整数M,代表视频的帧数。...其中,第一个数字是该帧的特征个数,接下来的数字是在特征的取值;比如样例输入第三行里,2代表该帧有两个猫咪特征,和 所有用例的输入特征总数和<100000 N满足1≤N≤100000...1: 3 例子说明1: 特征在连续的帧中连续出现3次,相比其他特征连续出现的次数大,所以输出3 题解 题目的题意还是比较清楚的,即找出最长连续出现的特征数量。...首先,对于题目当中的特征是用两个int的pair对代表的,相同的pair被视为是同样的特征。特征必须要连续出现才算,中间中断则重新计算。...但是我们的map当中只会存储特征连续出现的次数,并没有办法判断每一个特征有没有中断过。 对于这个问题,我们有一个很好的办法,就是使用两个map。

95430

技术解码 | RSFEC原理分析

一种简单的做法是将它们重复发一遍使接收端尽量得到3个包,但这样比较费流量,有没有办法尽量少发包并达到相同的效果?...这里的发包顺序是S1, S2到SL,SL+1,SL+2一行一行地发送,对每一行进行异或运算生成冗余包,第一行生成R1,第二行生成R2一直到RD。数据包有D行L列,生成D个冗余包。...这种生成方式可以抗随机丢包,没法抗连续丢包,比如第一行连续丢包,数量过多后将无法恢复,如果随机丢也就是把丢失包分摊到各行上,每一行就容易恢复数据。...下面这种是交错模式,或者称列模式,每一列计算生成冗余包,计算冗余包的数据包是交错的,假如发生连续丢包,它们分摊在各列上,每一列丢失地不多容易恢复,所以它能够抗连续丢包,或者说burst突发丢包。...下面红框中的矩阵是范德蒙矩阵,它是一个m行n列的矩阵,n是媒体数据包数量,m是冗余包数量,它的第一行全是1,第二行1、2、3到n,第三行是1、2^2 、3^2 到n^2 ,每一行在上一行的基础上乘以一个数

3.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    程序员进阶之算法练习(五十一)

    表示有t个样例数量 (1≤?≤1000) 接下来每个样例一行,整数? (1≤?≤10^9). 输出: 每个样例一行,染色的方法数量。...| 求新的数组。 输入: 第一行,整数?表示有t个样例数量 (1≤?≤1000) 接下来每t个样例,第一行, 整数? (3≤?≤10^5) 第二行是n个整数,?1,?2,…,??...,如果某个数字比相邻左右两个数字大,则称为峰; 从n个数字里面选出连续的k个数字,希望包括尽可能多的山峰; 如果有多种可能,使得第一个位置尽可能小; 输入: 第一行,整数?...k:如果满足q.back() - q.front() + 2 >= k 则表示队列中山峰已经无法用连续的k个数字来包括; 此时需要pop掉队头的山峰,也是最早加入的数字。...每加入一个数字到山峰,检查完队列数字的合法性,接着计算这个队列的结果是否更优; 代码实现: int a[N]; queue q; int main(int argc, const char

    32630

    【优选算法篇】从蒙特卡洛到模拟退火:探秘模拟算法的不同面貌(下篇)

    根据 numRows 的不同,每一行存储的字符数量不同。 遍历字符串 s: 使用一个变量 i 表示当前字符应该被放入的行。我们首先将 i 设置为 0,表示从第 1 行开始。...首先,确定字符在Z字形排列中属于哪一行。 然后,根据Z字形的规律计算字符的水平位置。 具体实现: 在这种解法中,我们模拟一个二维的网格。...首先按顺序将字符填入网格的每一行,再通过这种方式生成结果字符串。...然后,将该数字和字符(例如 "31" 表示连续 3 个字符 1)加入到 tmp 中。 更新: 一旦当前组的字符计数和描述完成,就更新 left 为 right,即跳到下一个新的字符组。...3.5 总结: 该算法通过每次描述前一项来生成新的项,使用双指针(left 和 right)来计算相同字符的连续数量,并生成新的描述字符串。

    32110

    音视频开发基础知识(2)——最通俗易懂的视频编解码理论知识

    如下图所示: 也就是说,每读取一行数据时候需要跳过这多余的6个字节 RGB 一般来说,我们看到的彩色图像中,都有三个通道,这三个通道就是R、G、B通道,(有的时候还会有Alpha值,代表透明度...而是指,在每一行扫描时,只扫描一种色度分量(U 或者 V),和 Y 分量按照 2 : 1 的方式采样。...代表声音的模拟信息是个连续的量,不能由计算机直接处理,必须将其数字化。 经过数字化处理之后的数字声音信息能够像文字和图形信息一样进行存储、检索、编辑和其它处理。...我们知道声音可以表达成一种随着时间的推移形成的一种波形: 但是如果想要直接描述这样的一个曲线存储到计算机中,是没有办法描述的。...从“模拟信号”到“数字化”的过程 模拟信号到数字化的过程需要三个步骤: 采样 所谓采样,即以适当的时间间隔观测模拟信号波形不连续的样本值替换原来的连续信号波形的操作,又称为取样。

    1.1K21

    程序员进阶之算法练习(六十二)AK练习

    ,如果有多种则可以任意选择一种数量最多的糖果; 小明想知道最终,能不能吃完所有糖果,并且满足没有连续2天吃到一样的糖果; 输入: 第一行,整数 表示t个样例 (1≤≤1e4) 每个样例两行,第一行整数...; 容易知道,假如有两个糖果一样多,只要交替吃就行了; 那么问题就变成,最多和次最多的两个糖果,能不能顺利达到数量一致的情况; 容易知道相差超过1就无法达到,因为需要连续两天吃一样的最多数量的糖果...: 1、将数组的每一行向上移动; 2、将数组的每一行向下移动; 2、将数组的每一列向左移动; 2、将数组的每一列向右移动; 这个操作是没有代价的,可以进行任意次; 然后还可以对矩阵中任何一个数字进行异或...n矩阵拼出来的大矩阵中,找到一个n x n子矩阵,并且斜对角线的1尽可能多; 那么就直接从每一行的第一列开始向右下角遍历,保持长度为n的斜对角线,存在尽可能多的1; 但是直接拼接4个矩阵去模拟,整体实现复杂度比较高...; 那么可以使用最暴力的办法,O(N*N)的复杂度,枚举所有字符串的子串; 再分别计算这个子串是否符合要求; 判断一个字符串是否是特殊的,可以遍历整个字符串中+和-的数量(假如总数是x和y);

    59340

    程序员进阶之算法练习(三十九)Codeforces

    ; 2、不连续选择两个同一行的学生,如果这次选择了第一行的学生,则下次必然选择第二行的学生; 问选择出来的学生高度和最大值是多少; 输入: 第一行,?...|≤2⋅10^5) 题目保证每个人的名字,都可以由字符串s组成,并且m个人的名字总长度不会超过2⋅10^5。 输出: m行,每行有一个数字,表示需要的最少字符数量。...把名字统计下,得到b[26],表示26个字符的数量; 然后遍历整个字符串,直到26个字母的数量都满足; 复杂度是O(N),总的复杂度是O(NM); 这个复杂度太高,需要优化。...同时为了避免多次计算,可以直接换成a[i][j]表示前i个字符,第j个字母的数量。...,如果操作的次数比较多,比如说n=10e18,此时放入糖果的操作次数会比较多,此时可以使用二分查找;(判断条件是糖果有没有剩余) 题目3是动态规划,状态转移比较简单;样例的数据有点像LIS(最长上升子序列

    48820

    圣经中的校验码

    于是犹太人发明了一种类似于今天计算机和通信中所应用的校验码的方法。 他们把每一个希伯来字母对应一个数字,这样把每行文字对应的数字加起来便得到一个特殊的数字,这个数字便成为了这一行的校验码。...同样的办法,对于每一列也是这样处理,把每一列文字对应的数字加起来,就得到了这一列的校验码。...当犹太学者抄写完一页《圣经》时,他们需要把每一行和每一列文字对应的数字加起来,得到行和列的校验码,如果每一行和每一列的校验码和原《圣经》的校验码一致,则说明抄写正确,没有出现错误的文字。...如果发现某一行的校验码和原《圣经》的校验码不一致,则说明该行的文字中和原《圣经》不一致,出现了抄写错误的情况。但是这一行有很多文字,到底是哪个文字抄写错误了,我们暂时还不得而知。...当然我们也可以对该行文字一个一个的和原《圣经》进行对比,但是还有没有更轻松准确的办法? 答案是:有。

    1K20

    【算法一周目】破解谜题如同雕刻思想:一步步还原模拟题的真谛

    通过上图,可以得以下的规律: 第一行和最后一行:0、0+gap、0+2*gap、… 中间的行:两两一组,行号为n ,(n, gap - n)、(n + gap, 2*gap-n)、… 代码实现 class...外观数列 题目描述: 给定一个正整数 n,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。...你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) = "1" countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。...具体如下: 对前一项字符串统计相同字符的数量,将得到的数量和该字符加入新的字符串,直到对上一串的字符串统计完。 对第一项字符串 "1" 进行 n - 1 次如上的操作即可。...'c' 模拟青蛙叫声从而获取完成所有叫声所需的最少青蛙数量。

    10710

    【优选算法篇】算法江湖中的碎玉拾光——C++模拟题全解,踏步逐章细细品味

    每一行的字符位置都可以按特定间隔获取: 第一行和最后一行形成等差数列,间隔为 2 * numRows - 2。 中间行字符按两个等差数列交替出现。...处理中间行 for (int k = 1; k 每一行 for (int i = k, j = d - k;...中间行的交替字符: 每一中间行的字符位置交替出现在两个等差数列上,位置 i = k 和 j = d - k。 最后累加顺序: 输出时需要按从上到下的顺序,逐行拼接。...外观数列 题目描述: 给定一个正整数 n,输出外观数列的第 n 项。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。...hash[0] 表示“c”的数量,hash[4] 表示完整“croak”的青蛙数量。 映射 index:利用 unordered_map 将 “croak” 中的字符映射到 hash 数组的索引位置。

    28610

    图像处理基础知识--建议掌握

    MAP中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP中每一行对应图像矩阵像素的一个灰度值。...但与索引图像不同的是,RGB 图像每一个像素的颜色值(由RGB三原色表示)直接存放在图像矩阵中,由于每一像素的颜色需由 R、G、B 三个分量来表示,每个分量占 1 个字节,表示0到255之间的不同的亮度值...它的数据信息包括一个数据矩阵和一个双精度色图矩阵,它的数据矩阵中的值直接指定该点的颜色为色图矩阵中的某一种,色图矩阵中,每一行表示一种颜色,每行有三个数据,分别表示该种颜色中红、绿、蓝的比例情况,所有元素值都在...M×N 的取值满足采样定理。 (2)量化 量化是将采样出来的像素点转换成离散的数量值,一幅数字图像中不同灰度值得个数称为灰度等级,级数越大,图像越是清晰。...此数字矩阵M×N就作为计算机处理的对象了。灰度级一般为0-255(8bit量化)。下图表示的是如何将连续的转化为离散的情况。

    2K10

    线段树模板与练习

    输出格式 输出若干行数字,表示 k=0 时,对应的子数列 [a,b] 的连续和。...int mid=tr[u].l+tr[u].r>>1;//计算一下我们 当前 区间的中点是多少 //先判断一下和左边有没有交集 int sum=0;//用 sum 来表示一下我们的总和...if(mid>=l)sum+=query(ur);//看一下我们当前区间的中点和左边有没有交集 if(r>=mid+1)//看一下我们当前区间的中点和右边有没有交集...输入格式 第一行两个整数 N,M 表示数字的个数和要询问的次数; 接下来一行为 N 个数; 接下来 M 行,每行都有两个整数 X,Y。 输出格式 输出共 M 行,每行输出一个数。...数据范围 1≤N≤10^5 , 1≤M≤10^6 , 1≤X≤Y≤N , 数列中的数字均不超过 2^{31}−1 输入样例: 10 2 3 2 4 5 6 8 1 2 9 7 1 4 3 8

    65530

    R语言之内存管理

    在处理大型数据过程中,R语言的内存管理就显得十分重要,以下介绍几种常用的处理方法。...R会将新的对象存储在“连续”的内存中,如果没有这样的空间就会返回“Cannot allocate vector of size...”...大家都知道R中矩阵的维度并不需要赋一个固定的值(很多语言的数组长度不能为变量),这为写程序带来了极大的方便,因此经常在循环中会出现某个矩阵越来越长的情况,实际上,矩阵每增长一次,即使赋给同名的变量,都需要新开辟一块更大的空间...在xp系统上试了一下,得到的存储地址总是不变,不知道xp系统上有没有效... 4,选取数据集的子集 这是没有办法的办法,迟早要处理全部的数据,不过可以借此调试代码或是建模,如在合适的地方清理中间对象...ls() Store(r) ls() mean(r[,1]) r$c = rnorm(10,4,.5) ls() 7,一个有趣的函数 它会告诉你哪一行的代码消耗了多少时间、

    2.1K20

    《算法竞赛进阶指南》0x12 队列

    对于每个测试用例,第一行输入小组数量 t 。 接下来 t 行,每行输入一个小组描述,第一个数表示这个小组的人数,接下来的数表示这个小组的人的编号。...隔壁跳蚤国的跳蚤也拿蚯蚓们没办法,蛐蛐国王只好去请神刀手来帮他们消灭蚯蚓。...O(m\ log m) 做法 当 q=0 时,每轮操作相当于在一堆线段中,取出一个长度最长的线段,将其分割成两个子线段放回原堆中 当 q>0 时,每轮操作完后,除了操作产生的两个子线段,其他所有线段长度增加...2 ] 得证,因此不仅从集合中取出的数是单调递减的,新产生的两类数也分别随时间单调递减 因此可以维护三个单调队列分别维护 x,l,r 每轮比较三个队列的队首元素,弹出队首元素,按照要求分成两个新数字放到...不超过 m 连续子区间 状态表示-属性 f_i :区间的总和最大 Max 状态计算 f_i : $$ f_i =

    69840

    python笔记:#011#循环

    在循环体内部,每次循环都用 最新的计算结果,更新 之前定义的变量 需求 计算 0 ~ 100 之间所有数字的累计求和结果 # 计算 0 ~ 100 之间所有数字的累计求和结果 # 0....= %d" % result) 需求进阶 计算 0 ~ 100 之间 所有 偶数 的累计求和结果 开发步骤 编写循环 确认 要计算的数字 添加 结果 变量,在循环内部 处理计算结果 # 0....处理条件 2 处理条件 1 4.2 循环嵌套演练 —— 九九乘法表 第 1 步:用嵌套打印小星星 需求 在控制台连续输出五行 *,每一行星号的数量依次递增 * ** *** **** ****..."") end="" 表示向控制台输出内容结束之后,不会换行 假设 Python 没有提供 字符串的 * 操作 拼接字符串 需求 在控制台连续输出五行 *,每一行星号的数量依次递增 * ** **...每行显示的星星和当前所在的行数是一致的 嵌套一个小的循环,专门处理每一行中 列 的星星显示 row = 1 while row <= 5: # 假设 python 没有提供字符串 * 操作

    2.1K40

    python笔记:#011#循环

    在循环体内部,每次循环都用 最新的计算结果,更新 之前定义的变量 需求 计算 0 ~ 100 之间所有数字的累计求和结果 # 计算 0 ~ 100 之间所有数字的累计求和结果 # 0....= %d" % result) 需求进阶 计算 0 ~ 100 之间 所有 偶数 的累计求和结果 开发步骤 编写循环 确认 要计算的数字 添加 结果 变量,在循环内部 处理计算结果 # 0....处理条件 2 处理条件 1 4.2 循环嵌套演练 —— 九九乘法表 第 1 步:用嵌套打印小星星 需求 在控制台连续输出五行 *,每一行星号的数量依次递增 * ** *** ****..."") end="" 表示向控制台输出内容结束之后,不会换行 假设 Python 没有提供 字符串的 * 操作 拼接字符串 需求 在控制台连续输出五行 *,每一行星号的数量依次递增 * ** **...每行显示的星星和当前所在的行数是一致的 嵌套一个小的循环,专门处理每一行中 列 的星星显示 row = 1 while row <= 5: # 假设 python 没有提供字符串 * 操作

    1.5K20

    程序员进阶之算法练习(五十三)

    输入: 第一行,是样例个数 ? (1≤?≤100); 接下来t行表示t个样例,每个样例一行,每行有三个数字a、b、c (0≤?,?,?≤100); 输出: 每个样例一行,输出拿到的石头数量。...已知l r; 现在希望找到一个整数x,要求是 lr,并且x中没有相同的数字; 如果能找到则输出这个数字; 如果不能找到则输出-1; 输入: 两个整数l和r; (1≤?...; 可以去掉中间某一段连续的数字,要求剩下的数字没有重复。 问,最少需要去掉多少个数字。 输入: 第一行,整数? (1≤?≤2000) 第二行,n个整数?1,?2,…,?? (1≤??...,直接枚举去掉区间的坐标[l, r],有n^2的可能; 判断剩下数字有没有重复需要O(N)的时间,总的时间复杂度是O^3,超过了可接受范围; 假如去掉x个数字有解,则去掉x+1个数字也有解,可以用2分来优化...≤10^9) 输出: 每个样例一行,最终大于数字x的数量; Examples input 4 4 3 5 1 2 1 4 10 11 9 11 9 2 5 4 3 3 7 9 4

    42320

    Android OCR文字识别 实时扫描手机号(极速扫描单行文本方案)

    比如我扫描手机号的功能,面单上都是黑体字,手机号只有纯数字, 就这么点识别范围去检索一个30M的字库,显然多了很多无用功 解决办法就是: 训练自己的字库,如果你需要毫秒级的扫描速度,那你的需求涉及的扫描内容...,然后再裁切,无疑浪费了很多时间 解决办法: 直接计算逆向90°情况下的提取区域 上边裁切范围是:屏幕正中间、宽度为屏幕的一半、高度为R.dimen.x50 的一个矩形 那么矩形的位置就取图片正中间...,自己写算法 -_-) 3、每一行文字记录结束都跟上一行文字比较,选高度更高的一行文字留下,其他的跳过(前面说了这里是单行识别,只选没有贴边的文字最高的一行),等遍历结束,最高的一行的top 和 bottom...0;//当前记录的一行文字已经累计的高度,每次遇到一行有黑色像素点时 +1 //目标行,每遇到一个黑色像素,就会+1,本行就不会在记录lineHeight,下一行在遇到黑色像素...,然后取最中间一行的像素遍历,初步判断是否可能含有手机号 * 即遍历这一行时,每次遇到一段连续黑色像素,就记录一次textLength++(没一段黑色像素代表一个笔画的宽度),手机号都是

    10.2K21

    TiDB 源码阅读系列文章(十二)统计信息(上)

    Count-Min Sketch 维护了一个 d*w 的计数数组,对于每一个值,用 d 个独立的 hash 函数映射到每一行的一列中,并对应修改这 d 个位置的计数值。...如下图所示: [2-count-min.png] 这样在查询一个值出现了多少次的时候,依旧用 d 个 hash 函数找到每一行中被映射到的位置,取这 d 个值的最小值作为估计值。...首先分裂得来的桶是不能合并的;除此之外,考虑连续的两个桶,如果第一个桶占合并后桶的比例为 r,那么令合并后产生的误差为 abs(合并前第一个桶的高度 - r * 两个桶的高度和) / 合并前第一个桶的高度...不过这里还有一个问题是估算的时候要去算比例,这对于数值类型很简单,对于其他类型,比方说字符串类型怎么办呢?一个方法是把字符串映射成数字,然后计算比例。 2....在 Selectivity 中,首先计算了每一列和每一个索引可以覆盖的过滤条件,并用一个 int64来当做一个 bitset,将该列可以覆盖的过滤条件的位置置为 1。

    1.5K20
    领券