自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

努力成为Al风口的猪

分享技术 乐享生活 All in Al

  • 博客(68)
  • 收藏
  • 关注

原创 剑指offer------从上往下打印二叉树

题目:思路:代码:struct TreeNode{ int val; TreeNode *left; TreeNode *right;}class Solution{public: void DeepFirstPrint(TreeNode*pTreeNode) { if(pTreeNode==NULL) return ; queue&l...

2018-09-30 18:23:57 143

原创 剑指offer------树的镜像

1.题目:2思路:3.代码:struct TreeNode{ int val; TreeNode *left; TreeNode *right;}class Solution{public: void Mirror(TreeNode *pRoot) { if((pRoot == NULL)||(pRoot->left==NULL)||(pRoo...

2018-09-30 18:12:13 113

原创 剑指offer------书的子结构

题目:思路:代码:struct TreeNode{ int val; TreeNode *left; TreeNode *right;}class Solution{public: bool HasSubtree(TreeNode *pRoot1,TreeNode *pRoot2) { bool result = fasle; if(pRoot1...

2018-09-30 18:00:37 122

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

题目输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路通常树有如下几种遍历方式:前序遍历:先访问根结点,再访问左子结点,最后访问右子结点。 中序遍历:先访问左子结点,再访问根结点,最后访问右子...

2018-09-29 18:15:50 177

原创 剑指offfer------字符流中第一个不重复的字符

题目请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路这道题还是很简单的。将字节流保存起来,通过哈希表统计字符流中每个字符出现的次数,顺便将字符流保存...

2018-09-28 19:23:24 133

原创 剑指offer------不用加减乘除做加法

题目:思路:思路首先看十进制是如何做的: 5+7=12,可以使用三步走:第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。 同样我们可以三步走的方式计算二进制值相加: 5-101,7-111第...

2018-09-28 16:23:33 136

原创 剑指offer------1到n的和

题目求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路递归 与运算代码class Solution{public: int Sum_Solution(int n) { int sum = n; sum && (sum += Sum_Solution(...

2018-09-28 16:07:18 101

原创 剑指offer------扑克牌顺子

题目:思路:代码:class Solution{public: bool IsContinuous(vector<int> numbers) { int length=number.size(); if(length<=0) return fasle; //排序数组 sort(numbers.begin(),number...

2018-09-27 16:55:45 142

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

题目:思路:代码:bool FindNumberWithSum(int data[],int length,int sum,int* num1,int* num2){ bool found = fasle; if(length<1 || num1==NULL || num2==NULL) return found; int ahead=0; ...

2018-09-27 15:23:39 134

原创 剑指offer------和为S的连续正数序列

题目:思路:代码:void FindContinuousSequence(int num){ //特例 if(sum<3) return; int small=1,big=2; while(small<big) { int cursum=(small+big)*(big-small+1)>>1; if(cursum...

2018-09-27 11:09:27 95

原创 剑指offer------丑数

题目把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路所谓的一个数m是另一个数n的因子,是指n能被m整除,也就是n%m==0。根据丑数的定义,丑数只能被2、3和5整除。根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以创建一...

2018-09-27 10:39:32 99

原创 剑指offer-----1~n整数中1出现的次数

题目:输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例子:例如输入12,1~12这些整数中包含1的数字有1、10、11和12,1一共出现了5次。链接:剑指Offer:31思路标签:算法:寻找规律解答:1. 不考虑时间效率的解法(时间复杂度:O(nlogn))这种基本的解法就是对每一个数字进行数字的统计,时间复杂度高,难以拿到offer的解法;...

2018-09-26 16:11:19 102

原创 剑指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.链接:剑指Offer:20题思路标签:绘图寻找规律解答:1. C++将矩阵看作若干个圈组成,每次...

2018-09-26 15:54:51 108 1

原创 剑指offer------数值的整数次方

题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。问题解析:考察代码完整性的问题。要求有异常值的处理机制。链接:剑指Offer:11题思路标签:边界值处理; 异常值处理;解答:1. C++全面但不高效的解法:使用全局标志变量来标识是否有错误发生; 注...

2018-09-26 15:09:24 118

原创 剑指offer------其他题目-----二进制中1的个数

1.题目:2.算法思路:1.涉及到二进制想到位运算:2.代码:int NumberOf1(int n){ int count = 0; while(n) { if(n&1) count++; n=n>>1; } return count;}3.问题:3.2改进:代码:int Nu...

2018-09-26 14:28:30 83

转载 指针常量和常量指针

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chen1083376511/article/details/78442059 指针常量:指向常量的指针。不可以改变指向某变量的值,可以改变指向某个变量。const int *p1;int con...

2018-09-25 17:18:33 104

转载 位运算实现加法

越是简单的东西,越显艺术,见证一句话,简单就是美,就像计算机中的0和1,同样,位运算虽看起来简单,但如若能熟练运用,也会很神奇。有感于一些位运算的算法,看过之后不觉拍案叫好,同时也在网上找到了一篇很好的文章,遂记于此。原文链接地址如下:http://cruiserzpt99.blog.163.com/blog/static/66524...

2018-09-25 10:30:01 1742

转载 经典面试题

第七题:下面代码printf打印的结果是多少?#include <stdio.h>int main(){ unsigned int a = 0xfffffff7; unsigned char ch = (unsigned char)a; char* b = (ch...

2018-09-25 10:01:50 99

原创 sizeof与strlen的区别

一、基本定义1、sizeof是C/C++中的一个运算符,其作用是返回一个对象或者类型在内存中所占用的字节数。    注意:sizeof后面如果是类型则必须加括号,如 sizeof(char);而如果是变量名则可以不加括号,如 sizeof a; 但是建议使用时  均加上...

2018-09-24 18:37:51 70

转载 数据类型各自所占空间大小

2018-09-24 18:33:05 569

转载 大小端模式

1.大与小,说的是什么大与小,实际上说的是位权值,也就是说字节顺序问题,是由数学中,自然数的书写模式的规律,扩展延伸类比而来的。 例如:        2018这个十进制多位自然数的书写,是从左到...

2018-09-24 18:28:24 127

转载 详解原码、反码以及补码

1.定义:所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。2.原码:最高位为0为正,1为负,也就是说原码中的正数是一致的,只有为负数时最高位会为1,那么5和-5分别表示为...

2018-09-24 17:03:56 955 4

原创 位运算的要点

1.2.3.4.位运算比除法快,一些算法的改进,二分法堆的插入操作。5. 

2018-09-24 16:45:17 145

原创 运算符优先级

 

2018-09-24 16:29:40 159

原创 子类和子类型

“子类”和“子类型”是不同的,替换原则只适合于"子类型"关系,而一般编程语言只是考虑了"子类"关系,子类 : 说明了新类是继承自父类子类型 : 强调的是新类具有父类一样的行为(未必是继承)。那么,什么时候才应该使用继承?  那就是符合子类型关系的时候,或者一般所说的”is a"关系, 你必须保证新类的行为与父类完全一致!!!在任何使用父类的场合,新类应该表现一样的行为。...

2018-09-18 10:10:11 3510 3

原创 剑指offer------递归------矩形覆盖

题目我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路以2x8的矩形为例。示意图如下:我们先把2x8的覆盖方法记为f(8)。用第一个1x2小矩阵覆盖大矩形的最左边时有两个选择,竖着放或者横着放。当竖着放的时候,右边还剩下2x7的区域,这种情况下的覆盖方法记为f(7)。接下来考虑横着放的情况。当1x...

2018-09-17 17:21:56 137

原创 剑指offer------递归------变态跳台阶

题目一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路我想说,这青蛙真变态,真能跳。当n=1时,结果为1; 当n=2时,结果为2; 当n=3时,结果为4;以此类推,我们使用数学归纳法不难发现,跳法f(n)=2^(n-1)。代码:class Solution {public: int jumpF...

2018-09-17 17:18:44 82

原创 剑指offer------递归------跳台阶

题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路首先我们考虑最简单的情况。如果只有1级台阶,那么显然只一种跳法。如果有2级台阶,那就有两种跳法:一种是分两次跳,每次跳1级;另一种是一次跳2级。接着,我们来讨论一般情况。我们把n级台阶时的跳法看成是n的函数,记为f(n)。当n>2时,第一次跳的时候就有两种不同的选择:一是第一次只...

2018-09-17 17:16:31 106

原创 剑指offer------递归------斐波那契数列

题目大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。(n<=39)斐波那契数列公式为:思路这道题递归很好写,但是存在很严重的效率问题。我们以求解f(10)为例类分析递归的求解过程。想求f(10),需要先求得f(9)和f(8)。同样,想求得f(9),需要先求的f(8)和f(7)....我们可以用树形结构来表示这种依赖关系,如下图所示:我...

2018-09-17 17:11:55 200

原创 剑指offer------栈------栈的压入,弹出

题目输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不...

2018-09-17 16:51:38 101

原创 剑指offer------栈------包含min函数的栈

题目:思路:代码:class Solution{public: void push(int value) { st_data.push(value); if(st_assist.size()==0 || value<st_assist.top()) st_assist.push(value); else st_assist....

2018-09-17 16:36:55 129

原创 剑指offer------栈------用两个栈实现队列

题目用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路创建两个栈stack1和stack2,使用两个“先进后出”的栈实现一个“先进先出”的队列。我们通过一个具体的例子分析往该队列插入和删除元素的过程。首先插入一个元素a,不妨先把它插入到stack1,此时stack1中的元素有{a},stack2为空。再压入两个元素b和c,还是插入到stack1...

2018-09-17 11:48:21 115

原创 字符串------找出01串中o和1连续出现的最大次数

题目:思路:记录遍历中的最大值,与temp比较,并交换代码:void Calculate(const char *str,int *max0,int *max1){ int temp0=0; //保存0串的最大长度 int temp1=0; //保存1串的最大长度 while(*str) { if(*str=='0') { ...

2018-09-14 18:42:30 757

原创 字符串------删除指定长度的字符

题目:代码:char *deleteChars(char *str,int pos,int len){ char *p = str+pos-1; //指向pos位置的字符 int tt = strlen(str); //计算字符的长度 if((pos<1)||(p-str)>tt) { return str; } if((p-str...

2018-09-14 18:25:25 626

原创 字符串-----判断字符串是否为回文

题目:思路:代码:int IsRevStr(char *str){ int i,len; int found=1; //表示是回文 if(str == NULL) { return -1; } len = strlen(str); for(int i=1;i<len/2;i++) { if(*(str+i)!=*(str+len-...

2018-09-14 16:11:16 213

原创 字符串------字符串中子串的查找

题目:算法:遍历第一个串与第二个串比较,从第一个串一个一个往后移动代码: 指针法:const char *strstr(const char* src,const char* sub){ const char *bp; const char *sp; if(src ==NULL || sub==NULL) { return src; } whil...

2018-09-14 16:01:06 257

转载 剑指offer------字符串------表示树值的字符串

题目请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路这道题还是比较简单的。表示数值的字符串遵循如

2018-09-13 17:23:01 199

转载 剑指offer------字符串------正则表达式

题目请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。思路这道题有些绕,需要好好思考下。我们先来分析下如何匹配一个字符,现在只考虑字符'...

2018-09-13 17:15:12 98

原创 剑指offer------字符串------字符串转化为数字

题目将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入-21474836471a33输出-21474836470思路这道题要考虑全面,对异常值要做出处理。...

2018-09-13 16:56:19 215

原创 剑指offer------字符串-----左旋转字符串(反转单词的延伸)

题目汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路例如:输入字符串"abcdefg"和数字2,该函数将返回左旋转2位得到的结果"cdefga...

2018-09-13 16:30:14 179

空空如也

空空如也

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

TA关注的人

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