LeetCode-Python-634. 寻找数组的错位排列(数学 + 错排公式)
在组合数学中,如果一个排列中所有元素都不在原先的位置上,那么这个排列就被称为错位排列。
给定一个从 1 到 n 升序排列的数组,你可以计算出总共有多少个不同的错位排列吗?
由于答案可能非常大,你只需要将答案对 109+7 取余输出即可。
样例 1:
输入: 3
输出: 2
解释: 原始的数组为 [1,2,3]。两个错位排列的数组为 [2,3,1] 和 [3,1,2]。
注释:
n 的范围是 [1, 106]。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-derangement-of-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:
排列组合经典错排问题,有公式:
D_(n)=n * D_(n-1) + (-1)^n
参考自:https://zh.wikipedia.org/wiki/错排问题
时间复杂度:O(N)
空间复杂度:O(1)
class Solution(object):def findDerangement(self, n):""":type n: int:rtype: int"""res = 0for i in range(n + 1):res = (i * res + (-1) ** i) % (10 ** 9 + 7)return res
LeetCode-Python-634. 寻找数组的错位排列(数学 + 错排公式)相关推荐
- 634 寻找数组的错位排列
题目描述: 在组合数学中,如果一个排列中所有元素都不在原先的位置上,那么这个排列就被称为错位排列. 给定一个从 1 到 n 升序排列的数组,你可以计算出总共有多少个不同的错位排列吗? 由于答案可能非常 ...
- java错位_【LeetCode(Java) - 634】寻找数组的错位排列
[LeetCode(Java) - 634]寻找数组的错位排列 [LeetCode(Java) - 634]寻找数组的错位排列 文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解 ...
- LEETCODE | PYTHON | 724 | 寻找数组的中心下标
LEETCODE | PYTHON | 724 | 寻找数组的中心下标 1. 题目 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等 ...
- 【LeetCode - 634】寻找数组的错位排列
文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路 把题目转换为:对一个完美排序的序列,转换成错位排列,共有多少种排法. 先拿数字 n 开刀,有 n-1 个位置可以 ...
- python寻峰,[LeetCode][Python]162. 寻找峰值
[LeetCode][Python]162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数 ...
- NYOJ 451 光棍节的快乐(错排公式+排列组合)
描述 光棍们,今天是光棍节.聪明的NS想到了一个活动来丰富这个光棍节. 规则如下: 每个光棍在一个纸条上写一个自己心仪女生的名字,然后把这些纸条装进一个盒子里,这些光 棍依次抽取一张纸条,如果上面的名 ...
- LeetCode(Python实现)—寻找两个有序数组的中位数
4.寻找两个有序数组的中位数 题目大意 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). ...
- python第k序列元素查找_【python】寻找数组中第k大的元素
题目链接:https://www.nowcoder.com/question/next?pid=13956292&qid=298692&tid=26431616 方法一: 最简单直接的 ...
- 容斥原理应用之:错位排列
容斥原理应用之:错位排列 先解释一下什么是错位排列,原先的值不在原先的位置上,就是错误排列,比如下面这两个数组: <?php$array=[0=>0,1=>1,2=>2,3=& ...
最新文章
- 50个Android开发人员必备UI效果源码[转载]
- C++中返回对象的情形及RVO
- grep线上环境精典案例后续
- 爬取网页的通用代码框架
- 剑指offer-JZ82 二叉树中和为某一值的路径(一)(附区分DFS和回溯)
- php删除数组中的空行,php处理文件的思考(去除空行、每行多余字符)
- 基于JAVA+SpringBoot+Mybatis+MYSQL的家庭财务管理系统
- 腾讯优图 ncnn AI 框架宣布加入 ONNX 开放生态系统
- OpenGL基础34:帧缓冲(中)之附件
- 1002: Prime Path
- GML C++ Camera Calibration Toolbox 相机标定畸变矫正
- Atitit 面向对象弊端与问题 坏处 缺点
- linux下查看已经安装的jdk 并卸载jdk的方法
- 微信小程序活动管理系统
- 解决 手心输入法 导致 Navicat 闪退问题
- 电商自营藏猫腻 苏宁国美京东的套路谁最深?
- redis-----07-----redigo基本命令操作(主要讲如何让go的struct、map展开成redis的参数,以及使用struct获取redis返回的key-value批量数组)
- WIN11安装子系统
- 通过WebView实现简单的浏览器
- [NOIP2005提高组]过河
热门文章
- 从爬虫到分析之2018猫眼电影大数据
- 最新中国贫富标准线 你属哪个层次?
- 编程英语单词2 Java编程常用单词-带音标
- 找规律/数位DP HDOJ 4722 Good Numbers
- Core Dump 核心转储-进程异常分析jmap命令
- php修改时间格式报错'It is not safe to rely on the system's timezone settings.'
- 如何在“动物杂交:新视野”中招募新村民
- 打开计算机网络自动连接,怎么让电脑一开机就自动连接到自己的wifi
- $listeners
- 解放CPU!耕昇GTX460实战3款CUDA软件