自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 (016)给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树(keep it up)

给定一个有序数组(递增),写程序构建一棵具有最小高度的二叉树。由于数组是递增有序的,每次都在中间创建结点,类似二分查找的方法来间最小树。struct TreeNode{ int data; TreeNode* leftChild; TreeNode* rightChild;};void newNode(TreeNode*& vNode, int vData){ vNode

2014-08-30 01:48:52 1934

原创 (015)实现一个函数检查一棵树是否平衡(keep it up)

实现一个函数检查一棵树是否平衡。对于这个问题而言, 平衡指的是这棵树任意两个叶子结点到根结点的距离之差不大于1。这个题我们可以采用暴力搜索,找到叶子节点到根节点的最小值和最大值,然后他们的差如果大于1就不是平衡树,反之则是平衡树。int MinDepth = std::numeric_limits::max();int MaxDepth = std::numeric_limits::

2014-08-29 02:41:21 1340

原创 014写程序将一个栈按升序排序,对这个栈是如何实现的,你不应该做任何特殊的假设(keep it up)

写程序将一个栈按升序排序。对这个栈是如何实现的,你不应该做任何特殊的假设。程序中能用到的栈操作有:push | pop |isEmpty最容易想到的就是优先队列来做此题,容易实现。另外我们可以再用一个栈来实现栈的升序排列。优先队列://优先队列来实现void sortStack(std::stack& vStk){ std::priority_queue, std::gr

2014-08-28 00:54:45 1684

原创 013使用两个栈实现一个队列(keep it up)

使用两个栈实现一个队列队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO), 用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈, 出队列则将第一个栈的数据依次压入第二个栈,然后出栈.两条规则:1)进队列,则直接压入第一个栈2)出队列,若果第二个栈不为空,直接pop(),如过第二个栈为空,则把第一个栈中的数据全部压入第二个栈(第一个栈此时为空

2014-08-27 00:53:22 1361

原创 012温习汉诺塔 (keep it up)

汉诺塔:有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,应该怎么移动?汉诺塔是个非常经典的问题,讲递归时应该都会讲到它。如果我们没有递归的先验知识, 直接去解答这道题,常常会觉得不知道如何下手。用递归却可以非常优美地解决这个问题。使用递归的一个关键就是,

2014-08-25 00:29:32 1312

原创 011实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值,时间复杂度都为O(1)(keep it up)

实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值。 push,pop和min函数的时间复杂度都为O(1)。看到这个题目最直接的反应是用一个变量来保存当前栈的最小值,让我们来看看这样可行否?如果栈一直push那是没有问题,入栈元素如果比当前最小值还小,那就更新当前最小值。 可是如果pop掉的栈顶元素就是最小值,那么我们如何更新最小值呢?显然不太好办。

2014-08-22 21:22:39 1921

原创 010给定一个循环链表,实现一个算法返回这个环的开始结点 (keep it up)

给定一个循环链表,实现一个算法返回这个环的开始结点。定义:循环链表:链表中一个结点的指针指向先前已经出现的结点,导致链表中出现环。例子:输入:A -> B -> C -> D -> E -> C [结点C在之前已经出现过]输出:结点C可以用一个map 就解决问题了。下面是编程之美上一种奇特的解法:快慢指针解法。代码:

2014-08-22 19:51:09 2080

原创 009实现一个算法来删除单链表中的一个结点,只给出指向那个结点的指针(keep it up)

呵呵,这个题不能直接删除已知的结点,因为是单链表,不知道前驱,只知道后继结点,直接删除会使链表断开。不过我们可以删除已知结点的后继结点,把后继结点的值赋值给已知结点。#include struct Node{ int data; Node* next;};bool removeNode(Node* vNode){ if (vNode == NULL || vNo

2014-08-20 00:35:57 1309

原创 008实现一个算法从一个单链表中返回倒数第n个元素(keep it up)

我们维护两个指针, 它们之间的距离为n。然后,我将这两个指针同步地在这个单链表上移动,保持它们的距离 为n不变。那么,当第二个指针指到空时,第一个指针即为所求。#include struct Node{ int data; Node* next;};void initList(Node* vNode){ for (int i=0; i < 20; ++i) {

2014-08-19 00:45:52 1557

原创 007 字符串(keep it up)

假设你有一个isSubstring函数,可以检测一个字符串是否是另一个字符串的子串。 给出字符串s1和s2,只使用一次isSubstring就能判断s2是否是s1的旋转字符串, 请写出代码。旋转字符串:"waterbottle"是"erbottlewat"的旋转字符串。简答题:#include #include bool isSubstring(const std::stri

2014-08-18 00:56:22 1346

原创 c结构体里的数组与指针

/*访问成员数组名其实得到的是数组的相对地址,而访问成员指针其实是相对地址里的内容*/struct buf_str{int  length;char buf[0];};struct foo{buf_str* pbuf;};void test_funny(){foo f = {0};printf("%x\n"

2014-08-16 11:05:32 1079

原创 006矩阵旋转90度(keep it up)

一张图像表示成NxN的矩阵,图像中每个像素是4个字节,写一个函数把图像旋转90度。 你能原地进行操作吗?(即不开辟额外的存储空间)这个题第一感觉就是一次交换矩阵的元素:比如 3*3 矩阵1 2 34 5 67 8 9先处理第一行,一次逆时针旋转四个元素,下面是二次做的3 2 9          3 6 94 5 6          2 5 81 8 7

2014-08-15 20:59:02 1057

原创 005判断两个字符串是否是变位词 (keep it up)

写一个函数判断两个字符串是否是变位词。变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词。比如说, abbcd和abcdb就是一对变位词这也是简单的题。 我们可以排序然后对比, 也可以直接统计字符出现的个数来判断。这里给出统计字符来判断的代码:bool isAnagram1(const string& vLeft, const string& vRight){

2014-08-14 01:46:24 1608

原创 004字符串去重 (keep it up)

设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。简单题直接上代码:#include #include void remove_duplicate(char vStr[]){ int Len = strlen(vStr); if (!Len) { printf("the stri

2014-08-13 00:30:03 897

原创 003实现字符串反转reverse

这个简单就直接代码了//写代码翻转一个C风格的字符串。(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符)#include #include void swap(char& vLeft, char& vRight){ char Temp = vLeft; vLeft = vRight; vRight = Temp;}char* reverse(ch

2014-08-12 00:28:56 1106

原创 002 bitmap海量数据的快速查找和去重

题目描述给你一个文件,里面包含40亿个整数,写一个算法找出该文件中不包含的一个整数, 假设你有1GB内存可用。如果你只有10MB的内存呢?

2014-08-10 22:51:58 5583 2

原创 001 unique string

以后坚持每个星期都写记到算法题,不论简单还是难,纯熟娱乐!描述:实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)代码:#include #include #include #include bool isUnique(const std::string& vStr){ if (vStr.size()

2014-08-10 10:43:23 981

原创 c++内存泄漏处理(积累)

写c++程序时,经常会出现内存泄漏的问题

2014-08-08 21:36:25 1411 1

spring入门到精通完整版源码

spring入门到精通源代码,非常适合sping入门

2015-07-07

assimp--3.0.1270-source-only.zip

Assimp遵循BSD开源协议,可以拿来使用,修改,并可以用于商业用途,只是所造成的后果要自己承担。Assimp用C++写成,建议使用C++格式调用它的API。除C++以外,它也有C,Python,D接口。它也提供了命令行工具,可以快速执行一些如文件状态,模型转换,材质提取等操作。

2013-08-03

空空如也

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

TA关注的人

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