算法
琅天溪
好编程,编好程,编程好
展开
-
爬楼梯问题
有一个若干阶楼梯台阶,每次爬只能爬1阶或者2阶,问有多少种爬法?首先分析一下简单情况, 每种楼梯对应的爬楼种类 比如说3阶楼梯,有3中爬法分别是:111、12、21。其他类似推理然后大家就会发现规律,如7阶楼梯的爬梯种类=6阶楼梯的爬梯种类+5阶楼梯的爬梯种类。6阶=5阶+4阶等等。假设n阶楼梯的爬法为f(n),那么f(n)=f(n-1)+f(n-2). 于是我们可以推理得出一个公式,原创 2017-07-06 17:31:45 · 877 阅读 · 1 评论 -
上一个排列算法java
给定一个整数数组来表示排列,找出其上一个排列。样例 给出排列[1,3,2,3],其上一个排列是[1,2,3,3]给出排列[1,2,3,4],其上一个排列是[4,3,2,1]注意 排列中可能包含重复的整数思路 将整数数组a遍历,找到第一个a[i]>a[i+1]的位置,然后j=i,在while循环判断是否有a[j+1]>=a[i]的,找到记录j,然后交换a[i],a[j]。最后将i位置之后的数字倒原创 2017-07-07 11:16:26 · 361 阅读 · 0 评论 -
快速排序+划分数组(java实现)
题目:给出一个整数数组 nums 和一个整数 k。划分数组(即移动数组 nums 中的元素),使得:所有小于k的元素移到左边 所有大于等于k的元素移到右边返回数组划分的位置,即返回满足 nums[i] 大于等于 k的数组中第一个位置 i。很容易想到使用快速排序,快速排序的思路就不详细说明了。下面是自己写的快速排序的代码 public static void quicksort(int[] a,原创 2017-07-07 11:55:30 · 593 阅读 · 0 评论