在组合数学中,如果一个排列中所有元素都不在原先的位置上,那么这个排列就被称为错位排列。

给定一个从 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. 寻找数组的错位排列(数学 + 错排公式)相关推荐

  1. 634 寻找数组的错位排列

    题目描述: 在组合数学中,如果一个排列中所有元素都不在原先的位置上,那么这个排列就被称为错位排列. 给定一个从 1 到 n 升序排列的数组,你可以计算出总共有多少个不同的错位排列吗? 由于答案可能非常 ...

  2. java错位_【LeetCode(Java) - 634】寻找数组的错位排列

    [LeetCode(Java) - 634]寻找数组的错位排列 [LeetCode(Java) - 634]寻找数组的错位排列 文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解 ...

  3. LEETCODE | PYTHON | 724 | 寻找数组的中心下标

    LEETCODE | PYTHON | 724 | 寻找数组的中心下标 1. 题目 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等 ...

  4. 【LeetCode - 634】寻找数组的错位排列

    文章目录 1.题目描述 2.解题思路 3.解题代码 1.题目描述 2.解题思路   把题目转换为:对一个完美排序的序列,转换成错位排列,共有多少种排法.   先拿数字 n 开刀,有 n-1 个位置可以 ...

  5. python寻峰,[LeetCode][Python]162. 寻找峰值

    [LeetCode][Python]162. 寻找峰值 峰值元素是指其值大于左右相邻值的元素. 给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引. 数 ...

  6. NYOJ 451 光棍节的快乐(错排公式+排列组合)

    描述 光棍们,今天是光棍节.聪明的NS想到了一个活动来丰富这个光棍节. 规则如下: 每个光棍在一个纸条上写一个自己心仪女生的名字,然后把这些纸条装进一个盒子里,这些光 棍依次抽取一张纸条,如果上面的名 ...

  7. LeetCode(Python实现)—寻找两个有序数组的中位数

    4.寻找两个有序数组的中位数 题目大意 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). ...

  8. python第k序列元素查找_【python】寻找数组中第k大的元素

    题目链接:https://www.nowcoder.com/question/next?pid=13956292&qid=298692&tid=26431616 方法一: 最简单直接的 ...

  9. 容斥原理应用之:错位排列

    容斥原理应用之:错位排列 先解释一下什么是错位排列,原先的值不在原先的位置上,就是错误排列,比如下面这两个数组: <?php$array=[0=>0,1=>1,2=>2,3=& ...

最新文章

  1. 50个Android开发人员必备UI效果源码[转载]
  2. C++中返回对象的情形及RVO
  3. grep线上环境精典案例后续
  4. 爬取网页的通用代码框架
  5. 剑指offer-JZ82 二叉树中和为某一值的路径(一)(附区分DFS和回溯)
  6. php删除数组中的空行,php处理文件的思考(去除空行、每行多余字符)
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的家庭财务管理系统
  8. 腾讯优图 ncnn AI 框架宣布加入 ONNX 开放生态系统
  9. OpenGL基础34:帧缓冲(中)之附件
  10. 1002: Prime Path
  11. GML C++ Camera Calibration Toolbox 相机标定畸变矫正
  12. Atitit 面向对象弊端与问题 坏处 缺点
  13. linux下查看已经安装的jdk 并卸载jdk的方法
  14. 微信小程序活动管理系统
  15. 解决 手心输入法 导致 Navicat 闪退问题
  16. 电商自营藏猫腻 苏宁国美京东的套路谁最深?
  17. redis-----07-----redigo基本命令操作(主要讲如何让go的struct、map展开成redis的参数,以及使用struct获取redis返回的key-value批量数组)
  18. WIN11安装子系统
  19. 通过WebView实现简单的浏览器
  20. [NOIP2005提高组]过河

热门文章

  1. 从爬虫到分析之2018猫眼电影大数据
  2. 最新中国贫富标准线 你属哪个层次?
  3. 编程英语单词2 Java编程常用单词-带音标
  4. 找规律/数位DP HDOJ 4722 Good Numbers
  5. Core Dump 核心转储-进程异常分析jmap命令
  6. php修改时间格式报错'It is not safe to rely on the system's timezone settings.'
  7. 如何在“动物杂交:新视野”中招募新村民
  8. 打开计算机网络自动连接,怎么让电脑一开机就自动连接到自己的wifi
  9. $listeners
  10. 解放CPU!耕昇GTX460实战3款CUDA软件