![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法训练
文章平均质量分 70
Amanda__97
这个作者很懒,什么都没留下…
展开
-
算法训练(一)青蛙跳
假设青蛙一次只能跳1级或者2级,一共n级台阶,请问青蛙有多少种跳法?思路:1级:1种2级:2种3级:第一步跳1级,或者第一步跳2级 f(2)+f(1)4级:第一步跳1级,或者第一步跳2级 f(3)+f(2)以此类推,n级 f(n-1)+f(n-2)方法一:递归public static int getNum(int n) { int num = 0; if(n<1) { ...原创 2018-04-11 23:24:49 · 1222 阅读 · 0 评论 -
算法训练(二)数组反转
题目一:把带有空格的一句话例如:I am a boy 变成 boy a am I 单词顺序全部反转,但是单词内部的字母顺序以及空格相对位置不能变。思路:一次就转换成功看起来有些困难,于是这里分两步进行。I am a boy --> yob a ma I -->boy a am I首先将数组全部反转,但发现这时候单词中的字母顺序也改变了,因此还需要进行一次单词内部的反转。从这里可以看出,...原创 2018-04-20 22:00:51 · 459 阅读 · 0 评论 -
算法训练(三)把奇数放到偶数前面
题目:将数组中所有的奇数放到偶数前面,并且不改变奇数和偶数的相对位置例如 1234567变为1357246思路:这里如果考虑遍历一遍数组,将会使时间复杂度为O(n)。于是采用双指针的方法(常用)。首尾分别一个指针。从前往后看,每遇到奇数,就将首指针向后移。(因为题目奇数就应该在前面)从后往前看,遇到偶数,就将指针往前移。(题目要求偶数在后面)否则,交换两个指针处的值。注意这里循环条件是两个指针没有...原创 2018-04-20 22:33:45 · 1163 阅读 · 0 评论 -
算法训练(四)含环链表的系列操作
题目一:若有一个链表,如何判断链表是否存在环?思路:如何判断有环,这里思考之后发现,判断是否有环可以参考两个人走路,一前一后,一快一慢。如果有环,两人必定相遇。因此这次也采用这种思路首先写一个链表类private class Node { private int data; private Node next; public Node(int data) { ...原创 2018-04-20 22:48:18 · 157 阅读 · 0 评论