自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指offer--调整数组顺序

题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 维护两个指针,第一个指针初始化为指向数组的第一个数字,它只能往后移;第二个指针初始化为指向数组的最后一个数字,它只能往前移。在两个指针相遇之前,如果第一个指针指向的数字为偶数,并且第二个指针指向的数字为奇数,...

2018-05-22 10:55:03 301

原创 剑指offer---表示数值的字符串

题目 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。代码#include<iostream>#include<cstring>using namespace...

2018-05-17 17:04:16 228

原创 剑指offer-正则表达式匹配

题目 请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配代码#include<iostream>#include<cstri...

2018-05-17 14:01:57 225

原创 剑指offer-打印从1到最大的N位数

题目 输入数值n,按顺序打印从1到最大的n位数,例如输入n=3,则从1,2,3,一直打印到999 思路 若使用循环遍历 1- 999…9 并依次输出,当位数n过大时,无论将其存入int或long或long long都会溢出,故使用字符串来模拟数字加法代码#include<iostream>#include<cstring>using namespace...

2018-05-17 10:17:43 353

原创 (待扩展)读取一个文件统计词频

#include<iostream>#include<fstream>#include<string>#include<map>#include<set>using namespace std;int main(){ map<string,int>word_count; // set<str...

2018-05-14 11:00:40 369

原创 剑指offer-数值的整数次方

题目:实现double Power(double base, int exponent), 求base的exponent次方,不得使用库函数,同时不需要考虑大数问题。#include<iostream>using namespace std;//主要考点在于需要考虑特殊情况double PowerWithUnsignedExponent(double base,unsigned int abs

2018-05-05 11:26:43 256

原创 剑指offer-剪绳子

题目 给你一根长度为n绳子,请把绳子剪成m段(m、n都是整数,n&gt;1并且m≥1)。每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]* k[1]*……*k[m]可能的最大乘积是多少?例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此 时得到最大的乘积18。 思路 动态规划 任何动态规划都是由递归演化出来的,因此先定义递归形式。 设f(n)为长度为n的绳...

2018-04-20 11:11:09 291

原创 剑指offer-机器人的运动范围

题目 地上有一个m行n列的方格。一个机器人从坐标(0, 0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35, 37),因为3+5+3+7=18。但它不能进入方格(35, 38),因为3+5+3+8=19。请问该机器人能够到达多少个格子? 思路 回溯法,走出一步,就看能不能走四周的格子。 代码...

2018-04-16 19:57:14 173

原创 剑指offer-矩阵中的路径

题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。思路 回溯法:用回溯法解决问题就是,在某一步选择了其中一个选项,就进入了下一步,然后又面临新的选项,就这样递归的进行下去,当某条路走不通时,就退回一步。代码boo

2018-04-11 15:55:55 179

原创 剑指offer-查找

题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 思路 重点说一下二分查找法。如果是在排序的数组(或者部分排序的数组)中查找一个数字或者统计某个数字出现的次数,那么都可以尝试二分查找算法。二分查找法的精髓就在于,两个指针,

2018-03-21 11:26:21 198

原创 剑指offer-斐波那契数列

题目 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。 思路 递归不行,会超时,所以就用动态规划思想,利用一个数组来保存中间结果。#include<iostream>using namespace std;int Fibonacci(int n){ long long res[100]; res[0]=0; res[1]=1;

2018-03-21 11:14:27 201

原创 剑指offer-二叉树的下一个节点

题目 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路 根据中序遍历的特点,要找到一个节点的下一个节点无非就是三种情况:1、有右子树,这时只需要把其右孩子作为下一个遍历的(并不是要找的)节点,然后沿着该节点的左子树(如果有的话)出发,直到遇到叶子节点,那么该叶子节点就是其下一个要找的节点;2、没有右子树

2018-03-20 08:54:43 134

原创 剑指offer-重建二叉树

题目 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。 思路 先序遍历的第一个节点即为根结点,而中序遍历中,该节点左边的节点为左子树节点,右边的为右子树的节点,因此根据这些节点区间可以确定出...

2018-03-19 15:54:02 182

原创 剑指offer-从尾到头打印链表

