02 2017 档案
摘要:二叉查找树(BinarySearch Tree,也叫二叉搜索树,或称二叉排序树BinarySort Tree)或者是一棵空树,或者是具有下列性质的二叉树: (1)若它的左子树不为空,则左子树上所有结点的值均小于它的根结点的值; (2)若它的右子树不为空,则右子树上所有结点的值均大于它的根结点的值;
阅读全文
摘要:【思路】广度优先遍历,队列实现
阅读全文
摘要:题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是
阅读全文
摘要:题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 【思路1】两个栈Stack和Min,Stack为当前栈中元素,Min为与Stack中元素一一对应的当前栈最小值。 【思路2】使用pair<int,int>从而实现只用一个栈来操作
阅读全文
摘要:【思路】本题关键在于 右->左 和 下->上 两个循环体中的判断条件,即判断是否重复打印。
阅读全文
摘要:【思路】要完成旋转共需两步 1.第一次x,y互换 s1[i][j]=s[j][i]1, 2, 3, 45, 6, 7, 89, 10,11,1213,14,15,16变成了1, 5, 9, 132, 6,10,143, 7,11,154, 8,12,16 然后x逆序 s2[i][j]=s1[n-i]
阅读全文
摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 【思路1】递归,左右孩子交换再分别递归左右子树 【思路2】非递归,栈实现
阅读全文
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 【思路】要查找树A中是否存在和树B结构一样的子树,可以分成两步: 1.第一步在树A中找到和B的根节点的值一样的结点R;即当前树A包含子树B,HasSubtree(...) 2.第二步再判断树A中以R
阅读全文
摘要:题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 【思路1】递归 【思路2】非递归,新建一个链表并保存头结点,将原来两个链表进行比较按顺序插入到新链表中,最后将有剩余的链表直接接上。
阅读全文
摘要:题目描述 输入一个链表,反转链表后,输出链表的所有元素。 【思路1】三个指针在链表上同时滑动。 【思路2】头插法
阅读全文
摘要:【思路】利用两个相隔为k-1个结点的指针进行遍历,当后一个指针移到末尾时,前一个指针就是要求的结点。
阅读全文
摘要:题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 【思路1】用2n的空间换取n的时间复杂度,另外开一个数组,先将奇数存入再将偶数存入 【思路2】 * 1.要想保证原有
阅读全文
摘要:【思路1】递归 1 class Solution { 2 public: 3 double Power(double base, int exponent) { 4 if(exponent < 0){ 5 base = 1/base; 6 exponent = -exponent; 7 } 8 if
阅读全文
摘要:【思路】如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。 举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变
阅读全文
摘要:题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 【思路】可归纳得出结论: f(n) = f(n-1) + f(n-2), (n > 2)。 另外: (1)1 * 3方块 覆 盖3*n区域:f(n) = f(n
阅读全文
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 【思路1】每个台阶都有跳与不跳两种可能性(最后一个台阶除外),最后一个台阶必须跳。所以共用2^(n-1)中情况。 【思路2】 关于本题,前提是n个台阶会有一次n阶的跳法。分析如下
阅读全文
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 【思路】与斐波那契数列类似
阅读全文
摘要:1 class Solution { 2 public: 3 int Fibonacci(int n) { 4 int res[40] = {0}; 5 res[0] = 1; 6 res[1] = 1; 7 for(int i = 2;i < n;i ++){ 8 res[i] = ...
阅读全文
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 【思路1】直接调
阅读全文
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 【思路】push:直接压入栈A即可 pop:当栈B为空,则把栈A依次出栈并压入栈B,最后对栈B出栈;否则直接对栈B出栈即可。
阅读全文
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 【思路】递归,先找到根结点,再找到左右子树的前序与中
阅读全文
摘要:题目描述 输入一个链表,从尾到头打印链表每个节点的值。 【思路】用一个vector存储,遍历链表时每次从前面插入
阅读全文
摘要:题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 【思路1】一旦找到空格则将空格后的字符串整体后移两位,然后将%20插入空格处 【思路2】从后往前查找,先计算需要多少空间,然后从后往前
阅读全文
摘要:题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 【思路1】双重遍历,查找,相等则返回。 【思路2】矩阵是有序的,从左下角来看,向上数字递减,向右数字递增,因此从左下角开始
阅读全文
摘要:1.处理java错误"编码 GBK 的不可映射字符" (1)首先记事本打开java源文件 (2)然后另存为,选择ANSI编码 (3)覆盖 (4)再试一下,ok,编译通过。
阅读全文
摘要:1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码: 通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为
阅读全文
摘要:摘自:https://www.douban.com/note/61810488/ 通俗的讲,就是为了降低耦合度。 一个很搞笑的例子: 看看下面的程序: 一个学校里边,有两种人:学生、老师。他们都要吃饭和睡觉。 ------------------------------ public interfa
阅读全文
摘要:先上代码,最上方注释是文件名称(运行时要用到) FTServer.java 1 /* 2 FTServer.java 3 */ 4 5 import java.util.*; 6 import java.io.*; 7 8 public class FTServer { 9 10 public st
阅读全文
摘要:1.writeInt()和readInt() 这两个函数并不是写入一个整数,读取一个整数。它们实际上是写入4个字节,读取4个字节。 writeInt(int i)把i按四个字节,二进制形式写到输出流里, 例如i = 1,则将822938125写到文件输出流。 822938125转换为二进制是 110
阅读全文
摘要:流在Java中是指计算中流动的缓冲区。 从外部设备流向中央处理器的数据流成为“输入流”,反之成为“输出流”。 字符流和字节流的主要区别: 1.字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码
阅读全文
摘要:1 class Solution 2 { 3 public: 4 int romanToInt(string s) 5 { 6 map Map = {{'I', 1}, {'V', 5}, {'X', 10}, {'L', 50}, {'C', 100}, {'D', 500}, {'M', 1000}}; 7 int sum ...
阅读全文
摘要:罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。1、重复数次:一个罗马数字重复几次,就表示这个数的几倍。2、右加左减:2.1 在较大的罗马数字的右边记上较小的罗马数字,表示大数字加小数字。2.2 在较大的罗马数字的左边记上较小的罗马数字,表
阅读全文
摘要:1 class Solution { 2 public: 3 void merge(vector& nums1, int m, vector& nums2, int n) { 4 int i = m - 1; 5 int j = n - 1; 6 int k = m + n - 1; 7 while(i >=...
阅读全文
摘要:【思路】将每一个(0,0)点坐标存入multimap中,再在遍历时将行和列清零,代码如下:
阅读全文
摘要:【思路】 a.因为两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1); b.假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2) c.由a、b假设可以得出总跳法为: f(n) = f(n-1) + f(n-2) d.然后通过实际的情况可以得出
阅读全文
摘要:【思路】该题题干不是很明确,只能根据用例来理解什么样的字符串才是符合题意的,本题关键在于几个标志位的设立,将字符串分为几个部分,代码如下:
阅读全文
摘要:【思路】此题与56题思路相同,只是多了一个函数接口,代码如下:
阅读全文
摘要:【思路】按照题意对初始工资S进行循环,计算缴税后工资,若与T相等则退出循环,输出结果。
阅读全文
摘要:【思路】先对数组排序,找到中间位置的数,若比其小的数的数量和比其大的数的数量相等,则输出该数,否则输出-1。
阅读全文
摘要:1 /** 2 * Definition for an interval. 3 * struct Interval { 4 * int start; 5 * int end; 6 * Interval() : start(0), end(0) {} 7 * Interval(int s, int e) : start(s), end(e...
阅读全文
摘要:本题要实现strstr()函数,可以用两种字符串的模式匹配算法来实现: 第一种算法(简单模式匹配算法): 第二种算法(KMP算法): 由上可知KMP算法的效率比BF算法要高得多。
阅读全文
摘要:在串T中查找是否有与串P相等的子串,则称串T为目标(Target),把P称为模式(Pattern)。 称查找模式在目标中的匹配位置的运算为模式匹配(Pattern matching)。 简单模式匹配算法BF算法 (又称古典的、经典的、朴素的、穷举的)带回溯,速度慢 【算法思想】 将主串T的第pos个
阅读全文
摘要:本题算法很简单,但利用引用保存头结点的方法值得学习,代码如下:
阅读全文
摘要:括号匹配问题,使用栈的特点,匹配则出栈,否则入栈,最后栈为空则全部匹配。代码如下:
阅读全文
摘要:本题可转化成2Sum问题,但不同的是需要注意有可能有多值,需要在添加过程中去掉重复的元素。代码如下:
阅读全文
摘要:本题题意是要自己写一个atoi函数(将字符串转换成整数),思想很简单,关键是有几处细节需要考虑: 1.数字前面有空格,如s=" 123456",空格需舍弃。2.数字前出现了不必要或多于的字符导致数字认证错误,输出0。如s=" b1234",s=" ++1233", s=" +-1121"。3.数字中
阅读全文
摘要:转自:http://www.cnblogs.com/ywl925/p/3507945.html ID Question Diff Freq Data Structure Algorithms
阅读全文
摘要:本题我最开始的思路是,将两数组合并后排序,找出中位数返回。不过很明显是超时的。 下面是我在http://blog.csdn.net/yutianzuijin/article/details/11499917看到的思路: 首先假设数组A和B的元素个数都大于k/2,我们比较A[k/2-1]和B[k/2-
阅读全文