自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 剑指offer:连续子数组的最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)方法一:动态规划链接:https://www.nowco

2020-06-09 16:19:28 153

原创 剑指offer:数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路解法一:数组排序后,如果符合条件的数存在,则一定是数组中间那个数。O(N*LogN)解法二:如果有符合条件的数字,则它出现的次数比其他所有数字出现的次数和还要多。在遍历数组时保存两个值:一是数组中一个数字,一是次数。遍历下一个数字时,若它与之前保存的数字相同,则次数加1,否则

2020-06-09 15:07:07 117

原创 剑指offer:复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)思路1:set/map保存深拷贝出来的每个节点,接上next域和random域思路2:/*struct RandomListNode { int label; struct RandomListNode *next, *random;

2020-06-08 20:03:01 125

原创 剑指offer:最小的K个数

题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路快速排序取前K个数class Solution {public: vector<int> GetLeastNumbers_Solution(vector<int> input, int k) { if(input.size()==0 || k>input.size()) return{};

2020-06-05 21:46:57 144

原创 剑指offer:两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)方法一:双指针方法二:set装入第一个链表的所有结点,遍历第二个链表看set中是否已有结点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: Li

2020-06-05 15:56:17 100

原创 剑指offer:链表中环的入口结点

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路set容器保存每一个结点,count函数检测是否有已加入的结点,返回即可。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* EntryNode

2020-06-05 14:03:22 84

原创 剑指offer:平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树思路:最直接的做法,遍历每个结点,借助一个获取树深度的递归函数,根据该结点的左右子树高度差判断是否平衡,然后递归地对左右子树进行判断。class Solution {public: bool IsBalanced_Solution(TreeNode* pRoot) { return getDepth(pRoot) != -1; }priv

2020-06-04 18:07:53 112

原创 剑指offer:二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void Mirror(TreeNode *pRoot) { //1.递归

2020-06-03 20:57:04 98

原创 剑指offer:跳台阶&&变态跳台阶

跳台阶题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。思路:1.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);2.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2)3.由12假设可以得出总跳法为: f(n) = f(n-1) + f(n-2)4.然后通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2

2020-05-14 20:13:34 106

原创 剑指offer:删除链表中重复的结点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5代码:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Soluti

2020-05-13 21:01:08 97

原创 剑指offer:数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。方法一:利用相同两数异或为0的特性:牛客ID:披萨大叔 他的解释很棒方法二:set//方法一:class Solution {public: void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) { if(data.size()<2) return; in

2020-05-12 22:50:27 100

原创 剑指offer:斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39思路:解法一:递归,但是测试用例n过大会不通过解法二:迭代,代码如下//时间复杂度O(N),空间复杂度O(1).也可以用数组做,不过空间复杂度就O(N)class Solution {public: int Fibonacci(int n) { if(n==0 ||n==1) return n; int f1

2020-05-12 20:33:16 106

原创 剑指offer:求1+2+3+...+n

题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:递归,利用逻辑与的短路特性代码class Solution {public: int Sum_Solution(int n) { int res = n; res && (res += Sum_Solution(n-1));//逻辑与前为假后面不计算 return res;

2020-05-11 21:29:53 111

原创 剑指offer:二进制中1的个数

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。代码:方法一:class Solution {public: int NumberOf1(int n) { int count = 0; int flag = 1; while(flag!=0)//左移补0,左移到int的最高位下一位后flag == 0 { if((n & flag)!=0)//相

2020-05-11 20:34:00 94

原创 剑指offer:左旋转字符串

题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路方法一:牛客最高赞答案方法二:在原字符串上修改。n之前翻转一次,n之后翻转一次,再整体翻转一次 证明:YX=(XTYT)TYX=(\mathbf{X}^\mathrm{T}\mathbf{Y}^\ma

2020-05-08 21:52:05 101

原创 剑指offer:二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:方法一:递归(DFS)方法二:层序遍历代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int ...

2020-05-08 15:12:56 97

原创 剑指offer:链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。思路:双指针,初试距离相差K,同时走,直到快指针为空,慢指针为所求结点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: L...

2020-05-07 20:35:57 96

原创 剑指offer:替换空格

题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy思路记录出现的空格数count,从后向前遍历,没遇到空格之前的字符整体后移count*2个位置,直到遇到空格填满%20,下一次字符串的整体移动变成(count-1)*2个位置。class Solution {public:...

2020-05-07 13:35:06 111

原创 剑指offer:和为S的两个数字

证明1:来源:牛客网假设:若b>a,且存在,a + b = s;(a - m ) + (b + m) = s则:(a - m )(b + m)=ab - (b-a)m - m*m < ab;说明外层的乘积更小证明2:来源:牛客网假设:找到两组满足条件的数组对(x,y)、(x+a,y-a),其中(x+y=S, 0<a<y-x)x*y-[(x+a)(y-a)]...

2020-05-06 22:10:30 103

原创 二叉树的前序,中序,后序,层序遍历(对应Leetcode)

C++实现二叉树的前序,中序,后序,层序遍历(对应Leetcode144,94,145,102题)记录C++实现二叉树的几种遍历方式,包括递归和非递归方式。话不多说,直接上代码一、二叉树的前序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef...

2020-04-14 10:03:12 177

原创 VVC/H.266帧间模式(二):Merge mode with MVD (MMVD)

一、MMVD综述在VVC中引入了具有运动矢量差的合并模式(MMVD),merge模式的运动信息将会用于当前CU的预测样值得生成。在传送skip标志和merge标志位之后立刻传送MMVD标志来表明是否对当前CU使用MMVD模式。在MMVD中,选择完merge候选者后,将通过信号通知的MVD信息进一步完善merge候选者。进一步的信息包括合并候选标记,用于指定运动幅度的索引以及用于指示运动方向的索...

2019-11-05 10:12:45 781

原创 VVC/H.266帧间模式(一):Extended merge prediction

在VTM6.0中,通过按顺序包括以下五种类型的候选者来构造Merge候选者列表1)从空域相邻CU获取空域MVP2)从同位CU获取时域MVP3)从一张FIFO(先进先出)表中获取基于历史记录的MVP4)Pairwise average MVP(成对平均MVP)5)填充零MVP在VTM6.0中,merge列表的尺寸由slice头信息传送,最大允许merge列表尺寸是6。对于merge模式下...

2019-11-04 11:04:07 521

原创 H.266/VVC帧间模式新增工具

对于每个帧间预测的CU,由运动矢量,参考帧索引和参考帧列表使用索引组成的运动参数,以及VVC的新编码功能所需要的其他信息, 可以以显式或隐式方式用信号发送运动参数。当以跳过模式对CU进行编码时,CU与一个PU相关联,并且没有残差系数,没有编码的运动矢量或参考帧索引。合并模式凭借从相邻的CU中获取当前CU的运动参数,包括空间和时间候选,以及VVC中引入的其他方案。合并模式可以应用于任何帧间预测的CU...

2019-10-31 10:21:58 510

原创 HM参数设置多slice、多tile

如下随便打开一个cfg文件,Slices和Tiles部分是设置多slice和多tile的一些参数SliceMode和SliceArgument是两个配套参数1.当SliceMode等于0时关闭帧内slice的划分2.当SliceMode等于1时代表每个slice内最多包含多少个CTU,数目由SliceArgument控制3.当SliceMode等于2时代表每个slice最多有多少字节,字...

2019-10-28 16:52:11 673

原创 SSE/AVX指令集学习笔记

​ 因为最近在做SSE/AVX指令集优化视频编码的某些模块,所以要学习SSE指令集的用法。本帖主要记录本人用到的函数的用法,将会持续更新下去。一、SSE指令(128位寄存器)__m128i _mm_load_si128 (__m128i *p);MOVDQA将p加载到128位寄存器上,比如p指针指向int类型(32位),则取出4个值加载到寄存器上。必须是16字节对齐方式。__m12...

2019-10-06 16:17:08 5297

原创 VVC代码学习1:xCompressCU函数

一、函数简述xCompressCU这个函数通过递归的调用自己来完成对整个CTU的划分和每个CU的模式选择。与HEVC中该函数不同的是,VVC中加入了很多新的模式,比如帧间Affine模式,帧内IBC模式等。亮度块最大允许尺寸为128×128,并且划分方式采用多类型树结构,CU可以进行四叉划分,水平二叉划分,垂直二叉划分,水平三叉划分,垂直三叉划分。最优划分模式的确定在xCheckModeSpl...

2019-09-14 15:37:19 1939 9

原创 VVC代码学习2:帧内亮度预测函数estIntraPredLumaQT

一、estIntraPredLumaQT调用结构xCheckRDCostIntra:帧内预测的入口函数,会调用estIntraPredLumaQT进行亮度的预测,调用estIntraPredChromaQT进行色度的预测。estIntraPredLumaQT:亮度预测的入口函数,完成亮度的预测,角度模式的选择等操作。preIntraAng:进行角度预测,获得预测像素值。xIntraCod...

2019-09-10 19:34:28 958 1

原创 VVC参考软件: VTM在windows平台下Visual Studio工程的构建

VVC参考软件VTM安装教程一、官网下载VTM【VTM下载官网】(https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM)现在VTM版本更新到5.0,通过SVN只能下载2.0之前的版本,所以用官网给的gitlab链接来下载。二、CMAKE下载安装【CMAKE下载地址】(https://cmake.org/)Windows 下选择划线...

2019-07-23 18:48:23 7021 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除