上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页
摘要: 题目:输入一个整数数组,实现一个函数来调整该数组中的数字的顺序,使得所有的奇数位于数组的前半部门,所有的偶数位于数组的后半部门。这一题一看其实是很简单的,当然在不考虑效率的情况可以这样考虑我们将数组从前开始索引只要发现偶数这将偶数取出来并且将偶数后面的元素全部前移一个然后将偶数插入到最后,这样扫描一... 阅读全文
posted @ 2015-07-23 20:37 vpoet 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。链表节点与函数的定义如下。通常我们删除某个节点都是从头开始遍历到需要删除节点的前一个节点。然后使得该节点的next指向删除节点的next即可,这样看来删除一个节点的复杂度为O(n)然而我们其实遍历的目的只是想获取想要删除... 阅读全文
posted @ 2015-07-23 20:16 vpoet 阅读(504) 评论(2) 推荐(1) 编辑
摘要: 题目:输入数字n,按照打印出从1最大的n位10进制数。比如3,则打印出1、2、3一直到最大的3位数即9991.你觉得如果面试会有这么简单的题,那只能说明你---太天真。2.n=3尚可,如果n=30 300呢有这样的内置数据类型能包括这么大的数吗?3.说白了,这道题就是考察用字符串模拟大数。算法思想如... 阅读全文
posted @ 2015-07-23 19:52 vpoet 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 题目:实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数的问题.这道题看似很简单:然而需要考虑的方面到不少:1.如何处理指数为负数,将负数当成正数处理 对结果求倒2.当指数为负数的时候并且底数为0... 阅读全文
posted @ 2015-07-23 16:19 vpoet 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 题目:请实现一个函数,输入一个函数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2.这道题最典型的方法就是用移位统计,就比如统计9的二进制1个数:1.9的二进制位1001,9-1的二进制位1000.2.两者做与运算,结果为1表示最后一位为1,否... 阅读全文
posted @ 2015-07-23 15:42 vpoet 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 使用过STL的人都应该知道关于迭代器失效的原理,这里以后vector迭代器失效为例:第一种:当插入一个元素到vector中,如果插入后容器已满,那么容器将新开辟一块内存区域,然后将原内存中的数据拷贝到新的内存区域,同时释放旧的内存。这样之前指向旧内存的迭代器就会指向不确定内存,这块内存要么释放,要么... 阅读全文
posted @ 2015-07-22 16:36 vpoet 阅读(988) 评论(0) 推荐(0) 编辑
摘要: STL源码剖析读书笔记之vector1.vector概述vector是一种序列式容器,我的理解是vector就像数组。但是数组有一个很大的问题就是当我们分配一个一定大小的数组的时候,起初也许我们不会觉得数组容量太小不合需求,但是随着数据量的增加,数组尺寸大小不再满足需求,此时我们需要手动的去扩展其大... 阅读全文
posted @ 2015-07-22 13:48 vpoet 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 我们有下面的测试代码: 1 #include 2 using namespace std; 3 4 5 int main() 6 { 7 int num1=7; 8 cout>2: ">2)>1: ">1)>2: ">2)<<endl;14 return 0;15 }对... 阅读全文
posted @ 2015-07-22 11:42 vpoet 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 哈希表也叫做散列表。在各种语言中都有hashmap的实现。其最突出的优点是查找和插入以及删除具有常数的时间复杂度我们可以把哈希表理解为数组+链表数组具有常数复杂度的查找,为什么呢,因为数组是在内存中连续存放,当我们索引某个位置的元素时候根据索引值自动计算距离数组首元素起始位置的内存间隔。然而对于中间... 阅读全文
posted @ 2015-07-21 22:15 vpoet 阅读(424) 评论(0) 推荐(0) 编辑
摘要: 题目一:写一个函数,输入n,求斐波拉契数列的第n项。斐波拉契数列的定义如下:1 { 0 n=0; 2 f(n)={ 1 n=1;3 { f(n-1)+f(n-2) ... 阅读全文
posted @ 2015-07-21 19:42 vpoet 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题目:把一个数组最开始的若干个元素搬到数据的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。这道题可以使用类似于二分查找的思想,算法思路如下:1.假设有一个旋转数组A,我们设两... 阅读全文
posted @ 2015-07-21 19:37 vpoet 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 二分查找算法是一种快速的查找算法。当我们再一个数组中查找是否存在某个数时,通常是直接遍历这个数组直到找到这个数,时间复杂度为O(n)试想如果数据量很大,上亿呢,怎么办,这里我们可以用一种简单快速的的查找算法--二分查找算法也叫做折半查找算法。二分查找算法的算法思维:1.首先查找数组必须是有序的(假设... 阅读全文
posted @ 2015-07-21 17:46 vpoet 阅读(10458) 评论(0) 推荐(0) 编辑
摘要: 题目.用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead分别完成在对尾插入节点和在队头删除节点。该队列类模板如下: 1 template 2 class CQueue 3 { 4 public: 5 void appendTail(const... 阅读全文
posted @ 2015-07-21 16:23 vpoet 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 题目:输入某二叉树的前序遍历和中序遍历结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如图所示的二叉树并输出它的头结点。二叉树的定义如下:1 struct Bi... 阅读全文
posted @ 2015-07-21 13:52 vpoet 阅读(200) 评论(0) 推荐(1) 编辑
摘要: 题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。刚看到这道题的小伙伴可能就会想,这还不简单,将链表反转输出。但是这种情况破坏了链表的结构。如果面试官要求不破坏链表结构呢,这时候我们就想到了一种数据结构---栈 当我们从前往后遍历链表逐个压栈 然后遍历结束后再逐个出栈。首先我们先来用第一... 阅读全文
posted @ 2015-07-21 11:43 vpoet 阅读(188) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 18 下一页