526. 优美的排列

假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:

第 i 位的数字能被 i 整除
i 能被第 i 位上的数字整除
现在给定一个整数 N,请问可以构造多少个优美的排列?

示例1:

输入: 2
输出: 2
解释:

第 1 个优美的排列是 [1, 2]:
第 1 个位置(i=1)上的数字是1,1能被 i(i=1)整除
第 2 个位置(i=2)上的数字是2,2能被 i(i=2)整除

第 2 个优美的排列是 [2, 1]:
第 1 个位置(i=1)上的数字是2,2能被 i(i=1)整除
第 2 个位置(i=2)上的数字是1,i(i=2)能被 1 整除
说明:

N 是一个正整数,并且不会超过15。

class Solution {private int count = 0;private void swap(int[] nums, int i, int j) {int tmp = nums[i];nums[i] = nums[j];nums[j] = tmp;}private void helper(int[] nums, int start) {if (start == 0) {count++;return;}for (int i = start; i > 0; i--) {swap(nums, start, i);if (nums[start] % start == 0 || start % nums[start] == 0) helper(nums, start-1);swap(nums,i, start);}}public int countArrangement(int N) {if (N == 0) return 0;int[] nums = new int[N+1];for (int i = 0; i <= N; i++) nums[i] = i;helper(nums, N);return count;}
}

Java实现 LeetCode 526 优美的排列(DFS)相关推荐

  1. LeetCode 526. 优美的排列(回溯)

    1. 题目 假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一 ...

  2. Leetcode 526.优美的排列 二进制状压DP

    题目链接:传送门 假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数 ...

  3. Java实现 LeetCode 667 优美的排列 II(暴力)

    667. 优美的排列 II 给定两个整数 n 和 k,你需要实现一个数组,这个数组包含从 1 到 n 的 n 个不同整数,同时满足以下条件: ① 如果这个数组是 [a1, a2, a3, - , an ...

  4. LeetCode 526. 优美的排列

    原题目:https://leetcode-cn.com/problems/beautiful-arrangement/ 代码: class Solution {vector<bool> m ...

  5. leetcode 526优美的数列

    题目 leetcode 526优美的数列 假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件 ...

  6. 递归-力扣-526. 优美的排列

    题目链接 优美的排列 假设有从 1 到 n 的 n 个整数.用这些整数构造一个数组 perm(下标从 1 开始),只要满足下述条件 之一 ,该数组就是一个 优美的排列 : perm[i] 能够被 i ...

  7. 526. 优美的排列

    假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列 ...

  8. 力扣 -- 526. 优美的排列

    一.题目描述 假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为 ...

  9. leetcode 526. Beautiful Arrangement | 526. 优美的排列(回溯)

    题目 https://leetcode.com/problems/beautiful-arrangement/ 题解 首先分析,全排列一个一个试的话(如下图),时间复杂度O(n^2),当n=15时,总 ...

最新文章

  1. 多视图几何三维重建实战系列之MVSNet
  2. 短址(short URL)原理及其实现
  3. div旋转 vue_详细解析:uniapp项目|vue组件形式实现的水珠晃动loading纯CSS动效
  4. 滑动窗口最大值--单调队列
  5. Qt之QStackedWidget
  6. 手机桌面隐藏大师_应用加密,教你一招隐藏手机桌面上的软件!
  7. (自定义组件)通用- X轴横向:溢出滚动 (含代码)- 案例篇
  8. python mysql lastrowid_加快MySQL对lastrowid的多个单次插入
  9. 拒绝PPT手机?魅族首款真无孔手机将开启众筹
  10. postgreSQL源码分析——索引的建立与使用——GIN索引(3)
  11. python 堆栈溢出_内存 - 如何发生“堆栈溢出”,如何防止它?
  12. Mysql的int和bigint字段类型,映射到Java的Integer和Long类型时,勾选UNSIGNED无符号会导致越界转换。
  13. Atitit.编程语言原理---方法重载的实现与设计 调用方法的原理
  14. Structured Streaming 整合 Kafka指南
  15. python写代码酷炫插件_使用 Python 制作酷炫多彩的 Jenkins 插件词云图
  16. 微软发布TypeScript用以改进JavaScript开发
  17. 用X264编码以后的H264数据
  18. NDK学习笔记:一起来变萝莉音!FMOD学习总结(上)
  19. 任务分解法[WBS]
  20. 打卡签到python代码_[python] 初学python,打卡签到

热门文章

  1. WPF下载图片到计算机
  2. Shader——漩涡效果
  3. Java中file.delete()删除文件失败
  4. workbench焊接实例_[转载]Workbench的焊接模拟过程(高斯移动热源)
  5. 关于多副本和纠删码(二)--EC(纠删码)原理
  6. BZOJ4399 魔法少女LJJ【线段树合并】【并查集】
  7. 小程序之简单登录注册表单验证
  8. VPS云主机套餐中都包含什么
  9. ORA-21561: OID generation failed
  10. 【Android】ScrollView——空间杀手