leetcode509. 斐波那契数(矩阵快速幂)

斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:

F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
给定 N,计算 F(N)。

示例 1:

输入:2
输出:1
解释:F(2) = F(1) + F(0) = 1 + 0 = 1.
示例 2:

输入:3
输出:2
解释:F(3) = F(2) + F(1) = 1 + 1 = 2.
示例 3:

输入:4
输出:3
解释:F(4) = F(3) + F(2) = 2 + 1 = 3.

矩阵快速幂

class Solution {int fib(int N) {if (N <= 1) {return N;}int[][] A = new int[][]{{1, 1}, {1, 0}};matrixPower(A, N-1);return A[0][0];}void matrixPower(int[][] A, int N) {if (N <= 1) {return;}matrixPower(A, N/2);multiply(A, A);int[][] B = new int[][]{{1, 1}, {1, 0}};if (N%2 != 0) {multiply(A, B);}}void multiply(int[][] A, int[][] B) {int x = A[0][0] * B[0][0] + A[0][1] * B[1][0];int y = A[0][0] * B[0][1] + A[0][1] * B[1][1];int z = A[1][0] * B[0][0] + A[1][1] * B[1][0];int w = A[1][0] * B[0][1] + A[1][1] * B[1][1];A[0][0] = x;A[0][1] = y;A[1][0] = z;A[1][1] = w;}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444105.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

insert函数的修改,

我们来看一下图片当中的第2个圆圈&#xff0c;为什么使用size来相加呢&#xff1f;我们知道一开始我们定义的初始空间为init_size;我们想一下啊&#xff0c;如果是第1次进行空间的增加&#xff0c;那么我们使用InIt来进行相加是可以的&#xff0c;但是当第2次想加我们再想开辟空…

leetcode520. py解字符串真是太残暴了

给定一个单词&#xff0c;你需要判断单词的大写使用是否正确。 我们定义&#xff0c;在以下情况时&#xff0c;单词的大写用法是正确的&#xff1a; 全部字母都是大写&#xff0c;比如"USA"。 单词中所有字母都不是大写&#xff0c;比如"leetcode"。 如果…

【数据结构】线性表大咖

循环链表的介绍 概念&#xff1a;链表的最后一个节点的指针&#xff0c;由原来的 空指针变成指向第1个节点的链表。 类比&#xff1a;我们进行串珠子的操作&#xff0c;将首尾通过线进行连接&#xff0c;同样我们的链表就是通过指针指向的方式进行连接&#xff0c;使其成为一…

leetcode551. 学生出勤记录 I

给定一个字符串来代表一个学生的出勤记录&#xff0c;这个记录仅包含以下三个字符&#xff1a; A : Absent&#xff0c;缺勤 L : Late&#xff0c;迟到 P : Present&#xff0c;到场 如果一个学生的出勤记录中不超过一个A(缺勤)并且不超过两个连续的L(迟到),那么这个学生会被奖…

一元多项式的表示和相加【数据结构】

一元多项式的表示和相加 运算只是一个定义&#xff0c;一切的一切&#xff0c;到最后都必须归咎于存储结构当中&#xff0c;实现物理存储&#xff0c;一元多项式包括数据对象数据关系以及数据之间的各种操作&#xff0c; 一元多项式的实现&#xff1a;用带表头结点的有序链表…

线性结构基本概念【数据结构】F

线性表的概念&#xff1a;线性表是一种最简单的线性结构&#xff0c;线性结构是单个数据元素的有序结合 线性结构的基本特征为&#xff1a; 第一&#xff0c;集合中必存在唯一的一个第1元素&#xff0c; 第二&#xff0c;集合中必存在唯一的一个最后元素&#xff0c; 第三&am…

leetcode589. N叉树的前序遍历

给定一个 N 叉树&#xff0c;返回其节点值的前序遍历。 例如&#xff0c;给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]。 思路&#xff1a;先放入自己&#xff0c;再依次遍历孩子。 /* // Definition for a Node. class Node {public int val;public List<Node> c…

ORA-00001 违反唯一约束条件

程序跑出下面的异常&#xff1a;com.ibm.websphere.ce.cm.DuplicateKeyException: ORA-00001: 违反唯一约束条件 (EOMS3.SYS_C0024492)&#xff0c;参考下面的文章了解到我的程序可能是序列的问题。&#xff08;果然是序列产生的最小值设置的太小&#xff0c;将序列值设置大之后…

顺序结构实现【数据结构】

虽然在数据结构当中是先出现的线性表&#xff0c;然后出现的是数组 一&#xff1a;线性表的顺序存储结构 顺序映象&#xff1a;用一组地址连续的存储单元依次存放线性表当中的数据元素 线性表的起始地址&#xff1a;线性存储第一个数据元素的地址&#xff0c;我们也称作是基地址…

leetcode590. N叉树的后序遍历

给定一个 N 叉树&#xff0c;返回其节点值的后序遍历。 例如&#xff0c;给定一个 3叉树 : 思路&#xff1a;先遍历所有孩子&#xff0c;再放入自己。 /* // Definition for a Node. class Node {public int val;public List<Node> children;public Node() {}public No…

链表的形式【F】

数据元素之间的关系在计算机中有两种表示方法: 顺序映象, 非顺序映象. 对应两种存储结构: 顺序存储结构, 链式存储结构 线性结构就是一种逻辑关系&#xff0c;方便我们对数据进行研究但是不考虑真实的存储结构 数据是什么&#xff1f; 数据是能够反应一定内容的一组数据类型的…

leetcode892. 三维形体的表面积

在 N * N 的网格上&#xff0c;我们放置一些 1 * 1 * 1 的立方体。 每个值 v grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。 请你返回最终形体的表面积。 示例 1&#xff1a; 输入&#xff1a;[[2]] 输出&#xff1a;10 示例 2&#xff1a; 输入&#xff1a;…

leetcode914. 卡牌分组

给定一副牌&#xff0c;每张牌上都写着一个整数。 此时&#xff0c;你需要选定一个数字 X&#xff0c;使我们可以将整副牌按下述规则分成 1 组或更多组&#xff1a; 每组都有 X 张牌。 组内所有的牌上都写着相同的整数。 仅当你可选的 X > 2 时返回 true。 示例 1&#xf…

单链表的实现【数据结构】

思考&#xff1a; 1.是否能够将原来指针的方向改为向前指向呢&#xff1f; 2.是否能够有两个指针域的操作呢&#xff1f; 了解&#xff1a; 单链表是应用最广泛的一种形式&#xff0c;还有双向链表以及循环链表&#xff0c;这些都是要进行讨论的 结构体定义的是什么&#xff1f…

(详细图解)VS2017安装教程

VS 2017 版本同 15 版一样&#xff0c;细分为三个版本&#xff0c;分别是&#xff1a; 社区版&#xff08;Community&#xff09;&#xff1a;免费提供给单个开发人员&#xff0c;给予初学者及大部分程序员支持&#xff0c;可以无任何经济负担、合法地使用。企业版&#xff1a…

链表的代码实现【数据结构F】

单链表的特点&#xff1a;每次结点的分配都是动态进行分配的&#xff0c;melloc函数实现的功能是开辟一块新的内存空间&#xff0c;但是返回的是一个地址&#xff0c;只能是地址&#xff0c;没有别名的事情&#xff0c;那就有点难办了&#xff0c;这是一种间接的寻址&#xff0…

(图文详细)如何使用Code::Blocks运行c/cpp文件?

1) 新建源文件 打开 CodeBlocks &#xff0c;在上方菜单栏中选择 “文件 --> 新建 --> 空白文件”&#xff0c;如下图所示&#xff1a; 或者直接按下 Ctrl Shift N 组合键&#xff0c;都会新建一个空白的源文件&#xff0c;如下图所示&#xff1a; 在空白源文件中输入…

数据结构【插入操作具体代码的实现】

插入操作具体代码的实现 单链表delete的操作&#xff1a;

Linux GCC简明教程(编写c语言程序)

市面上常见的 Linux 都是发行版本&#xff0c;典型的 Linux 发行版包含了 Linux 内核、桌面环境&#xff08;例如 GNOME、KDE、Unity 等&#xff09;和各种常用的必备工具&#xff08;例如 Shell、gcc、VIM、Firefox 等&#xff09;&#xff0c;国内使用较多的是 CentOS、Ubunt…

Oracle中如何获取当天时间的最开始的时间和最结尾的时间:

如下&#xff1a; 1.获取当前时间的最开始的时间&#xff1a; select to_char(TRUNC(SYSDATE),yyyy-mm-dd hh24:mi:ss) from dual; 结果&#xff1a;2013-08-26 00:00:00 2.获取当前时间的最结尾的时间&#xff1a; selectTRUNC(SYSDATE)1-1/86400 FROM dual; 结果&#x…