自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟的成长之旅

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

原创 计算一个整数各个位的和,直到和<10输出

问题分析: 可以通过循环来做,但是时间复杂度太高,可以通过以下方法来做。(13)%9=(1*10+3)%9=(1*9+1+3)%9=(1+3)%9故:(ab)%9=(a+b)%9class Solution {public: int addDigits(int num) { if(num==0) return 0; //下面不会出

2017-11-05 16:43:58 718

原创 整数N!尾部0的个数

问题描述:给一个整数n,返回n!尾部0的个数。 方法一:数字n超大时,易超时class Solution {public: int trailingZeroes(int n) { int sum=0; for(int i=5;i<=n;i+=5) { int x=i; while(x%5==0

2017-10-29 20:34:12 406

原创 Reverse Bits

问题描述:翻转二进制位。class Solution {public: uint32_t reverseBits(uint32_t n) { uint32_t res=0; for (int i = 0; i < 32; ++i) { //得到最低位,然后将其左移到最终位,和res或等 res |= ((n >

2017-10-29 20:14:00 284

原创 判断一个数是不是2的幂类似问题

问题描述:判断n是否为2的幂次。class Solution {public: bool isPowerOfTwo(int n) { if(n<=0) return false; return ((n&(n-1))==0);//n&(n-1)去除n最低位的一个1 }};问题描述:判断一个数是否为3的幂。class Solut

2017-10-29 19:53:20 286

原创 循环冗余校验码CRC

一、基本原理 CRC检验原理实际上就是在一个p位二进制数据序列之后附加一个r位二进制检验码(序列),从而构成一个总长为n=p+r位的二进制序列;附加在数据序列之后的这个检验码与数据序列的内容之间存在着某种特定的关系。如果因干扰等原因使数据序列中的某一位或某些位发生错误,这种特定关系就会被破坏。因此,通过检查这一关系,就可以实现对数据正确性的检验。二、几个基本概念1、帧检验序列FCS(Fram

2017-08-02 21:56:46 668

原创 管道

一、什么是管道 Linux下一切皆文件,我们可以创建一个管道文件进行通信,实际上是调用pipe函数在内核中开辟一块缓冲区(称为管道)用于通信,管道是一种最基本的IPC机制,由pipe函数创建 。 它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描述符,filedes[0]指向管道的读端,filedes[1]指向管道的写端(很好记,就像0是标准输入1是标准输出一样)。

2017-06-18 15:56:48 264

原创 死锁

一、什么是死锁死锁指的是两个或两个以上的进程在执行过程中,由于资源竞争或者由于彼此通信(如进程切换)而造成的一种阻塞现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态,这些永远在互相等待的进程成为死锁进程。二、关于死锁的产生死锁产生的原因 : (1)因为系统的资源不足,不能满足进程的资源请求,会导致多个线程同时争夺一个资源 (2)进程运行推进的顺序不合适

2017-06-18 15:43:28 209

原创 生产者与消费者模型

使用系统:Centos简述:在实际软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块,就形象的称为生产者,而处理数据的模块,就称为消费者。 单单抽象出生产者和消费者,还够不上是生产者/消费者模式。该模式还需要一个缓冲区处于消费者和生产者之间,作为一个中介。生产者把数据放入缓冲区,而消费

2017-06-18 15:35:45 301

原创 判断元素出栈合法性

问题分析:****注意:**** 首先需要明确这个问题存在一个缺陷,就是元素中不能有相同的元素,不然就会误判。大致思路:代码部分:#include<iostream>using namespace std;#include<assert.h>#include<stack>bool OutRight(int* in, int* out, size_t insize, size_t out

2017-05-30 21:33:15 526

原创 利用一个数组实现两个栈

问题分析:利用一个数组实现连个栈,有多种方式如:方法1:利用奇偶位,分别存储栈1和栈2的数据;方法2:从中间开始将数组一分为二,左边为栈1,右边为栈2;方法3:栈1从头开始增长,栈2从尾向头进行增长,相遇后,增容;优劣分析:***建议:*** 如果要快速实现逻辑,可以不用实现成动态增长内存的版本,直接定义一个静态数组完成;有的时候可以不用实现模板类型的,直接怎么简单怎么实现。代码部分

2017-05-30 20:55:57 1584

原创 两个队列实现一个栈

问题分析: <1>每次push都向_q1中push; <2>**注意**:每次pop时,都先判断_q1中是否有数据; 先看_q1中是否有数据,有数据,将_q1数据移动到_q2,然后将_q2的top数据pop;_q1没有数据,将_q2数据移动到_q1,然后将_q1的top数据pop;pop场景:pop场景1:_q1和_q2中都没有数据,assert;pop场景2:_q1有数据,

2017-05-30 20:12:30 260

原创 使用两个栈实现一个队列

问题分析:push:直接将元素push到_s1即可;pop:在进行pop时,队列是先进先出,栈是先进后出。故可以利用_s2,当_s2为空时,将_s1中的数据全都移动到_s2中,此时就可以实现先进先出。**注意:** 只有当_s2为空,将_s1的数据移动到_s2场景一:第一次pop,_s2 为空场景二:_s2不为空,_s1不为空代码部分:#pragma once#include

2017-05-29 11:35:48 318

原创 实现一个栈,push、pop、求栈中最小值min的时间复杂度为O(1)

使用平台:vs2013一个问题肯定不止一种解法,我下面给的是利用两个栈来求去栈中最小值,当然一个栈也可以求取问题。一个栈的求解这里就只给出思路。 一个栈求解:每次push,push两个值,当前要push的值,和最小值,这样就可以实现一个栈求解问题,但是这样做的话每次取栈顶的值或者push时会比较麻烦。所以可以借助pair来存取当前值和最小值。问题分析:每次插入时: 1.先判断_mi

2017-05-27 22:46:31 1273

原创 位图 BitMap

看到这个名字就可以想象到位图顾名思义就是通过一个位来存储一个整型,用0和1来标记这个数存在还是不存在。通常位图可以在内存不够、只判断数字在不在的情况下使用,节省空间。#pragma once#include <iostream>using namespace std;#include <vector>class BitSet{public: BitSet(const size_t&

2017-04-30 16:48:16 192

原创 堆的一些基本问题

使用平台:vs2013基础概念部分堆:堆数据结构是一种数组对象,通过数组实现堆数据结构,可以看做是一颗完全二叉树结构。堆分为大堆和小堆大堆:每个父节点都大于子节点; 小堆:每个父节点都小于孩子节点。堆实现过程主要用到的知识点1>用parent代表父节点下标,chaild代表孩子节点下标,则:chaild=parent*2+1parent=(chaild-1)/22>通过仿函数实现大小堆代码的复用;

2017-04-17 19:13:39 254

原创 Linux下简单进度条实现

系统:CentOS1、printf行缓冲函数 printf是一个行缓冲函数,先写到缓冲区,满足一定条件会刷新缓冲区。比如有'\n'或者调用 fflush(stdout) 手动刷新等。验证:以打印0到49为例子<1>没有\n,有fflush(stdout)现象:边打印边输出<2>没有\n,没有fflush(stdout)现象: 先休眠一会儿,在输出结果<3>没有fflush(stdout),有

2017-04-08 20:51:18 261

原创 Vim简单配置

使用系统:CentOSVim是Linux下一个强大的编辑器,但是在没有配置之前,Vim使用起来是很不方便的,在下面主要介绍Vim的一些简单的配置。(1)在用户的主目录下的.vimrc文件来存放Vim的配置;先看用户的主目录下是否存在 .vimrc——#ll -a 存在就用Vim打开—— #vim .vimrc 不存在创建文件 .vimrc——#touch .vimrc(2)Vim

2017-04-08 16:03:50 530

原创 单链表面试题(一)

在面试中单链表的面试题是非常多的,这里对单链表的面试题做一个简单的总结。在单链表面试题中,在没有说明的情况下,默认为无头单链表。由于重点不在于单链表实现,这里就不给出单链表实现,只给出单链表节点定义如下:typedef int DataType;typedef struct SLinkNode{ DataType data; struct SLinkNode* next;}SL

2017-04-04 21:59:04 284

原创 Linux中find指令的简单使用

find指令 Linux下find命令在目录结构中搜索文件,并执行指定的操作。命令参数1、 -print:find命令将匹配的文件输出到标准输出。 2、-exec:find命令对匹配的文件执行该参数所给出的shell命令。命令选项1、-name:按照文件名查找文件1)查找以.c结尾的文件2)查找以A-Z开头的文件3)根据定义文件格式查找文件2、-perm:按照文件权限查找文件3、-user:

2017-04-01 23:31:02 814

原创 Linux权限管理和Stat

文件访问者的分类文件和文件目录的所有者:u—User文件和文件目录的所有者所在的组的用户:g—Group其它用户:o—Others文件访问权限的种类(事物属性)读(r):对文件而言,具有读取文件内容的权限;对目 录来说,具有浏览该目录信息的权限写(w):Write对文件而言,具有修改文件内容的权限;对 目录来说具有删除移动目录内文件的权限执行(x):对文件而言,具有执行文件的权限;

2017-03-26 11:33:14 634

原创 动态多态——虚函数

使用平台:vs2013动态多态动态绑定:在程序执行期间,判断所引用对象的实际类型,根据实际的类型调用相应的方法。动态绑定的条件: 1. 必须是虚函数; 2. 通过基类类型的引用或者指针来调用虚函数。对于有虚函数的类,编译器都会维护一张表,对象的前四个字节就是指向虚表的指针。重写(覆盖):不再同一作用域(分别在基类和派生类);函数名相同,参数列表相同,返回值相同(协变和析构

2017-03-11 13:52:43 321

原创 引用和指针

使用平台:VS2013引用概念: 引用不是新定义一个变量,而是给已存在的变量去了一个别名,编译器不会为引用变量开辟内存空间,它和引用变量共用同一块内存空间。引用特性:引用在定义时必须初始化;一个变量可以有多个引用;引用一旦绑定了一个实体,就不能再改变为其他变量的引用。注意:不要返回栈内存的作用域;引用时类型必须是同一种类型;临时对象具有常性。常引用:如果用变量初始化const型的引

2017-03-04 17:01:26 198

原创 模板实现Vector

模板 模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为模板函数和模板类。模板实现Vector优点 通过使用模板实现Vector可以提高代码的复用度,原先在实现Vector只能定义一种具体类型,如果要再定义另外一种类型,必须将代码重新修改一遍,通过模板实现Vector解决了代码复用度低的问题。头文件部分:#include <iostream>using

2017-02-20 15:26:45 1582

原创 菱形继承和菱形虚拟继承探索

使用平台:vs2013 单继承&多重继承: 1. 单继承–一个子类只有一个直接父类时称这个继承关系为单继承 2. 多继承–一个子类有两个或以上直接父类时称这个继承关系为多继承 有了多继承,必然就会出现菱形继承 菱形继承: 菱形继承对象模型class AA{//在这里只研究菱形继承的对象模型,为了方便研究,将访问限定符规定为public(便于在类外对成员变量赋值)public:

2017-02-16 01:34:49 299

原创 RPN简单实现

注意:结构实现的巧妙性#include <iostream>using namespace std;#include <assert.h>#include <stack>enum Type//定义类型,操作数和操作符{ OP_SYMBOL, OP_NUM, ADD, SUB, MUL, DIV,};struct Cell//单元{

2016-11-30 22:50:12 1189

原创 队列实现

队列实现queue.h//stack后进先出#include<assert.h>template<class T>class Stack{public: Stack() :_pdata(NULL) , _size(0) , _capacity(0) {} ~Stack() { delete[] _pdata;

2016-11-30 22:42:49 173

原创 栈实现

栈实现 stack.h//stack后进先出#include<assert.h>template<class T>class Stack{public: Stack() :_pdata(NULL) , _size(0) , _capacity(0) {} ~Stack() { delete[] _pdata;

2016-11-30 22:39:38 193

原创 斐波那契数列的递归实现和非递归实现

定义为_Longlong类型,主要是避免越界 斐波那契数列的递归实现_Longlong Fib1(size_t n){ if (n < 2) return n; else return Fib1(n - 1) + Fib1(n - 2);}非递归实现_Longlong Fib2(size_t n){ _Longlong *FibArr

2016-11-26 19:28:06 280

原创 二分查找的递归和非递归实现

二分查找:注意实在有序数组中进行查找非递归实现int BinaryFind1(int arr[],int left,int right,int data){ int mid =(left&right)+((left^right)>>1); while (left <= right) { if (arr[mid] == data) re

2016-11-26 19:23:46 220

原创 计算1到100的和

使用循环,来计算 头文件部分#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<windows.h>封装的函数sum()实现部分void sum(){ int x,y; int i,sum=0; printf("请输入区间[x,y]边界x,y的值:\nx="); scanf("%d", &x);

2016-11-19 19:53:07 1042

原创 实现电子时钟,每隔一秒更新一个显示

实现平台:VS 2013,不同的平台,头文件可能会有所不同,在此处注意Windows下清屏为“cls”,睡眠为Sleep()等。 头文件部分#define _CRT_SECURE_NO_WARNINGS 1#include <iostream>using namespace std;#include<time.h>#include<iomanip>#include<windows.h>时

2016-11-19 17:22:21 3651

原创 浅谈为什么拷贝构造函数传引用

Date d3=(1990,3,8);//构造一个对象 Date d1=d3;//调用拷贝构造函数 (1) Date(const Date d) {} 分析: 通过d3来创建d1;调用拷贝构造函数 现在这样拷贝的话,就是先通过d3创建一个临时的拷贝d,这个过程也是通过一个已存在的对象创建一个对象,调用拷贝构造函数 不停的调用拷贝构造函数,无穷的递归,程序出错 (2) Date(c

2016-10-22 12:27:10 806

原创 写一个函数返回参数二进制中 1 的个数

写一个函数返回参数二进制中 1 的个数比如: 15       0000 1111       4 个 1#define use _CRT_SECURE_NO_WARNINGS 1#include #include int  count_one_bits(unsigned int num){   int count=0;   while(num!

2016-09-17 18:57:31 582

原创 打印某个区间之间的素数,并输出素数的个数。如100-200

打印某个区间之间的素数,并输出素数的个数#define use _CRT_SECURE_NO_WARNINGS 1#include #include #include void Print_prime(int lower,int upper){int i=0,j=0;int count=0;for(i=lower;i{for(j=2;j{

2016-09-17 18:36:46 1107

原创 判断某年是否为闰年

判断某年是否为闰年闰年判断条件:能被4整除但不能被100整除的年为闰年,或者能被400整除的年份为闰年#define _CRT_SECURE_NO_WARNINGS 1#include #include int main(){int year=0;printf("请输入要判断的年份:");scanf("%d",&year);if(( ye

2016-09-17 17:25:34 405

原创 打印乘法口诀表(可以手动输入要打印的为几乘几的口诀表)

#define _CRT_SECURE_NO_WARNINGS 1#include #include void MultiList(int n){int i,j,num;for(i=1;i{for(j=1;j{num=i*j;printf("%2d*%2d=%4d",i,j,num);if(i==j)printf("\n");}}

2016-09-13 13:16:38 817

原创 不创建临时变量,交换两个数的内容

通过使用按位异或实现不创建临时变量,交换两个数的内容按位异或^即 1^0=1  1^1=0  0^1=1按位异或对应位按位异或相同为0,相异为1,0和任意数按位异或为任意数#include #include int main(){int a=1,b=2;a=a^b;//得到a,b的不同位b=a^b;//实现1赋给ba=a^b;//实现2赋给apr

2016-09-05 20:58:13 202

sqljdbc 1.0 3.0 4.0

Microsoft SQL Server JDBC Driver 3.0 4.0 1.0 2000的三个jar包

2017-12-28

空空如也

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

TA关注的人

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