- 博客(23)
- 资源 (7)
- 收藏
- 关注
原创 《剑指offer》-最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。解法:1.进行数组的分区,返回分区index值 2.根据index和k-1的大小来判断是否已经获取了足够的书,否则递归调用即可 3.分区函数的编写,快速排序的思想class Solution {
2016-05-31 21:25:47 324
转载 C++ 重载(overload)、重写(overrride)、重定义(redefine)总结
先来看几个概念:重载(overload),重写(override,也称覆盖), 重定义(redefine,也称隐藏)(PS:第三个我不确定在英文中是否应该称为redefine,如有问题,留言告知,谢谢)一、重载(overload)指函数名相同,但是它的参数表列个数或顺序,类型不同。但是不能靠返回类型来判断。(1)相同的范围(在同一个作用域中) ;(2)函
2016-05-29 10:32:33 1031
原创 《剑指offer》-数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解法:先排序,然后再从头开始统计个数。注意统计的时候从1开始。class Solution {public: int MoreThanHalfNum
2016-05-23 19:54:02 319
原创 《剑指offer》-字符串的排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解法:可以使用STL里面的全排序的函数,next_permutatio()。
2016-05-21 20:42:52 328
转载 虚拟机下centos6.5无法上网
前言:由于Linux下很多软件安装必须网络环境下进行,因此,对于如何在VMware下进行上网,我折腾了至少三天,今天上午,也即五一劳动节,终于搜到一遍技术文章,经过自己实践,VMware下Linux的可以上网啦。VMware虚拟机的CentOS无法上网的解决方法本人在虚拟机中安装了CentOS,按照安装Windows XP的经验,想要CentOS可以上网,发现居然上不了。找百度一些
2016-05-19 21:20:46 2843
原创 《剑指offer》-二叉搜索树与双向链表
题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解法:主要应用到二叉树的中序遍历。将左子树遍历进行不断压栈,然后再出栈。用两个指针,current指向当前的树的节点,pre指向前一个节点,然后进行改指针引用,把压栈的节点进行出栈,并且在最后进行右子树是否存在的判断,这样才能够中序遍历。
2016-05-19 19:55:16 304
转载 理解一般指针和指向指针的指针
在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例:1. 指向整型指针先看如下示例:View Code运行结果如下:我们先看下内存分配图:由上图可以清楚的知道,输出整形变量a的值是5,指针变量p的值是001BFD18,而*号的作用是取值,*p即取地址001BFD18中存放的值,即5。2. 指向字符型指针先
2016-05-19 19:03:00 266
转载 C++三大函数(The Big Three)
C++三大函数:析构函数复制构造函数operator=析构函数函数模样:~S()当一个对象超出作用域或执行delete的时候,析构函数就被调用。复制构造函数函数模样:S(const S& s)以下情况,复制构造函数均会被调用:声明的同时初始化:S s1 = s2; //注意此时虽然出现=,但是不是调用operator=哦S s1(s2);
2016-05-19 15:00:50 1465
转载 树、森林和二叉树的转换
树转换为二叉树(1)加线。在所有兄弟结点之间加一条连线。(2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。(3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子) 森林转换为
2016-05-18 10:29:45 366
原创 《剑指offer》-二叉树中和为某一值的路径
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。解法:利用递归的出栈顺序,来进行返回比较。详细看程序#include #include #include #include #include #include using namespace std;s
2016-05-17 14:55:16 285
转载 linux中fork()函数详解(原创!!实例讲解) (转载)
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来
2016-05-16 10:22:37 269
原创 《剑指offer》-二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解法:1.二叉搜索树,左子树不能大于根节点的值,右子树不能小于根节点的值 2.后续遍历,根节点在最后一位。所以先找出根节点,然后左右子树的分界点,最后再用递归即可解决问题。class Solution {
2016-05-15 10:04:11 390
原创 《剑指offer》-从上往下打印二叉树
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。解法:将每一层的根节点存储到一个向量里面,从上到下,从左到右,判断是否存完比较有技巧,用到了一个变量num,来记录已经完成存储的个数,同时也用来终止存储的过程。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode
2016-05-13 13:28:47 338
原创 《剑指offer》-栈的压入、弹出序列
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。解法:将出栈的队列进行反向压栈,然后判断将入栈元素入栈,与反向栈中的top元素相比较,如果相等的话进
2016-05-12 09:02:50 365
原创 《剑指offer》-包含min函数的栈
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。解法:借助一个辅助栈,入栈的同时,判断入栈值是否大于辅助栈的头指针的值,大于则入栈,小于则入自己的头指针值。始终保持头指正值是入栈的最小值。#include class Solution {public: stack m_data, m_min; void push
2016-05-11 20:40:24 377
原创 《剑指offer》-顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解法:把左上角第一个点看成(0,0)位置,右下角点看成最终的点(EndRow,EndCol),其中用start来进行
2016-05-11 20:35:11 330
原创 《剑指offer》-二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7
2016-05-10 19:22:49 311
原创 《剑指offer》-树的子结构
题目描述输入两颗二叉树A,B,判断B是不是A的子结构。解法:就是先找到相等的根节点,然后再子树遍历。所以要用到两个递归函数,根节点的递归函数,子树的递归函数。注意子树的递归函数中应该先判断子树是否遍历完为空,则返回true,每次遍历前都应该判断根节点是否存在。这样就完美了。/*struct TreeNode { int val; struct Tr
2016-05-09 21:57:39 799
原创 《剑指offer》-合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*///第一种想法,全部取出来,然后排序放回,不可行class
2016-05-09 10:08:44 486
原创 《剑指offer》-反转链表
题目描述输入一个链表,反转链表后,输出链表的所有元素。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(Li
2016-05-06 22:01:44 333
原创 《剑指offer》-数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。class Solution {public: double Power(double base, int exponent) { bool flag = true; if(exponent == 0) retu
2016-05-04 20:34:02 350
原创 《剑指offer》-二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:相与到0为止,就可以。相与就相当于-1操作class Solution {public: int NumberOf1(int n) { if(!n) return 0; int count = 0; //while(n) {
2016-05-04 20:04:00 319
原创 《剑指offer》-矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?class Solution {public: int rectCover(int number) { if(number < 2) return 1; return rectCover(number-1)
2016-05-04 19:33:58 252 1
官方PSNR和SSIM---matlab实现
2015-12-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人