Skip to content

Commit 48fbeb1

Browse files
author
laileon
committed
fibonacci
1 parent 6800f24 commit 48fbeb1

36 files changed

+133
-35
lines changed

src/com/blankj/csutom/AnagramCheck.java renamed to src/com/blankj/custom/AnagramCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33
import java.util.Arrays;
44

src/com/blankj/csutom/BitWiseExample.java renamed to src/com/blankj/custom/BitWiseExample.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33
//https://www.mkyong.com/java/java-convert-ip-address-to-decimal-number/
44
//https://www.mkyong.com/java/java-and-0xff-example/?utm_source=mkyong&utm_medium=author&utm_campaign=related-post&utm_content=0

src/com/blankj/csutom/CircleNode.java renamed to src/com/blankj/custom/CircleNode.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33

4-
import com.blankj.csutom.structure.ListNode;
4+
import com.blankj.custom.structure.ListNode;
55

66
public class CircleNode {
77

src/com/blankj/csutom/ClassLoaderTest.java renamed to src/com/blankj/custom/ClassLoaderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33

44
//https://www.jianshu.com/p/5f468de3b806

src/com/blankj/csutom/DupInArray.java renamed to src/com/blankj/custom/DupInArray.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33
import java.util.ArrayList;
44
import java.util.Arrays;

src/com/blankj/csutom/KMP.java renamed to src/com/blankj/custom/KMP.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33
import java.util.Arrays;
44

src/com/blankj/csutom/Permutation.java renamed to src/com/blankj/custom/Permutation.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33
import java.util.ArrayList;
44
import java.util.Arrays;

src/com/blankj/csutom/QuickSort.java renamed to src/com/blankj/custom/QuickSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33
public class QuickSort {
44
public static void main(String[] args) {

src/com/blankj/csutom/Swap.java renamed to src/com/blankj/custom/Swap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom;
1+
package com.blankj.custom;
22

33
public class Swap {
44
public static void main(String[] args) {

src/com/blankj/csutom/Pipe/PipedStreamTest.java renamed to src/com/blankj/custom/piped/PipedStreamTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Pipe;
1+
package com.blankj.custom.piped;
22

33
import java.io.IOException;
44
import java.io.PipedInputStream;

src/com/blankj/csutom/Pipe/Receiver.java renamed to src/com/blankj/custom/piped/Receiver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Pipe;
1+
package com.blankj.custom.piped;
22

33
import java.io.IOException;
44
import java.io.PipedInputStream;

src/com/blankj/csutom/Pipe/Sender.java renamed to src/com/blankj/custom/piped/Sender.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Pipe;
1+
package com.blankj.custom.piped;
22

33
import java.io.IOException;
44
import java.io.PipedOutputStream;
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package com.blankj.custom.pretest;
2+
3+
import java.math.BigInteger;
4+
//1、1、2、3、5、8、13、21
5+
6+
public class Fibonacci {
7+
// 1. 递归 复杂度为O(2^n),即2的n次方
8+
static BigInteger fib1(int n) {
9+
if (n == 1 || n == 2) {
10+
return BigInteger.valueOf(1);
11+
} else {
12+
return fib1(n - 1).add(fib1(n - 2));
13+
}
14+
}
15+
16+
// 2. 循环 O(n)
17+
static BigInteger fib2(int n) {
18+
BigInteger a = BigInteger.valueOf(0);
19+
BigInteger b = BigInteger.valueOf(1);
20+
for (int j = 2; j <= n; j++) {
21+
BigInteger tmp = a;//将第一个值p赋给tmp
22+
a = b; //将第二个值q赋给p,以后每一次赋值都将得到的最新的F(n)赋给p,从后面语句可//以看出,q储存的为最新的F(n)
23+
b = tmp.add(b);
24+
}
25+
return b;
26+
}
27+
28+
// 3. matrix log(n)
29+
/**
30+
* 求斐波那契数列<br/>
31+
* <pre>
32+
* [F(n+1) F(n)] [1 1 ]^n (n次方,可以使用归纳法证明)<br/>
33+
* | | =| | <br/>
34+
* [F(n) F(n-1)] [1 0 ] <br/>
35+
* </pre>
36+
*
37+
* @author bing
38+
*/
39+
40+
41+
// 关联矩阵
42+
private static final BigInteger[][] UNIT = {{BigInteger.valueOf(1), BigInteger.valueOf(1)}, {BigInteger.valueOf(1), BigInteger.valueOf(0)}};
43+
// 全0矩阵
44+
private static final BigInteger[][] ZERO = {{BigInteger.valueOf(0), BigInteger.valueOf(0)}, {BigInteger.valueOf(0), BigInteger.valueOf(0)}};
45+
46+
/**
47+
* 求斐波那契数列
48+
*
49+
* @param n
50+
* @return
51+
*/
52+
public static BigInteger[][] fib3(int n) {
53+
if (n == 0) {
54+
return ZERO;
55+
}
56+
if (n == 1) {
57+
return UNIT;
58+
}
59+
// n是奇数
60+
if ((n & 1) == 0) {
61+
BigInteger[][] matrix = fib3(n >> 1);
62+
return matrixMultiply(matrix, matrix);
63+
}
64+
// n是偶数
65+
BigInteger[][] matrix = fib3((n - 1) >> 1);
66+
return matrixMultiply(matrixMultiply(matrix, matrix), UNIT);
67+
}
68+
69+
/**
70+
* 矩阵相乘
71+
*
72+
* @param m r1*c1
73+
* @param n c1*c2
74+
* @return 新矩阵, r1*c2
75+
*/
76+
public static BigInteger[][] matrixMultiply(BigInteger[][] m, BigInteger[][] n) {
77+
int rows = m.length;
78+
int cols = n[0].length;
79+
BigInteger[][] r = new BigInteger[rows][cols];
80+
for (int i = 0; i < rows; i++) {
81+
for (int j = 0; j < cols; j++) {
82+
r[i][j] = BigInteger.valueOf(0);
83+
for (int k = 0; k < m[i].length; k++) {
84+
r[i][j] = r[i][j].add(m[i][k].multiply(n[k][j]));
85+
}
86+
}
87+
}
88+
return r;
89+
}
90+
91+
public static void main(String[] args) {
92+
int n = 81;
93+
// System.out.println("Fibonacci of " + n +
94+
// "th term" + " " + "is" + " " + fib2(n));
95+
BigInteger[][] m = fib3(n);
96+
System.out.println(m[0][1]);
97+
}
98+
}

src/com/blankj/csutom/Proxy/dynamicProxy/Client.java renamed to src/com/blankj/custom/proxys/dynamicProxy/Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.dynamicProxy;
1+
package com.blankj.custom.proxys.dynamicProxy;
22

33
import java.lang.reflect.InvocationHandler;
44

src/com/blankj/csutom/Proxy/dynamicProxy/DynamicProxy.java renamed to src/com/blankj/custom/proxys/dynamicProxy/DynamicProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.dynamicProxy;
1+
package com.blankj.custom.proxys.dynamicProxy;
22

33
import java.lang.reflect.InvocationHandler;
44
import java.lang.reflect.Proxy;

src/com/blankj/csutom/Proxy/dynamicProxy/ISubject.java renamed to src/com/blankj/custom/proxys/dynamicProxy/ISubject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.dynamicProxy;
1+
package com.blankj.custom.proxys.dynamicProxy;
22

33
//https://www.jianshu.com/p/78fdd12c2c71
44
public interface ISubject {

src/com/blankj/csutom/Proxy/dynamicProxy/MyInvocationHandler.java renamed to src/com/blankj/custom/proxys/dynamicProxy/MyInvocationHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.dynamicProxy;
1+
package com.blankj.custom.proxys.dynamicProxy;
22

33
import java.lang.reflect.InvocationHandler;
44
import java.lang.reflect.Method;

src/com/blankj/csutom/Proxy/dynamicProxy/RealSubject.java renamed to src/com/blankj/custom/proxys/dynamicProxy/RealSubject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.dynamicProxy;
1+
package com.blankj.custom.proxys.dynamicProxy;
22

33
public class RealSubject implements ISubject {
44
@Override

src/com/blankj/csutom/Proxy/staticProxy/Client.java renamed to src/com/blankj/custom/proxys/staticProxy/Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.staticProxy;
1+
package com.blankj.custom.proxys.staticProxy;
22

33
public class Client {
44
public static void main(String[] args) {

src/com/blankj/csutom/Proxy/staticProxy/ISubject.java renamed to src/com/blankj/custom/proxys/staticProxy/ISubject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.staticProxy;
1+
package com.blankj.custom.proxys.staticProxy;
22

33
//https://www.jianshu.com/p/78fdd12c2c71
44
public interface ISubject {

src/com/blankj/csutom/Proxy/staticProxy/Proxy.java renamed to src/com/blankj/custom/proxys/staticProxy/Proxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.staticProxy;
1+
package com.blankj.custom.proxys.staticProxy;
22

33
public class Proxy implements ISubject {
44
private ISubject subject;

src/com/blankj/csutom/Proxy/staticProxy/RealSubject.java renamed to src/com/blankj/custom/proxys/staticProxy/RealSubject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.Proxy.staticProxy;
1+
package com.blankj.custom.proxys.staticProxy;
22

33
public class RealSubject implements ISubject{
44
@Override

src/com/blankj/csutom/sort/BubbleSort.java renamed to src/com/blankj/custom/sort/BubbleSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
/**
44
* Created by laileon on 2017/7/20.

src/com/blankj/csutom/sort/InsertionSort.java renamed to src/com/blankj/custom/sort/InsertionSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
/**
44
* Created by laileon on 2017/7/20.

src/com/blankj/csutom/sort/MergeSort.java renamed to src/com/blankj/custom/sort/MergeSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
//时间复杂度为O(N log N ), 使用了等长的辅助数组,空间复杂度为O(N)
44
//将两个有序对数组归并成一个更大的有序数组。通常做法为递归排序,并将两个不同的有序数组归并到第三个数组中。

src/com/blankj/csutom/sort/QuickSort.java renamed to src/com/blankj/custom/sort/QuickSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
public class QuickSort {
44
public static void main(String[] args) {
File renamed without changes.

src/com/blankj/csutom/sort/SelectionSort.java renamed to src/com/blankj/custom/sort/SelectionSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
/**
44
* Created by laileon on 2017/7/20.

src/com/blankj/csutom/sort/ShellSort.java renamed to src/com/blankj/custom/sort/ShellSort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
/**
44
* Created by laileon on 2017/7/21.

src/com/blankj/csutom/sort/Test.java renamed to src/com/blankj/custom/sort/Test.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
public class Test {
44
public static void main(String[] args) {

src/com/blankj/csutom/sort/Utils.java renamed to src/com/blankj/custom/sort/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.sort;
1+
package com.blankj.custom.sort;
22

33
/**
44
* Created by laileon on 2017/7/20.

src/com/blankj/csutom/structure/DListNode.java renamed to src/com/blankj/custom/structure/DListNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.structure;
1+
package com.blankj.custom.structure;
22

33
/**
44
* Created by laileon on 2017/7/20.

src/com/blankj/csutom/structure/Graph.java renamed to src/com/blankj/custom/structure/Graph.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.structure;
1+
package com.blankj.custom.structure;
22

33
import java.util.ArrayList;
44

src/com/blankj/csutom/structure/ListNode.java renamed to src/com/blankj/custom/structure/ListNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.structure;
1+
package com.blankj.custom.structure;
22

33
/**
44
* Created by laileon on 2017/7/19.

src/com/blankj/csutom/structure/QueueInJava.java renamed to src/com/blankj/custom/structure/QueueInJava.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.structure;
1+
package com.blankj.custom.structure;
22

33
import java.util.*;
44

src/com/blankj/csutom/structure/TreeNode.java renamed to src/com/blankj/custom/structure/TreeNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.blankj.csutom.structure;
1+
package com.blankj.custom.structure;
22

33
/**
44
* Created by laileon on 2017/7/20.

0 commit comments

Comments
 (0)