自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer 算法 (综合)

题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。解析:现在才发现,原来字符串转数字特蛋疼,很多细节,以前从来就没考虑过,鲁棒性啊!!!  首先,得定义个标志位LegitimateInput,表示串str是否为合法输入,初始化为1:合法输入。开始判断啦~~~若str空串,直接LegitimateInput置0,return 0退出;不是空串,那么,开始分析每个

2015-08-31 18:51:30 863

转载 用位运算实现四则运算之加减乘除

转自:http://www.cnblogs.com/dandingyy/archive/2012/10/29/2745570.html^: 按位异或;&:按位与; | :按位或计算机系统中,数值一律用补码来表示:因为补码可以使符号位和数值位统一处理,同时可以使减法按照加法来处理。对补码做简单介绍:数值编码分为原码,反码,补码,符号位均为0正1负。原码 -> 补码: 数值

2015-08-31 14:20:29 288

转载 引用的理解

引用类型到底是什么?它和指针有什么关系?它本身占用内存空间吗? 带着这些疑问,我们来进行分析。 先看代码:

2015-08-31 12:03:55 316

原创 剑指offer 算法 (发散思维能力)

题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。解析:短路求值原理class Solution {public: int Sum_Solution(int n) { int ans = n; ans && (ans += Sum_Solutio

2015-08-31 11:13:03 305

原创 剑指offer 算法 (抽象建模能力)

题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为S,输入n,打印出S的所有可能的值出现的概率。解析:用两个数组来存储骰子点数的每一个总数出现的次数。在一个循环中,第一个数组中的第n个数字表示骰子和为n出现的次数,在下一次循环中,我们加上一个新的骰子,此时和为n的骰子出现的次数应该等于上一次循环中骰子点数和为n-1、n-2、n-3、n-4、n-5与n-6的次数的总和,所以我们把另

2015-08-30 21:12:38 345

原创 词频统计 求最大k个数

题外话:想当年,编译原理课偷懒没自己实现这玩意,欠的终究还是要还的,现在补回来了。。。Write a program for displaying the ten most frequent words in a file such that your program should be efficient in all complexity measures./*(针对大量数据的

2015-08-29 22:26:20 513

转载 vector 结构体类型 使用 排序

如果要在Vector容器中存放结构体类型的变量,经常见到两种存放方式.方式一:放入这个结构体类型变量的副本。方式二:放入指向这个结构体类型变量的指针。假设结构体类型变量是这样的,typedef struct student{ char school_name[100]; char gender; int age; bool is_absent;} Studen

2015-08-29 13:15:22 1141

转载 平衡二叉树

出处:http://hxraid.iteye.com/blog/609949(java代码)平衡二叉树的定义 (AVL—— 发明者为Adel'son-Vel'skii 和 Landis)平衡二叉查找树,又称AVL树。它除了具备二叉查找树的基本特征之外,还具有一个非常重要的特点:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值(平衡因子)不超过1。也就是说AVL树

2015-08-28 18:52:01 351

原创 剑指offer 算法 (知识迁移能力2)

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述:对应每个测试案例,输出两个数,小的先输出。解析:两个指针,p1指向数组首,p2指向数组尾,判断两指针数据累加和,每当累加合为S则存入vector>vv数组,并保存乘积最小的乘积以及数组下标,累加和小于S则右移p1,大于S则左移p2,

2015-08-26 21:26:53 311

转载 vector容器与iterator迭代器

vector容器vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(c

2015-08-26 18:04:02 400

原创 剑指offer 算法 (知识迁移能力)

题目描述统计一个数字在排序数组中出现的次数。解析:采用二分查找,搜到数字后在其前后判断并计数class Solution {public: int GetNumberOfK(vector data ,int k) { int length=data.size(); if(length <= 0) return 0

2015-08-26 10:57:42 276

原创 剑指offer 算法 (时间空间效率的平衡)

题目描述把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解析:根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以创建一个数组,里面的数字是排好序的丑数。里面的每一个丑数是前面的丑数乘以2、3或者5得到的。那关键就是确保数组里的

2015-08-25 20:48:53 432

转载 C/C++的输出

1、#includeusing namespace std;//-----------------------int hello(){ cout << "hello " <<endl; return 1;}int world(){ cout << "world " <<endl; return 3;}//=========================

2015-08-25 11:32:27 265

转载 C++ 排序函数 sort(),qsort()的用法 附加.str()用法

sort   函数名功能描述sort对给定区间所有元素进行排序stable_sort对给定区间所有元素进行稳定排序partial_sort对给定区间所有元素部分排序partial_sort_copy对给定区间复制并排序nth_element找出给定区间的某个位置对应的元素is_sorte

2015-08-24 23:43:55 497

原创 剑指offer 算法 (时间效率)

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。解析:保存数组首个数字,计数值置一,然后遍历整个数组。遇到相同的数组,计数值加一,遇到不同的数字,计数值减一,当计数值减到零时,用当前数组数字替换保存的数字,再继续进行比较,以此类推,比较直

2015-08-24 16:18:57 422

原创 剑指offer 算法 (分解让复杂问题简单)

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。解析:分三步:第一步:cloneList(pHead);复制链表,每个节点后新连接一个复制的自己的节点,random先置空;第二步:connectRandom(pHead);依次给每个新节点的random连接第三步:return apartList(pHea

2015-08-22 18:12:19 343

原创 部分真题整理4

1、下面的代码运行的结果是:(B)class B extends Object{static{System.out.println("Load B");}public B(){System.out.println("Create B");}}class A extends B{static{System.out.println("Load A");}publi

2015-08-22 11:18:49 718

原创 部分真题整理3

1、 java语言中,按照一定格式生成程序的文档的工具是?javacjavahjavadocjar2、下列关于java抽象类的说法哪个正确?(D)某个抽象类的父类是抽象类,则这个子类必须重载父类的所有抽象方法接口和抽象类是同一回事可以用抽象类直接去实例化创建对象一个类只能继承一个抽象类解析:如果一个类中有抽象方法,那么这个类必须声明为 抽象类

2015-08-21 21:10:32 894

原创 部分真题整理2

1、声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是(C)(int *p[10])(int*)int [10]*p(int *)int (*(*p)[10])(int *)int ((int *)[10])*p以上选项都不正确解析:int (*(*func)[5])(int *p); func被一个圆括号包含

2015-08-20 23:48:32 1041 1

原创 构造函数和析构函数的调用过程

下面代码的输出是什么?(D)class A { public: A() { } ~A() { cout<<"~A"<<endl; } }; class B:public A { public: B(A &a):_a(a) { }

2015-08-20 22:11:32 1114

转载 右左法则----复杂指针解析

首先看看如下一个声明:int* ( *( *fun )( int* ) )[10];这是一个会让初学者感到头晕目眩、感到恐惧的函数指针声明。在熟练掌握C/C++的声明语法之前,不学习一定的规则,想理解好这类复杂声明是比较困难的。C/C++所有复杂的声明结构,都是由各种声明嵌套构成的。如何解读复杂指针声明?右左法则是一个很著名、很有效的方法。不过,右左法则其实并不是C/C++

2015-08-19 17:09:55 257

原创 剑指offer 算法 (举例让抽象具体化)

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解析:从上往下遍历 root结点 左结点 右结点 每遍历一个依次存入队列 由队列的先进先出 依次便可逐层存结点入数组中/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) :

2015-08-19 10:47:10 292

原创 剑指offer 算法 (举例让抽象具体化)

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min,push,pop的时间复杂度都是O(1)。解析:首先是一个栈,这个栈已经是最常见的那种,我们需要改造它使它能够在O(1)时间内返回最小元素,刚开始的思路是往栈里面添加一个元素放在stack的顶部,表示当前栈里面的最小元素,如果压入的元素比它小,那么更新它,并且将它pop出来,放在一个临时

2015-08-18 22:46:48 360

原创 剑指offer 算法 (画图让抽象问题形象化)

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树 8/ \6 10/ \ / \5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *

2015-08-18 19:37:58 279

原创 剑指offer 算法 (代码的鲁棒性)

题目描述输入一个链表,输出该链表中倒数第k个结点。解析:p1,p2保持k-1的距离,当p1指向链表尾时,p2正好指向倒数第k个结点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {pu

2015-08-18 11:00:48 1126

原创 剑指offer 算法 (代码的完整性)

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。class Solution {public: double Power(double base, int exponent) { if(equal(exponent,0.0)&&(exponent<0))//base为零 系数为负数

2015-08-17 16:54:37 365

原创 剑指offer 算法 (位运算)

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。class Solution {public: int NumberOf1(int n) { //方法一:(包含二进制负数不成立)n依次右移与1计数 int cnt=0; while(n) {

2015-08-17 16:11:30 312

原创 剑指offer 算法(栈和队列 查找和排序)

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解析:用栈来模拟队列。我们首先插入一个元素a到stack1中,再压入两个元素bc,此时栈中有元素abc,其中c位于栈顶,而stack2仍然为空。我们试着删除一个元素。按照队列先进先出的原则,我们应该先删除元素a。元素a存放在stack1中且不在栈顶,因此不能直接删除。注意到stack2还未使用,

2015-08-16 20:41:49 433

原创 剑指offer 算法(链表 树)

题目描述输入一个链表,从尾到头打印链表每个节点的值。解析:逆转链表,与栈顺序一致,可以用辅助栈解决这个问题。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {*

2015-08-16 15:44:17 241

原创 剑指offer 算法(数组 字符串)

题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解析:解题思路:从二维数组的右上角的元素开始判断,因为此元素是它所在行的最大数,是它所在的列的最小数。如果它等于要查找的数字,则查找过程结束。如果它大于要查找的数字,则可以排除它所在的列。如果它小于要查找的数字,则

2015-08-15 19:28:45 307

原创 剑指offer 算法 (递归与循环)

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。class Solution {public: int jumpFloor(int number) { if(number==1) return 1; if(number==2) return 2;

2015-08-15 15:00:51 586

原创 部分真题整理

① NLR:前序遍历(PreorderTraversal亦称(先序遍历))——访问根结点的操作发生在遍历其左右子树之前。② LNR:中序遍历(InorderTraversal)——访问根结点的操作发生在遍历其左右子树之中(间)。③ LRN:后序遍历(PostorderTraversal)——访问根结点的操作发生在遍历其左右子树之后。1、已知一棵二叉树,如果先序遍历的节点顺序

2015-08-13 22:26:58 1369

原创 二进制地址的伙伴地址

二进制地址为011011110000,大小为(4)10和(16)10块的伙伴地址分别为假设地址是16位的,(011011110000)2=(0000 0110 1111 0000)2=(06F0)16>06F0h所以当前地址为06F0h查阅相关资料,有:伙伴的概念, 满足以下三个条件的称为伙伴: ( 1 ) 两个块大小相同( 2 ) 两个块地址连

2015-08-12 22:01:28 1789

转载 经典C语言能力测试题(值得一看)

绝对能够测试你的C语言功力的几个问题!很少有真正精通了C语言编程的学员,一般都有或多或少概念不是完全清楚的问题,特别是一些需要丰富的实战经验才能体会和明白的问题,如字符串,指针,类型转换,定义指向函数的指针类型,这也是导致学习C困难的一个原因。下面有几个简单测试将能发现你对C语言的掌握情况。1)int x=35;char str[10];//问:strlen(str)和sizeof

2015-08-12 21:02:18 1361

转载 C/C++ 程序设计员应聘常见面试试题深入剖析

本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。  许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面试者在技术上究竟达到了怎样的程度,我们能真正写好一个strcpy函数吗?我们都觉得自己能,可是我们写出的strcpy很可能只能拿

2015-08-12 18:06:29 317

原创 笔试总结2(整理 觉得比较好的)

1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;   static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;   static函

2015-08-11 22:33:57 336

转载 笔试总结1

1. 引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。2. 堆栈溢出一般是由什么原因导致的?没有回收垃圾资源。3. 什么函数不能声明为虚函数?constructor函数不能声明为虚函数。4. 写出float x 与“零值”比较的if语句。if(x>

2015-08-11 14:12:04 325

转载 面试中经常出现的算法2(整理)

//出现次数相当频繁//实现strcmp函数int strcmps(char* l,char* r){ //assert(l!=0&&r!=0); while(*l == *r &&*l != '\0') l++,r++; if(*l > *r) return 1; else if(*l == *r) retur

2015-08-11 14:08:49 283

转载 面试中经常出现的算法1(整理)

//二分查找的代码.int bfind(int* a,int len,int val){ int m = len/2; int l = 0; int r = len; while(l!=m && r!= m) { if(a[m] > val) { r = m; m = (m+l)/2;

2015-08-10 22:17:10 339

原创 面试的算法2(C语言)(整理)

/*写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:   在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存。   例如:"abc123def123456eec123456789dd"的首地址传给intputstr后,函数将返回9,outpu

2015-08-10 12:31:21 394

空空如也

空空如也

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

TA关注的人

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