程序
fan2012huan
这个作者很懒,什么都没留下…
展开
-
程序1——判断链表是否有环,环的入口点,求环长
理论:(这个理论来自网络)原创 2014-04-23 15:08:45 · 729 阅读 · 0 评论 -
01背包问题
小偷有一个容量为W的背包,有n件物品,第i个物品价值vi,且重wi 目标: 找到xi使得对于所有的xi = {0, 1} sum(wi*xi) <= W, 并且 sum(xi*vi)最大递归代码package org.fan.learn.dp;/** * Created by fan on 2016/9/13. */public class Bag { public static f原创 2016-09-13 18:48:18 · 368 阅读 · 0 评论 -
最长公共子序列
一个给定序列的子序列是在该序列中删去若干元素后得到的序列 给定两个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列 最长公共子序列 X = (A, B, C, B, D, A, B) Y = (B, D, C, A, B, A) (B, C, B, A) (B, D, A, B)完全代码package org.fan.learn.dp;/**原创 2016-09-14 17:36:49 · 418 阅读 · 0 评论 -
leetcode 72. Edit Distance
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.) You have the following 3 operations permitted on a word:原创 2016-09-15 14:53:17 · 565 阅读 · 0 评论 -
LeetCode374. Guess Number Higher or Lower
We are playing the Guess Game. The game is as follows:I pick a number from 1 to n. You have to guess which number I picked. Every time you guess wrong, I’ll tell you whether the number is higher or lo原创 2016-09-15 18:24:58 · 293 阅读 · 0 评论 -
LeetCode278. First Bad Version
You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is developed based on the原创 2016-09-15 18:39:49 · 285 阅读 · 0 评论 -
LeetCode215. Kth Largest Element in an Array
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element. For example, Given [3,2,1,5,6,4] and k = 2, return 5.原创 2016-09-16 12:22:17 · 426 阅读 · 0 评论 -
LeetCode322. Coin Change
You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money c原创 2016-09-13 22:34:34 · 665 阅读 · 0 评论 -
LeetCode34. Search for a Range
Given a sorted array of integers, find the starting and ending position of a given target value. Your algorithm’s runtime complexity must be in the order of O(log n). If the target is not found in th原创 2016-09-15 21:00:16 · 306 阅读 · 0 评论 -
小兵向前冲
小兵向前冲N*M的棋盘上,小兵要从左下角走到右上角,只能向上或者向右走,问有多少种走法? 注意:这里说的N*M是指线段,而不是指几根竖线,几根横线。线段总是比线少1个的。下面的讨论都是基于线段的。 见下图(这个图是4*4的): 上图标注解释如下: 左下角黄色方框:起始位置 右上角黄色方框:目标位置 下边框和右边框黑色的数字0 1 2 3 4表示的是坐标 红色的方框:表示递归时的重复原创 2016-09-12 16:46:21 · 1555 阅读 · 0 评论 -
leetcode198 House Robber
You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses原创 2016-09-12 10:55:49 · 388 阅读 · 0 评论 -
斐波那契数列与n!
实现斐波那契数列 0、1、1、2、3、5、8、13、21、34、…… F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 递归实现:package org.fan.learn.dp;/** * Created by fan on 2016/9/12. */public class Fibo { public static long[] result原创 2016-09-12 14:37:47 · 730 阅读 · 0 评论 -
程序2——链表反转
将一个链表反转原创 2014-10-30 17:23:13 · 555 阅读 · 0 评论 -
程序3——二叉树的前中后层序遍历
定义数据结构typedef struct BiTree { int data; struct BiTree *lchild, *rchild;} BiTree;前序遍历void PreOder(BiTree *T) { if( T == null ) { return; } stack s; BiTree *t = T; while( t != null ||原创 2015-10-12 15:48:53 · 476 阅读 · 0 评论 -
程序4---分解质因数
分解质因数就是将一个合数分解成几个质数(也叫素数)的乘积的形式。 如:6=2*3第一种实现基本思路: 从i=2到sqrt(n),遍历,如果n%i==0,则表示i是n的一个因子,然后再看这个i是不是素数(即质数),如果是,则打印,并使n = n/i。然后i再从2开始。bool isPrime(int m){ int sqr = sqrt(m); for(int i=2; i <= sqr原创 2015-10-15 17:24:49 · 3353 阅读 · 0 评论 -
程序5----判断平衡二叉树
概念所谓平衡二叉树就是, 二叉树的任意结点的左右子树的高度差不超过1. 如下图就是一棵平衡二叉树. 基本思路实现根据定义,可以很容易的想到, 可以求出每个结点的左右子树的高度, 然后比较高度差. 最先需要解决的就是求解二叉树的高度. int treeDepth(tree *T) { if (T == null) return 0;原创 2015-12-14 10:47:45 · 821 阅读 · 0 评论 -
程序7——一棵二叉树是不是另外一棵二叉树的子结构
树的子结构是指:在二叉树A中存在二叉树B,也是就是二叉树B是二叉树A的子结构。如下图所示: 基本思路: 首先在二叉树A中查找与二叉树B的根节点的值相同的节点,然后再一次判断该节点的左右孩子节点是不是跟二叉树B的左右孩子节点相同。代码如下:原创 2015-12-16 10:25:12 · 393 阅读 · 0 评论 -
程序8——二叉树的镜像
所谓二叉树的镜像,就是二叉树照镜子看到的结构,也就是说,左右子树是相反的。如下图所示: 上图中,第二棵二叉树就是第一棵二叉树的镜像。解决思路: 根节点不变,如果同时有左右结点的话,就交换一下位置。这其实还是一个递归的过程。 代码如下:void binaryTreeMirror(tree *T) { if (T == null) { return; }原创 2015-12-16 21:57:34 · 498 阅读 · 0 评论 -
程序9——层序遍历二叉树(从上往下打印二叉树)
从上往下打印二叉树就是层序遍历二叉树。还有一种变形,是逐层打印二叉树,这个的实现,请详见逐层打印二叉树。 如上图所示,则打印结果是:1,2,3,4,5,6,7在这个实现过程中需要用到队列。代码如下:void levelBinaryTree(tree *T) { if(T == null) { return; } queue q; tree *t原创 2015-12-22 21:42:11 · 1158 阅读 · 0 评论 -
程序10——逐层打印二叉树
逐层打印二叉树与从上往下打印二叉树不同。 逐层打印二叉树的结果为: 1 2,3 4,5,6 7void levelPrintTree(tree *T) { if (T == null) { return; } queue q; tree *t = T; q.push(q); q.push(null); while(!q原创 2015-12-22 21:39:10 · 2069 阅读 · 1 评论 -
程序11-先升序后降序返回最大值
一个数列,先升序后降序,返回最大值的下标。package org.fan.learn;/** * Created by fan on 2016/10/10. */public class BinarySearchMeituan { public static int search(int[] arr) { //特殊处理 if (a原创 2016-10-11 00:07:32 · 1893 阅读 · 1 评论