题目

https://leetcode.com/problems/beautiful-arrangement/

题解

首先分析,全排列一个一个试的话(如下图),时间复杂度O(n^2),当n=15时,总共87178291200种情况,是肯定会超时的。

然后想想怎么剪枝。因为当一个位置的一个数字不可用时,后面也就没必要在尝试了。所以这种情况下,剪枝,不用继续往后走。递归如下。
递归函数中,i 是当前填写到的位置,seen 是已经用过的数字。

class Solution {public int countArrangement(int n) {return process(n, 1, new HashSet<>());}public int process(int n, int i, Set<Integer> seen) {int count = 0;if (i > n) return 1;for (int j = 1; j <= n; j++) {if (!seen.contains(j) && (i % j == 0 || j % i == 0)) {seen.add(j);count += process(n, i + 1, seen);seen.remove(j);}}return count;}
}

leetcode 526. Beautiful Arrangement | 526. 优美的排列(回溯)相关推荐

  1. LeetCode 526. Beautiful Arrangement

    526. Beautiful Arrangement Suppose you have N integers from 1 to N. We define a beautiful arrangemen ...

  2. 【Leetcode】526. Beautiful Arrangement

    Description: Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array ...

  3. LeetCode笔记:526. Beautiful Arrangement

    问题: Suppose you have N integers from 1 to N. We define a beautiful arrangement as an array that is c ...

  4. leetcode 667. Beautiful Arrangement II | 667. 优美的排列 II(Java)

    题目 https://leetcode.com/problems/beautiful-arrangement-ii/ 题解 偏智力题,评论区有人说,A typical question testing ...

  5. leetcode526 优美的排列

    leetcode526 优美的排列 回溯水题 代码: class Solution {int[] res;int cnt = 0;public void swap(int i, int j){int ...

  6. Java实现 LeetCode 526 优美的排列(DFS)

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

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

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

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

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

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

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

最新文章

  1. 你以为border-radius只是圆角吗?【各种角度】
  2. 开发自己的Data Access Application Block[下篇]
  3. Python 语法错误:“SyntaxError: invalid character in identifier“,原因及解决方法
  4. Hadoop Namenode不能启动
  5. 初探Windows用户态调试机制
  6. 【推荐】智慧城市建设及发展资料合集
  7. 树莓派无线投屏服务器,树莓派 Raspberry Pi 设置无线上网
  8. Springboot JPA日志输出打印SQL语句和传入的参数 高阶篇,java微服务架构视频下载
  9. 程序员从新手变成大佬的成长之路
  10. windows分类及安装
  11. 前端效果之“拉开窗帘”
  12. bzoj 1022: [SHOI2008]小约翰的游戏John(反nim游戏)
  13. 160多个android开源代码汇总
  14. 热带地区数据中心需要太阳能发电,而不是自然冷却
  15. ♠♦♣TypeScript
  16. 科研实习 | 中科院软件所郑权老师组招收图形学方向研究实习生
  17. 要想城府深还看不出来,牢记3个说话“潜规则”,莫要嘴欠吃亏
  18. HTML5 video/audio监听事件属性及方法
  19. python同花顺 财务_使用Python抓取同花顺资金流数据
  20. NOIP2022游记

热门文章

  1. HDU - 2825 Wireless Password(AC自动机+状压dp)
  2. POJ - 3680 Intervals(最大费用最大流+思维建边)
  3. 卷积神经网络精确率不增反降_深度学习 第四门课:卷积神经网络(Convolutional Neural Networks)...
  4. tomcat apache mysql_Android实现与Apache Tomcat服务器数据交互(MySql数据库)
  5. 外挂学习之路(11)--- 背包数据的遍历
  6. 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数
  7. ARP攻击实战之WinArpAttacker
  8. 对于 CDN 的多元理解
  9. Java类加载器(一)——类加载器层次与模型
  10. 曹大带我学 Go(6)—— 技术之外