自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 牛客网算法学习笔记-排列组合

在XxY的方格中,以左上角格子为起点,右下角格子为终点,每次只能向下走或者向右走,请问一共有多少种不同的走法给定两个正整数int x,int y,请返回走法数目。保证x+y小于等于12。测试样例:2,2返回:2横向要走X-1步,纵向要走Y-1步,总共需要走,X+Y-2步,其中有X-1横向。C{x-1,x+y-2}class Robot {public:   

2016-05-31 12:01:58 1180

原创 牛客网算法学习笔记-位运算

请编写一个算法,不用任何额外变量交换两个整数的值。给定一个数组num,其中包含两个值,请不用任何额外变量交换这两个值,并将交换后的数组返回。测试样例:[1,2]返回:[2,1] A^A=0, A^0 = A. A^B^A = B (因为A^A=0与位置无关)class Swap {public:    vector getSwap(vector

2016-05-31 09:17:59 475

原创 牛客网算法学习记录-二分搜索

定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<arr[i-1]又有arr[i]<arr[i+1],那么arr[i]是局部最小。 给定无序数组arr,已知arr中任意两个相邻的数都不

2016-05-26 19:57:50 365

原创 牛客网算法学习记录-链表2

如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的值,无环的话返回-1。如果链表的长度为N,请做到时间复杂度O(N),额外空间复杂度O(1)。给定一个单链表的头结点head(注意另一个参数adjust为加密后的数据调整参数,方便数据设置,与本题求解无关),请返回所求值。方法:设置一个快步指针和一个慢步指针,快步指针和慢步指针同时向前,如果不存在环,那么快步指针必定会变为N

2016-05-25 22:14:11 291

原创 牛客网算法学习笔记-链表

对于一个链表,我们需要用一个特定阈值完成对它的分化,使得小于等于这个值的结点移到前面,大于该值的结点在后面,同时保证两类结点内部的位置关系不变。给定一个链表的头结点head,同时给定阈值val,请返回一个链表,使小于等于它的结点在前,大于等于它的在后,保证结点值不重复。测试样例:{1,4,2,5},3{1,2,4,5}单独建立两个头结点,并且建立两个尾结点,保证有头指针

2016-05-25 10:30:00 3884

原创 牛客网算法学习记录-队列和栈

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。一开始以为是要自己用malloc之类的方法写,但是太麻烦了,然后参考了别人的代码知道原来是用本来就有的栈来写类从而扩充栈的方法。class Solution {public:    void push(int value) {        if(min_stack.size()==0 || min_stac

2016-05-23 10:17:17 290

原创 牛客网算法学习记录-字符串

对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。方法1:通过树的遍历进行。bool check(TreeNode *A,TreeNode *B){                if(A&&B&&A->val == B ->v

2016-05-21 14:25:35 1331

原创 牛客网算法学习记录-排序2

已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。给定一个int数组A,同时给定A的大小n和题意中的k,请返回排序后的数组。测试样例:[2,1,4,3,6,5,8,7,10,9],10,2返回:[1,2,3,4,5,6,7,8,9,10]对于步长有限

2016-05-20 11:06:51 242

原创 牛客网算法学习记录-排序

对于一个int数组,请编写一个冒泡排序算法,对数组元素排序。给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例:[1,2,3,5,2,3],6[1,2,2,3,3,5]升序冒泡排序:比较简单,主要就是注意排序时数组的边界。 for(int i=0;i<n-1;i++) { for(int j=0;j<n-i-

2016-05-18 15:19:19 861

原创 牛客网算法学习记录-旋转词

如果对于一个字符串A,将A的前面任意一部分挪到后边去形成的字符串称为A的旋转词。比如A="12345",A的旋转词有"12345","23451","34512","45123"和"51234"。对于两个字符串A和B,请判断A和B是否互为旋转词。给定两个字符串A和B及他们的长度lena,lenb,请返回一个bool值,代表他们是否互为旋转词。其实在课程中已经提及了解决方法。但是由于自己的思

2016-05-18 14:28:46 455

原创 牛客网算法学习记录-按层遍历树

今天写了一题,学习了c++题目:有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。由于前期学习的时候课程给予的提示就是实用队列进行,所以选择了队列,但是对c++语言不熟悉,写了一个用队

2016-05-17 23:09:15 619

空空如也

空空如也

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

TA关注的人

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