题目 输入一个链表的头节点,从尾到头反过来打印出每个节点的值。 思路 直接用栈。 代码struct ListNode{ int m_nValue; ListNode*m_pNext;};void PrintListReverse(ListNode*pHead){ stack&lt;int&gt; nodeStack; ListNode*pNo...

2018-03-19 10:35:04 161

原创 剑指offer-替换空格

题目 请实现一个函数,把字符串中的每个空格替换成“20%”。思路 从后往前替换,这样可以减少移动次数。 在合并两个数组(包括字符串)时,如果从前往后复制每个数字,则会重复移动某些数字多次,那么就可以考虑从后往前复制。 代码#include&lt;iostream&gt;using namespace std;void ReplaceBlank(char str[]){ ...

2018-03-18 13:48:56 165

原创 剑指offer-二维数组中的查找

题目 在一个二维数组中,每一行从左到右递增。每一列从上到下递增。输入一个二维数组和一个整数,判断数组中是否含有这个整数。 思路 每次和数组的右上角的数字比较,若要找的数比右上角的数字大,则排除右上角数字所在的行,若要找的数比右上角的数字小,则排除右上角数字所在的列。如此就可以一步步缩小范围。 代码实现#include<iostream>using namespace std;bool f

2018-03-18 10:40:24 325

原创 剑指offer-数组中重复的数字

题目一 在一个长度为N的数组里所有数字都在0~n-1的范围内。请找出数组中任意一个重复的数字。例如,输入{2,3,1,0,2,5,3},则输出2或者输出3。思路 数组中所有数字都在0~n-1范围内。如果这个数组中没有重复的数字,那么当数组排序之后,数字i应该出现在下标为i的位置上。由于数组中有重复的数字,所以有些位置可能就有多个数字,而有些位置没有数字。代码#include&lt;...

2018-03-17 17:08:46 203

原创 动态规划之背包问题

问题描述: 问题可以描述为:有 N 件物品和一个容量为 V 的背包。第 i 件物品的体积是 s[i],其价值是 v[i]。求解,在不超过背包容量情况下,将哪些物品装入背包可使价值总和最大。思路: 动态规划。令V[i][j]代表,从前i项物品中取出若干项,装入体积为j的背包中能得到的最大价值。那么很自然的,V[i][j]是下面两个量的最大值: 1.V[i-1][j],也就是,第i项物品不放进背包

2018-01-23 15:37:31 275

原创 区块链实例以太坊原理探讨

摘 要 区块链的本质上是一个去中心化的数据库。它使用密码学的相关方法产生数据块,每一个数据块中包含了一次比特币网络交易的所有信息,因此可以用来验证其信息的有效性和生成下一个区块。 区块链格式首先被应用于比特币。2008年10月,在中本聪的论文中,“区块”和“链”这两个字是被分开使用的,而在被广泛使用时被合称为区块-链,到2016年才被变成一个词:“区块链”。 以太坊(Ethereum)是一个

2018-01-22 15:31:34 3898

原创 排序算法汇总

1.冒泡排序 冒泡排序,相邻的数据进行两两比较,小数放在前面,大数放在后面,这样一趟下来,最小的数就被排在了第一位,第二趟也是如此,如此类推,直到所有的数据排序完成。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我们不会无聊地把他们俩交换;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以

2017-11-02 09:46:34 239

原创 一些基本算法--归并两个数组,二分查找

二分查找#include<iostream>using namespace std;int main(){ int a[10]={2,4,5,8,12,14,18,23,45,67};//只适用于已经排好序的数组的查找 int x=14; int high=9; int low=0; while(high>=low){ if(x>a[(high+low)/2])

2017-11-01 19:49:29 525

原创 矩阵链相乘--动态规划

问题的陈述就省了,网上很多。 想谈一下动态规划和递归。先说递归,递归的核心是,将一个复杂的,规模庞大的问题,一步步的,把问题规模变小,直到问题简单到可以直接解决。 那么动态规划就更近一步,很多问题如果直接递归,那么往往会出现重复计算同一个值很多次的问题,这是一个很大的代价,因此,动态规划将记录子过程的计算结果,再需要的时候直接使用,避免了重复计算的问题,大大减小了代价。下面是矩阵链相乘的代码实现

2017-10-31 22:04:43 389

原创 最长子序列--动态规划

一.题目描述 在字母表上分别给出两个长度为m和n的字符串x和y,确定在x和y中的最长公共子序列。例如,x为“ABCBDAB”,y为“BDCABA”,则两者的最长公共子序列为BDAB。 二.思路分析 假设两个字符串为x1,x2…xi和y1,y2…yj,再令L【i,j】表示这两个的最长公共子序列。思路如下:如果xi==yj(即最后一个字母相等),则,L[i,j]=L【i-1,j-1】+1.如果xi

2017-10-25 09:14:17 545

原创 C++之关联式容器

关联式容器不同于序列容器,在容器中每一个元素都有一个关键词,通过它可以找到相应的元素。 set:一种随机存取的容器,其关键词和数据元素是同一个值,不能够包含重复的元素。 multiset:可以包含重复的元素。 map:包含成对数值,一个是实际数据值,一个是用来寻找数据的关键词。一个关键词只能和一个元素对应。 multimap:一个关键词可以与多个元素对应。 map的插入:#include<

2017-09-06 15:22:05 265

原创 C++STL之序列容器

C++序列容器包含以下6种: 1.vector:一种随机访问的数组类型,它提供了对数组元素的快速,随机访问,以及在序列尾部快速,随机的插入和删除操作,vector的大小可变。 2.deque:一种随机访问的数组类型,提供了在序列两端快速插入和删除操作的功能,大小可变。 3.list:不支持随机访问,插入和删除操作所花时间固定,因为每个元素有前后指针。 4.queue:队列,先进先出。 5.

2017-09-06 15:00:06 285

原创 回文数-lintcode-c++

准备知识 1.sprintf函数 sprintf 最常见的应用之一是把整数打印到字符串中。例如把整数123 打印成一个字符串保存在s 中,sprintf(s, “%d”, 123); //产生”123” 2.c++格式化输出cout<<dec<<a<<endl; //以十进制形式输出整数 cout<<hex<<a<<endl; //以十六进制形式输出整数a cout<<setbase(

2017-09-02 21:52:47 404

原创 字符串置换-lintcode-c++

题目 给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。置换的意思是,通过改变顺序可以使得两个字符串相等。 思路 将两个字符串进行排序,排序过后进行比较。 代码 class Solution { public: /* * @param A: a string * @param B: a string * @retur

2017-09-02 20:53:16 331

原创 单例-lintcode-c++

准备知识: 1.this指针 在建立对象时,系统会为每一个对象分配独立的存储空间,也就是给每个对象中的数据成员都分配有自己独立的存储空间。如果对同一个类定义n个对象,则有n组同样大小的空间以存放对象中的数据成员。但对于成员函数来说,对象中的数据成员。一个函数的代码段在内存中只有一份。也就是说,成员函数的代码段在内存中只有一份。也就是说,同一个类中的不同对象在调用自己的成员函数时,其实它们调用的是

2017-09-02 10:22:24 295

原创 android的ListView使用

列表视图ListView是安卓开发常用的一个控件,可以根据屏幕大小,将具体的内容以列表的形式显示出来,比如电话本,通话记录等。ListView是一种列表视图,用于将适配器所提供的内容显示在一个垂直可滚动的列表中。 ListView的使用需要以下三个元素。ListView:用来展示列表的view适配器:用来把数据映射到ListView上的中介。数据:将被映射的字符串,图片或者基本组件。根据列表

2017-04-22 22:57:55 336

原创 HTML基础知识(四)

注明:本篇内容来源于《HTML+CSS+JavaScript实用详解》作者:叶青 WEB标准大体可以分为3大块技术集——结构,表现和行为。结构:即用于网站数据的分类及整合。包含在结构部分的技术有HTML,XHTML和XML。XML是一种可扩展性的语言,主要用于数据信息的描述,拥有非常好的扩展性。XHTML是在HTML的基础上,以XML的规范进行升级的,作为今后向XML过渡的网页制作语言。表现:即

2017-04-21 22:51:08 256

原创 HTM基础知识(三)

注明:本篇内容来源于《HTML+CSS+JavaScript实用详解》作者:叶青 本篇内容主要是关于表单。表单不是表格,既不用来显示数据,也不是用来布局网页,甚至连表单的外观都不重要。表单的主要作用就是提供一个界面,一个入口,便于浏览者把数据提供给后台程序处理。页面中可以有多个表单,但要保证一个表单只能提交一次数据。表单最常见得应用是用户登录界面,用户注册界面,用户添加留言界面等。表单结构比

2017-04-18 22:58:08 470

原创 HTML基础知识(二)

注明:本篇内容来源于《HTML+CSS+JAVASCRIPT实用详解》作者:叶青 &nbsp 表示空格,一个中文字符占两个英文字符的宽度,所以段首空两格要用四个&nbsp设置字体样式的基本标签是<font></font><plaintext>是单标签,它插入到HTML代码中时,其后面的所有HTML标签全部失效,即浏览器对<plaintext>标签后面的所有HTML标签不做解析,直接在页面上显示

2017-04-18 22:19:09 235

原创 HTML基础知识(一)

注明:本篇内容来源于《HTML+CSS+JAVASCRIPT实用详解》作者:叶青 1.静态网页与动态网页 动态网页指网页的内容可以根据某种条件的改变而自动改变,如论坛就是动态的,当有人发布消息时,网页内容会自动更新。究其实质,动态网页通常情况下都是数据驱动的网页,即网页中的数据变化是通过数据库的操作完成的。 常见的动态网页一般扩展名为 asp,aspx,php,jsp等。其共同点是,网页内的代

2017-04-18 20:35:27 497

原创 The C++ Programming Language 读书笔记(四)

本篇笔记是“表达式与语句”这一章的笔记。一个程序开始于对函数main()的调用,在这样做的时候,有两个参数被送给main(),其中一个描述了命令行参数的个数,称作argc,另外一个描述了命令行参数的数组,称作argv。命令行参数都是字符串,所以argv的类型是char*[argc+1]。人们有时候会想建立一种生存时间不依赖于作用域的对象,那么就用new和delete。new出来的对象只有当del

2017-04-11 11:21:42 440

原创 The C++ Programming Language 读书笔记(三)

本篇笔记是“指针,数组和结构”这一章的。一个字符串包含的字符个数比它看起来的字符数要多一个,它总由一个空字符‘\0’结束。例如sizeof(“both”)的值是5。注意:字符串的类型时“适当个数的const字符的数组”,所以“both”的类型就是const char[5].可以用字符串给一个char*赋值,允许这样做的原因是在以前的c和c++的定义中,字符串的类型就是char*.但是要注意:通过

2017-04-07 13:33:16 430

原创 The C++ Programming Language 读书笔记(二)

这一篇是对“标准库概览”这一章的读书笔记。标准库提供了一些最常见的容器类型比如vector,list。标准容器及其基本操作都被设计成类似的。一般来说许多基本操作适用于各种类型的容器,举例来说,pushback()能用于将一个元素加到一个vector或一个list的最后。任何特定的迭代器也都是某个类型的对象。所有迭代器的共同之处在于他们的语义和有关操作的名字。例如对一个迭代器使用++操作,总产生引

2017-04-06 18:47:41 425

原创 考研总结

去年我决定考研,并于前不久被录取为某985计算机系研究生,应该说考研这一过程还是有很多值得回忆的东西的,也有一些经验值得与后来者们分享一下。大致介绍 我的主要复习资料是新东方的网课,网课包含除专业课以外的三个科目,专业课的复习资料就是王道考研系列。不过网课对我来说意义不大,真正起到作用的还是新东方张宇老师的数学讲义系列以及新东方的英语往年真题,以及肖秀荣的政治系列,以及王道考研。 具体谈每

2017-04-06 18:25:14 450

原创 The C++ Programming Language 读书笔记(一)

最近在读《C++程序设计语言》,都说这本书是学习C++必读的书,而且目前读了几章收获也很大,因此决定每章写一篇读书笔记来记录所学。主要都是一些比较散的点。这一篇是“致读者”这一章的读书笔记。C与C++的异同 1. 在C++里几乎不需要用宏。用const和enum定义明显的常量,用inline避免函数调用的额外开销,用template去刻画一族函数或者类型,用namespace避免名字冲突。

2017-04-06 17:42:12 1433

原创 java框架快速预览

java框架快速预览写在前面:这篇文章不是一篇详细介绍java框架的文章,只是我在看了一些资料之后,对java框架进行一个大致的介绍,看完这篇文章,至少就能够说出java框架到底是个啥1.两大基类 两大基类Collection与Map 在集合框架的类继承体系中,最顶层有两个接口,Collection与Map. 说的通俗一点就是,java框架分两类,一个叫collection,翻译过来就是集合,

2016-08-28 10:34:13 633

原创 Thinkphp的validate属性验证中callback和function的不同之处

看这篇文章之前,建议先看看这篇官方文档自动验证官方文档简单的说吧,callback和function都是自定义一个函数来验证,但是区别在于,callback的函数代码直接放在模型类里面就可以了,而function的情况下,函数代码不能放在模型类里面,要放在www\Application\Home\Common.function.php里面。就这一点区别。贴一个我的实例代码吧,我这个实例是自定义一个函

2016-08-14 18:10:48 2456

空空如也

空空如也

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

TA关注的人

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