自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (16)
  • 收藏
  • 关注

原创 查找出现次数超过一半的数

给定有n个数的数组a,其中超过一半的数为一个定值,在不进行排序,不开设额外数组的情况下,以最高效的算法找出这个数。int find(int *a, int n){ if (a == NULL || n < 1) { return -1; } int result = *a; int count = 1; for (int i = 1; i < n; i++)

2013-09-30 00:11:37 987

原创 查找和为某一值的两个数

给定一个有序数组a,长度为len,和一个数x,判断A数组里面是否存在两个数,他们的和为x。bool judge(int *a, int len, int x){ if (a == NULL) { return false; } int *left = a; int *right = a+len-1; while (left < right) { in

2013-09-29 23:49:28 685

原创 查找数组最大最小值

设计一个最优算法来查找一个n个元素数组中的最大值和最小值。一直一种需要比较2n次的方法,请给出一个更优的算法。请特别注意优化时间复杂度的常数。void fun(int a[], int n){ if (a == NULL) { return; } int max = a[0]; int min = a[0]; int len = (n&1)? n : n-

2013-09-29 23:18:05 2918

原创 字符串压缩

通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。压缩规则:    1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。    2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。要求实

2013-09-29 22:24:02 694

原创 翻转单词

输入一个字符串,里面含有若干个单词,每两个单词之间用一个空格分隔。要求翻转该字符串中的单词。如:this is a test 反转为:test a is this。void reverse(char *left, char *right){ while (left < right) { swap(*left, *right); left++; right--

2013-09-29 00:31:57 567

原创 数组奇偶数排序

输入一个整数数组,要求重新排序,将奇数放在数组前面,偶数放在后面。时间复杂度O(n), 空间复杂度O(1)。void fun(int a[], int n){ if ((a == NULL) || n < 2) { return; } int p = 0; int q = -1; while (p < n) { if (a[p] & 1) {

2013-09-27 21:16:18 3405

原创 分割单向链表

将一个单向链表分成两部分,如果节点总数为奇数,则第一部分比第二部分的节点数多一。如1,2,3,4,5分割为1,2,3 和4,5。void FrontBackSplit(Node *head, Node **front, Node **back){ if (NULL == head) { return; } Node *p = head; Node *q = h

2013-09-27 00:00:20 928

原创 路线总数

有一个m行n列的棋盘,从左上角走到右下角,每次只能向右或向下走一步,计算有多少种不重复的路线。const int M_MAX = 100;const int N_MAX = 100;int fun(int m, int n){ int buf[M_MAX+2][N_MAX+2] = {0}; buf[m][n+1] = 1; for (int i = m;

2013-09-23 23:25:42 883

原创 最长无重复子字符串

输入一个字符串,计算最长的不包含重复字符的子字符串。如:"abcabcbb"的最长无重复子字符串为“abc”,输出结果为3。"bbbbbb"的最长无重复子字符串为"b",输出结果为1.#include int fun(string s){ int n = s.length(); int p = 0; int q = 0; bool flag[256] = {false,

2013-09-21 17:20:18 814

原创 数字的积

输入一个长度为n的整数数组a[n],输出为长度为n的整数数组output[n],要求output[i]的值为除了除了a[i]之外其它所有数组a内元素的乘积。不能用除法,并且时间复杂度要求为O(n)。例如输入{4, 3, 2, 1, 2},输出{12, 16, 24, 48, 24}。方法一:void fun(int a[], int output[], int n){ int *b

2013-09-20 23:18:23 914

原创 向循环有序链表内插入一个节点

Node* insert(Node* aNode, int x){ if (aNode == NULL) { aNode = new Node(x); aNode->next = aNode; return aNode; } Node *prev = aNode; Node *p = prev->next; do { if (prev->value

2013-09-20 20:44:53 1667

原创 删除字符串中特定字符

删除字符串中的“b”和“ac”,需要满足如下的条件:字符串只能遍历一次;不能够使用额外的空间。例如:acbac ==> "";aaac ==> aa;ababac ==> aa;bbbbd ==> d;aaccac==>"";abcac==>"";aaaccc==>"";aaabccc==>""。void fun(char *a){ if (a == NULL) { return

2013-09-20 12:02:10 1480

原创 统计无符号整数比特位为1的数量

int fun(unsigned int a){ int count = 0; while (a) { a = a & (a-1); count++; } return count;}

2013-09-18 00:37:20 1784

原创 去除字符串的空格

写一个函数消除字符串内的空格。代码要求尽量简洁。void removeSpace(char *str){ char *p = str; char *q = str; do { while (*q == ' ') { q++; } } while (*(p++) = *(q++));}

2013-09-17 00:42:08 614

转载 数字出现次数

给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。要求在O(n)的时间复杂度,O(1)的空间复杂度要求下完成。void fun(int a[], int n){ for (int i = 0; i < n; i++) { a[(a[i]%(n+1))-1] += (n+

2013-09-14 02:25:48 752

原创 判断整数是否是回文数

判断一个整数是否是回文数,不能使用额外空间。bool isPalindrome(int x){ if (x < 0) { return false; } int l = 1; while (x/l > 9) { l *= 10; } int r = 1; while (l > r) { if (((x/l)%10) != ((x/r)%1

2013-09-14 00:05:39 858

原创 二叉树的最低父节点

给定二叉树中的两个节点,要求返回这两个节点的最低父节点。Node* LCA(Node *root, Node *p, Node *q){ if (root == NULL) { return NULL; } if (root == p || root == q) { return root; } Node *left = LCA(root->left,

2013-09-11 00:17:31 745

原创 二叉树重建

输入一棵二叉树的先序遍历和中序遍历序列,输出它的后序遍历序列。#include #include using namespace std;char s[100];void build(int n, char *s1, char *s2, char *s){ if (n <= 0) { return; } int p = strchr(s2, s1[0]) -

2013-09-08 11:59:36 635

转载 小球下落

有一颗二叉树,最大深度为D,且所有叶子的深度都相同。所有节点从上到下从左到右编号为1,2,3,4,5...2^D-1。在节点1处放一个小球,它会往下落。每个内节点上都有一个开关,初始全部关闭,当每次有小球落到一个开关上时,它的状态都会改变。当小球到达一个内节点时,如果该节点上的开关关闭,则往左走,否则往右走,直到走到叶子节点。一些小球从节点1处依次开始下落,最后一个小球将回落到哪里?输入叶子深度D

2013-09-07 23:31:30 929 1

原创 因子和阶乘

输入正整数n(2如5! = 3, 1, 153! = 49, 23, 12, 8, 4, 4, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1#include #include using namespace std;int prime[100];int count = 0;bool isPrime(int a){ for (int i = 2; i

2013-09-05 01:20:53 1305

原创 字符串消除

给定一个字符串,仅由a,b,c 3种小写字母组成。当出现连续两个不同的字母时,你可以用另外一个字母替换它,如 有ab或ba连续出现,你把它们替换为字母c; 有ac或ca连续出现时,你可以把它们替换为字母b; 有bc或cb 连续出现时,你可以把它们替换为字母a。 你可以不断反复按照这个规则进行替换,你的目标是使得最终结果所得到的字符串尽可能短,求最终结果的最短长度。 输入:字符串。长度不超过20

2013-09-01 03:17:30 618

深度探索C++对象模型(清晰版)

向具备多年C++开发经验的行家推荐本书,如果你想深入理解C++底层机制。

2011-04-15

exceptional c++ style中文版 pdf 刘未鹏译

C++大师 Herb Scutter通过40个编程问题,使读者不仅知其然,更要知其所以然,帮助程序设计人员在软件中寻找恰到好处的折中。适合中高级C++程序员阅读。

2010-09-26

PHP技术内幕中文版 pdf--黑皮书系列

全面认识网站编程和PHP。编写WINDOWS和UNIX中可靠而高效的代码。

2010-09-20

设计模式中文版pdf

不错的设计模式教程。讲解清晰,而且很全面。

2010-09-20

数据结构C语言版pdf 清华严蔚敏著

数据结构 c语言版 清华大学 严蔚敏著 大部分高校采用的数据结构教材

2010-09-20

编译原理 陈火旺著

陈火旺主编 编译原理教材 高等学校电子信息类规划教材

2010-09-17

计算机程序的构造和解释原书第2版pdf

每一位严肃的计算机科学家都应该阅读这本书。适合所有希望深刻理解计算机科学的人们。

2010-08-26

C语言深度解剖 解开程序员面试笔试的秘密

一个资深软件工程师的作品,内容讲解较透彻,一定程度弥补了教材中未深入的内容。

2010-08-25

编程珠玑第二版pdf中文

近二十年来众多大师级程序员一致推崇的作品

2010-08-13

UML参考手册pdf中文版

UML参考手册,讲述UML基本概念,为UML的深入理解提供一个起点.

2010-08-13

空空如也

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

TA关注的人

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