题
_YKitty
这个作者很懒,什么都没留下…
展开
-
面试题| |求一个数组的连续子数组的最大和
求一个数组的连续子数组的最大和方法一:暴力求解法【思路】:设置一个最大和(max),对于每一个元素都求出其最大的子数组的连续和(tmpMax),然后再与这个最大和进行比较代码实现:#include <iostream>#include <vector>int main(){ //有多少个元素个数 int num = 0; ...原创 2019-02-15 00:43:06 · 1199 阅读 · 0 评论 -
LeetCode| |linked-list-cycle-ii(链表周期)
题目链接:https://www.nowcoder.com/practice/6e630519bf86480296d0f1c868d425ad?tpId=46&tqId=29038&tPage=1&rp=1&ru=%2Fta%2Fleetcode&qru=%2Fta%2Fleetcode%2Fquestion-ranking 描述:给定链表,返回循环开始的...原创 2018-08-21 21:22:44 · 239 阅读 · 0 评论 -
LeetCode| |linked-list-cycle(给定一个链表,判断其是否具有一个循环)
对于该题大家可以看一下,我写的链表的面试题之判断一个链表是否带环。这一篇博客。 链接地址:https://blog.csdn.net/qq_40399012/article/details/81779291原创 2018-08-21 21:18:03 · 783 阅读 · 0 评论 -
剑指offer| |树的子结构
题目:输入两个二叉树A和B,判断A是不是B的子结构。 如图下面这颗树就是上面的树的子结构。 思路:要查找树A中是否存在和树B结构一样的子树,我们可以分为两步:第一步在树A中找到和B的根节点的值一样的结点R,第二步在判断树A中以R为根节点的子树是不是包含和树B一样的结构。第一步在树A中找与树B根节点的值一样的结点,这实际上就是树的遍历。 第二步是判断树A中以R为根节点的子树...原创 2018-09-03 23:22:39 · 126 阅读 · 0 评论 -
剑指offer| |链表中倒数第k个结点
题目:输入一个链表,输出该链表的倒数第k个结点。为了符合大多数人的习惯,即链表的尾结点是倒数第一个节点。例,如链表有6个节点,从头结点开始他们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。思路:定义两个指针。第一个指针从链表的头指针开始遍历向前走k-1步,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始走,当第一个指针走到尾结点是,第二个指针刚好...原创 2018-09-05 17:06:01 · 130 阅读 · 0 评论 -
剑指offer| |调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整数组中数字的顺序,是的所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。 思路:我们可以维护两个指针,第一个指针初始化指向数组的第一个数字,他只想后移动;第二个指针初始化指向数组的最后一个数字,他只向前移动。在这两个指针相遇之前,第一个指针总是位于第二个指针的前面,如果第一个指针指向的是偶数,第二个指针指向的是奇数,我们就交换着两个数字。...原创 2018-09-05 17:05:51 · 118 阅读 · 0 评论 -
剑指offer| |在O(1)时间删除链表结点
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:对于该题可以采用替换删除法。 对于链表有多个结点: 即要删除该结点的可以将其后面的结点的数据域给该结点,然后删除后面的结点。 这个方法有一个bug那就是比如要删除的结点是尾结点的话,那么其后面就没有结点可供让其替换删除的了,所以对于删除尾结点的话,还是采用遍历到该结点的前一节点然后再进行删除即可。 链...原创 2018-09-05 17:05:18 · 127 阅读 · 0 评论 -
剑指offer| |打印1到最大的n位数
题目:输入数字n,按顺序打印出从1到最大的n为十进制数。比如输入3,则打印出1,2,3一直到最大的三位数即999。 思路:这道题一看就是一个大数问题。对于解决这个大数的问题,可以用到字符串或者数组都可以。字符串解法:对于一个字符串的话, 首先要考虑申请空间的时候,要申请n+1个因为最后还有一个’\0’ 进行加法时从最后一位进行加法 判断是否溢出,可采用看是否到第一位了并要进...原创 2018-08-31 14:43:05 · 167 阅读 · 0 评论 -
剑指offer| |数值的整数次方
题目描述:实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。//进行浮点数判断是不是等于0bool equal(double num1, double num2){ if (num1 - num2 > -0.0000001 && num1 - num...原创 2018-08-28 17:51:51 · 179 阅读 · 0 评论 -
剑指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 · 279 阅读 · 0 评论 -
剑指offer| |二叉搜索树的后序遍历序列
题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果,如果是则返回true,否则返回false。假设输入的数组任意两个数字都互不相同。思想; 首先要知道二叉搜索树的特点,然后再来进行判断,对于二叉搜索树其本质也是一个二叉树,只不过对于其一个结点,其左子树均小于该结点,右子树均大于该结点。然后后序遍历的话,那么最后一个结点必定是该二叉搜索树的根节点,如图: 对...原创 2018-09-05 17:31:18 · 177 阅读 · 0 评论 -
剑指offer| |二叉树中和为某一直的路径
题目:输入一个二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径,从树的根节点开始往下一直到叶节点所经过的结点形成一条路径。代码://和为某一值的路径//传的是栈的值,所以在函数里面不会改变栈内的值void FindPath(BTNode* root, int num, Stack s1, int count){ assert(root); Stack...原创 2018-09-05 23:13:57 · 156 阅读 · 0 评论 -
面试题| |对于一个字符串添加一个字符是否可以构成回文字符串
对于一个字符串对其添加一个字符可以构成回文字符串吗方法一:逆思维思考对于添加一个字符可以构成回文字符串的话,那么删除一个字符也就可以构成回文字符串了,所以就可以对于这个字符串的每一个字符进行删除,然后在判断是不是回文字符串,如果是的话,那就可以,否则不可以代码实现:#include <iostream>#include <string>//判断一个...原创 2019-02-15 00:39:44 · 939 阅读 · 0 评论 -
Leetcode| |加1
题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加1。最高位数字存放在数组的首位,数组中每个元素只存储一个数字思路:首先对最后的一个数字加1,然后判断是否进位,如果一直进位的话,那就最后要对数组进行扩容,增大数组的容量。代码:void PrintArr(int* arr, int sz){ assert(arr && sz >= 0); fo...原创 2018-09-24 11:30:10 · 163 阅读 · 0 评论 -
剑指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 · 237 阅读 · 0 评论 -
剑指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 · 163 阅读 · 0 评论 -
剑指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 · 133 阅读 · 0 评论 -
剑指offer| |丑数
题目:我们把只包含因子2、3和5的数称为丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6是丑数,但14不是,因为它包含因子7.习惯上我们把1当做第一个丑数。方法一:思路:逐个判断每个整数是不是丑数依次从1开始判断每个数是不是丑数,从而求出第1500个丑数,这种方法思路简单但是不够高效。代码://是丑数 1//不是 0int CheckUglyNumber...原创 2018-09-23 11:29:24 · 199 阅读 · 0 评论 -
剑指offer| |字符串的排列
题目: 输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符串a,b,c所能排列出来的所有字符abc,acb,bac, bca, cab和cba.原创 2018-09-12 16:00:53 · 151 阅读 · 0 评论 -
剑指offer| |重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不重复的数字。假如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如图的二叉树: ...原创 2018-09-09 22:52:11 · 214 阅读 · 0 评论 -
剑指offer| |链表中倒数第k个结点
题目描述:输入一个链表,输出该链表中倒数第k个结点。 由于本人所做的题均用c语言所写。所以该题要做的话就要定义数据结构,创建链表等等。所以讲解一下思想: 这道题;可以使用两个指针,一个快指针,一个慢指针,对于快指针,让其先走k - 1步,然后两个指针在一起走,直到快指针到达尾部,则慢指针指向链表的倒数第k个结点。我写的链表的面试题的博客里面有这道题:所以给大家一个链接看看: 链接:h...原创 2018-08-27 00:00:59 · 132 阅读 · 0 评论 -
剑指offer| |二进制中1的个数(及其扩展)
题目描述:二进制中1的个数三种解法; 代码://采用计算二进制的1int Number_1(unsigned int num){ int count = 0; while (num) { if (num % 2 == 1) { count++; } num = num ...原创 2018-08-26 23:39:29 · 136 阅读 · 0 评论 -
c语言| |二进制中1的个数
二进制中1的个数//第一种:短除法int count_one(unsigned num){ int count = 0; while (num != 0) { if (num % 2 == 1) { count++; } num /= 2; } return cou...原创 2018-07-02 07:18:14 · 326 阅读 · 0 评论 -
c语言| |求最大公约数
1-暴力求解法思想:两个数的最大公约数一定小于或者等于两者中较小的数,那么就从1开始一直除,除到较小值,得出最大公约数2-辗转相除法思想:用两者中任意一个数,除以另外一个数,得到余数,在用刚才的除数除以余数,一直这样除下去,如果哪一次余数为0,那么该次中的除数就是最大公约数。//求两个数的最大公约数#include <stdio.h>//暴力求解法int GetCo...原创 2018-06-26 21:18:59 · 368 阅读 · 0 评论 -
c语言| |交换两个数的n种方法
交换两个数的n种办法代码如下:#include <stdio.h>//采用辅助空间的方法void SwapTmp(int* a, int* b){ int tmp = *a; *a = *b; *b = tmp;}//没有采用辅助空间,运用异或计算void SwapNotTmp(int* a, int* b){ *a = (*a) ...原创 2018-06-26 20:46:32 · 321 阅读 · 0 评论 -
c语言| |左旋字符串中的k个字符,多种求法
问题:实现一个函数,可以左旋字符串中的ķ个字符。ABCD左旋一个字符得到BCDA ABCD左旋两个字符得到CDAB ·第一种思路:运用另外一个字符串,首先将不需要需要旋转的字符放到该字符串,其次将要旋转的字符加到该字符串的后面即可代码:#include<stdio.h>#include<assert.h>char * left_reserve(char *dest, ...原创 2018-05-09 00:48:45 · 185 阅读 · 0 评论 -
c语言| |求100~200之间的素数
1.打印100~200之间的素数素数:除了1和它本身之外不在有其他的因数方法一:暴力比较法从2开始一直比较到这个数减1的数,看有没有数被整除,若整除则不是素数#include <stdio.h>int is_prime(int prime){ int i = 0; for (i = 2; i < prime; i++) { if (...原创 2018-06-16 23:24:33 · 1564 阅读 · 0 评论 -
c预言| |判断1000--2000年之间的闰年
判断1000--2000年之间的闰年要判断1000--2000之间的闰年。首先要将什么样的年份是闰年搞清楚。闰年条件: 1.可以被4整除但不可以被100整除的年份 2.可以被400整除的年份这是判断闰年的两个条件,是”或“的关系了解了闰年的概念了,接下来就开始写代码了:#include <stdio.h>int main(){ int year = 0; fo...原创 2018-06-23 10:05:25 · 350 阅读 · 0 评论 -
c语言| |如何求素数
首先解释一下啥叫做素数(素数也叫作质数)素数就是除了本身与1以外再没有其他因数求素数的几种方法1.从2到本身减1,看是否有没有可以整除的,如果有整除则不是素数#include<stdio.h>int main(){ int num = 0; int i = 0; scanf("%d", &num); for (i = 2; i < num - 1; i++)...原创 2018-04-18 23:02:33 · 1442 阅读 · 1 评论 -
c语言| |论求两个数的平均值的花样求法
第一种:直接求法·有限制,有可能超出了数据的储存空间,发生了溢出#include <stdio.h>float average_two(float a, float b){ float average = 0; average = (a + b) / 2; return average;}int main(){ float a = 0; float b = 0;...原创 2018-05-09 00:21:03 · 5245 阅读 · 0 评论 -
c语言| |求1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值
求1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值思想太简单了:就不说了,如有不会可加小凯QQ:991554637,大家可以一起学习!代码如下:#include <stdio.h>double SolveSumSub(int end){ int i = 0; double sum_sub = 0; for (i = 1; ...原创 2018-06-27 12:06:27 · 1309 阅读 · 0 评论 -
数据结构课设| |迷宫问题
迷宫问题思想:分成了三大部分,头文件maze.h,函数功能源文件maze.c,测试源文件test.c1.源文件maze.h#ifndef __MAZE_H__#define __MAZE_H__#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h&...原创 2018-06-29 08:44:29 · 3046 阅读 · 1 评论 -
网易云| |被3整除
被3整除时间限制:1秒空间限制:32768K小Q得到一个神奇的数列: 1, 12, 123,...12345678910,1234567891011...。并且小Q对于能否被3整除这个性质很感兴趣。小Q现在希望你能帮他计算一下从数列的第l个到第r个(包含端点)有多少个数可以被3整除。输入描述:输入包括两个整数l和r(1 <= l <= r <= 1e9), 表示要求解的区间两端。...原创 2018-06-27 14:05:06 · 195 阅读 · 0 评论 -
剑指offer| |旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:采用二分查找,每一次求得的mid只要arr[mid]大于第一个元素,说明该中间元素,还是在前面的递增...原创 2018-08-15 22:58:14 · 199 阅读 · 0 评论 -
剑指offer| |替换空格
题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:方法一:开辟一个新的数组来存放新的字符串代码:#include <stdio.h>#include <assert.h>char newStr[100] = { 0 };cha...原创 2018-08-15 22:31:17 · 171 阅读 · 0 评论 -
剑指offer| |二维数组中的查找
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:可以从右上角进行出发比较,因为对于右上角的数字,其左边的的数字均比其小,下面的数字均比其大代码:#include <stdio.h>int FindNumInAr...原创 2018-08-14 16:38:00 · 166 阅读 · 0 评论 -
c语言| |猜数字小游戏
猜数字小游戏代码如下:#include <stdio.h>#include <stdlib.h>#include <time.h>#include <stdbool.h>void surmize_num(){ bool flag = true; int num = 0; srand((unsigned)time...原创 2018-06-28 23:47:41 · 237 阅读 · 0 评论 -
c语言| |求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字
求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字例如:2+22+222+2222+22222代码如下:#include <stdio.h>int count_front5(int num){ int i = 0; int count = 0; for (i = 0; i < 5; i++) { ...原创 2018-06-28 23:25:01 · 1695 阅读 · 0 评论 -
c语言| |求出0~999之间的所有“水仙花数”并输出
求出0~999之间的所有“水仙花数”并输出水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。 在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。 例如153、370、371及407就是三位数的...原创 2018-06-27 23:19:09 · 552 阅读 · 0 评论 -
c语言| |数一下 1到 100 的所有整数中出现多少次数字9
数一下 1到 100 的所有整数中出现多少次数字9代码如下:#include <stdio.h>int Count_9(int num){ int i = 0; int count = 0; for (i = 0; i <= num; i++) { int tmp = i; while (tmp) ...原创 2018-06-27 21:03:42 · 189 阅读 · 0 评论