自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凯的博客

一个小白菜

  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 C语言| |const char*str,char* const str和char const *str的区别

const是c语言的一个关键字作用:限定变量不会被改变const char* str:意义:确保*str的内容不会改变,也就是用str这个指针无法改变str这个指针指向的地址的内容,但是可以改变这个指针char const str和const charstr含义一样char* const str:意义:确保str这个指针不会改变,但是这个指针里面的内容可以改变。...

2018-09-28 12:43:41 5731

原创 Leetcode| |加1

题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加1。最高位数字存放在数组的首位,数组中每个元素只存储一个数字思路:首先对最后的一个数字加1,然后判断是否进位,如果一直进位的话,那就最后要对数组进行扩容,增大数组的容量。代码:void PrintArr(int* arr, int sz){ assert(arr && sz >= 0); fo...

2018-09-24 11:30:10 152

原创 剑指offer| |数字在排序数组中出现的次数

题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{ 1,2,3,3,3,3,4,5}和数字3,。由于3在这个数组中出现了4次,因此输出4方法一:时间复杂度为O(N)思路:直接把数组遍历一遍即可,简单粗暴代码:int GetNumCount(int* arr, int sz, int key){ assert(arr); int count = 0; for (int i...

2018-09-24 11:03:23 201

原创 剑指offer| |丑数

题目:我们把只包含因子2、3和5的数称为丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6是丑数,但14不是,因为它包含因子7.习惯上我们把1当做第一个丑数。方法一:思路:逐个判断每个整数是不是丑数依次从1开始判断每个数是不是丑数,从而求出第1500个丑数,这种方法思路简单但是不够高效。代码://是丑数 1//不是 0int CheckUglyNumber...

2018-09-23 11:29:24 189

原创 剑指offer| |数字在排序数组中出现的次数

题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{ 1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出4.思路1:时间复杂度O(N)遍历一遍数组即可得到一个数字出现的次数代码:int GetNumCount(int* arr, int sz, int num){ assert(arr); int count = 0; for (int i ...

2018-09-19 00:00:39 124

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

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字,例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超出数组长度的一半,因此输出2。思路:可以采用两个变量一个记录当前的数字result,另外一个记录次数count。 如果count为零的话,那就将当前的数据赋值给result并且count++ 如果result等于当前的数据的话...

2018-09-13 22:34:20 157

原创 数据结构| |布隆过滤器

布隆过滤器(Bloom Filter):是位图的扩展。 对于位图的话,对于判断整形数据存在不存在的话,是非常的方便的,但是对于字符串就显得难以解决掉的,这个时候就出现了布隆过滤器。对于数据的话,除了整形数据的话也就是字符串的数据了,而布隆过滤器就是处理如何判断一个字符串是如何存在的。方法:对于字符串的话,还是采用位图的方式来储存,那这就出现了一个问题,如何将字符串储存到位图中呢,这就牵扯...

2018-09-13 21:52:10 401

原创 剑指offer| |字符串的排列

题目: 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符串a,b,c所能排列出来的所有字符abc,acb,bac, bca, cab和cba.

2018-09-12 16:00:53 142

原创 LeetCode| |最后一个单词的长度

题目: 给定一个仅包含大小写字母和空格‘ ’的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回0。 说明:一个单词是指由字母组成,但不包含任何空格的字符串。思路: 使用两个计数器,一个代表的是当前单词的长度(InWordLength),一个代表的是最后一个单词的长度(LastWordLength)。如果该字符不是空格‘ ’的话,将InWordLeng...

2018-09-11 23:47:00 153

原创 数据结构| |位图

位图:也就是哈希表的变形,只是用一个bit位来存放一个数据。(准确来说是表示一个数据在该位置上存在不存在)对于一个bit位,只可以存放0和1两种状态,所以位图只能解决的问题就是判断一个数据存在或者不存在。代码实现://数据结构typedef struct bitset{ char* _bits; int _size;}bitset;//各种函数的实现//n代...

2018-09-10 23:37:54 338

原创 剑指offer| |重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不重复的数字。假如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如图的二叉树: ...

2018-09-09 22:52:11 193

原创 剑指offer| |二叉树中和为某一直的路径

题目:输入一个二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径,从树的根节点开始往下一直到叶节点所经过的结点形成一条路径。代码://和为某一值的路径//传的是栈的值,所以在函数里面不会改变栈内的值void FindPath(BTNode* root, int num, Stack s1, int count){ assert(root); Stack...

2018-09-05 23:13:57 145

原创 剑指offer| |二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果,如果是则返回true,否则返回false。假设输入的数组任意两个数字都互不相同。思想; 首先要知道二叉搜索树的特点,然后再来进行判断,对于二叉搜索树其本质也是一个二叉树,只不过对于其一个结点,其左子树均小于该结点,右子树均大于该结点。然后后序遍历的话,那么最后一个结点必定是该二叉搜索树的根节点,如图: 对...

2018-09-05 17:31:18 170

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

题目:输入一个链表,输出该链表的倒数第k个结点。为了符合大多数人的习惯,即链表的尾结点是倒数第一个节点。例,如链表有6个节点,从头结点开始他们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。思路:定义两个指针。第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始走,当第一个指针走到尾结点是,第二个指针刚好...

2018-09-05 17:06:01 120

原创 剑指offer| |调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组,实现一个函数来调整数组中数字的顺序,是的所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。 思路:我们可以维护两个指针,第一个指针初始化指向数组的第一个数字,他只想后移动;第二个指针初始化指向数组的最后一个数字,他只向前移动。在这两个指针相遇之前,第一个指针总是位于第二个指针的前面,如果第一个指针指向的是偶数,第二个指针指向的是奇数,我们就交换着两个数字。...

2018-09-05 17:05:51 110

原创 剑指offer| |在O(1)时间删除链表结点

题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:对于该题可以采用替换删除法。 对于链表有多个结点: 即要删除该结点的可以将其后面的结点的数据域给该结点,然后删除后面的结点。 这个方法有一个bug那就是比如要删除的结点是尾结点的话,那么其后面就没有结点可供让其替换删除的了,所以对于删除尾结点的话,还是采用遍历到该结点的前一节点然后再进行删除即可。 链...

2018-09-05 17:05:18 119

原创 剑指offer| |树的子结构

题目:输入两个二叉树A和B,判断A是不是B的子结构。 如图下面这颗树就是上面的树的子结构。 思路:要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步在树A中找到和B的根节点的值一样的结点R,第二步在判断树A中以R为根节点的子树是不是包含和树B一样的结构。第一步在树A中找与树B根节点的值一样的结点,这实际上就是树的遍历。 第二步是判断树A中以R为根节点的子树...

2018-09-03 23:22:39 118

原创 剑指offer| |顺时针打印矩阵

题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如: 如果输入以下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。可以将这个矩阵看成一...

2018-09-01 16:09:36 257

原创 c语言| |一维数组的理解&&二维数组的地址

首先大家要记住两个要点: 1.数组名单独放在括号里面表示的是数组的地址 2.对数组名进行取地址取出来的是数组的地址对于一维数组大家应该都很好理解! 比如:a[3] = { 1,2,3 }; 这个一维数组a他里面有三个元素,数组名表示的是数组的地址,特殊的是数组的地址,和1 这个数组元素的地址是一样的但是意义却不一样。有什么不一样呢? 对于数组的地址加1的话跳过...

2018-09-01 10:36:28 2735 1

数据结构课设| |迷宫问题

数据结构的课程设计,具有完整的功能,有着自己创建迷宫,系统随机生成迷宫,以及用递归求迷宫路径,用栈求迷宫路径。

2018-06-27

空空如也

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

TA关注的人

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