
算法
海的来信
这个作者很懒,什么都没留下…
展开
-
排列组合 从n个自然数中取出r个数的组合
这种题目一般有两种方法,比较直接的方法就是使用循坏,但是对于这种方法只有r小于等于4时才是可行的,这个时候复杂度是(O(n^r)),可知,这种方法的时间复杂度很高,而且这种循环机制严重依赖r,通过r来控制循环层数,因此这种方法不具有普遍性。最常用的方法就是使用递归。在循环算法设计中,每个组合中的数据都是从大到小排列是必须的,因为递归算法设计时要找出大规模问题与小规模问题之间的关系。当 n原创 2014-03-12 20:19:12 · 12023 阅读 · 0 评论 -
leetcode Length of Last Word java实现
Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string.If the last word does not exist, return 0.Note: A word is defin原创 2014-03-06 14:26:49 · 2184 阅读 · 1 评论 -
斐波那契数列的几种不同解法
斐波那契数列传说起源于一对非常会生的兔子。定义:这个数列有很多奇妙的性质(比如 F(n+1)/F(n) 的极限是黄金分割率),用计算机有效地求解这个问题的解是一个比较有意思的问题,本文一共提供了4种解法。解法一:递归这是最最最直观的想法,是每个人都能编写的简单程序,优点是非常明显的:简单易懂,清晰明了。但是缺点就是效率非常低,时间复杂度是指数级的。举个例转载 2014-03-12 20:41:18 · 916 阅读 · 0 评论 -
选择排序、树形排序、堆排序的java代码实现
package com.sort; /** * 选择排序: * 简单选择排序,树形选择排序与堆排序 * */ public class SelecSortDemo { /** * -------------------------------------------- * 简单选择排序 * 原理:假设列表转载 2014-03-12 20:46:20 · 4325 阅读 · 0 评论 -
编程求n<=100时,求n!的准确值,改进的递归运算
问题分析:问题要求对输入的正整数n,计算n!的准确值,而n!的增长速度高于指数增长的速度,所以这是一个高精度计算问题。请看下面两个例子:9!=362 880 100!= 93 326 215 443 944 152 681 699 238 856 266 700 490 715 968 264 381 621 468 592 963 895 217 599 9原创 2014-03-14 10:50:17 · 2742 阅读 · 0 评论 -
寻找第K小的数
前言寻找第K小的数属于顺序统计学范畴,通常我们可以直接在O(NlgN)的时间内找到第K小的数,使用归并排序或者堆排序对输入数据按从小到大进行排序,然后选择第K个即可。然而,我们还有更好的算法。一、热身—最大值和最小值首先来看一个简单的问题,在一个有n个元素的集合中,需要多少次比较才能确定其最小值呢?这可以很容易退出需要n-1次这个上界。伪代码如下所示:MIN转载 2014-03-19 21:34:43 · 5310 阅读 · 0 评论 -
二维数组中查找指定数是否存在?
剑指offer里面的题目。题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的二维数组和一个整数,判断数组中是否有该整数存在。对于下面这样的二维数组: 1 2原创 2014-03-20 17:07:55 · 3019 阅读 · 0 评论