N0.932. Beautiful Array
题意:给定一个排列,要求给出其满足对于任意一个数A[k],
使得i<k<j,2×A[k]!=A[i]+A[j].的一个排列

别人思路:这个问题有一个非常美妙的数学解法。首先我们要证明漂亮数组满足这样几种性质
1.减法(减去一个数仍然是漂亮数组)
(A[k]−x)∗2=A[k]∗2−2∗x≠(A[i]−x+A[j]−x) (A[k]-x)*2=A[k]2 - 2x \neq(A[i] -x + A[j] - x)(A[k]−x)∗2=A[k]∗2−2∗x
=(A[i]−x+A[j]−x)
2.乘法(乘上一个数仍然是漂亮数组)
A[k]∗2∗x≠(A[i]+A[j])∗x=A[i]∗x+A[j]∗xA[k]2x\neq(A[i]+A[j])*x=A[i]*x+A[j]*xA[k]∗2∗x =(A[i]+A[j])∗x=A[i]∗x+A[j]∗x

有了上面这两个性质,我们就可以很快解决这个问题了。我们知道一个数组A可以分为奇数部分A1和偶数部分A2。此时我们如果有一个漂亮数组B,我们根据前面的性质知道2B-1是一个漂亮数组并且是奇数数组,而2B也是一个漂亮数组并且是偶数数组。那么我们通过2B+2B-1必然可以构成任意一个漂亮数组了。

class Solution {public int[] beautifulArray(int N) {List<Integer> list = new ArrayList<Integer>() ;list.add(1) ;while(list.size()<N){List<Integer> temp = new ArrayList<Integer>() ;for(int i : list){if(i*2-1<=N){temp.add(i*2-1) ;}}for(int i : list){if(i*2<=N){temp.add(i*2) ;}}list = temp ;}int a[] = new int[list.size()] ;for(int i=0;i<list.size();i++){a[i] = list.get(i) ;}return a ;}
}

leetcode932.BeautifulArray相关推荐

  1. leetcode 932. Beautiful Array | 932. 漂亮数组(分治法)

    题目 https://leetcode.com/problems/beautiful-array/ 题解 没想出来,最后参考了[分治]通俗的官解分析 的思路. 推理过程 草稿 class Soluti ...

  2. LeetCode 932. 漂亮数组(分治递归/循环)

    文章目录 1. 题目 2. 解题 2.1 分治递归 2.2 循环 1. 题目 对于某些固定的 N,如果数组 A 是整数 1, 2, -, N 组成的排列,使得: 对于每个 i < j,都不存在 ...

  3. 搞定面试算法系列 | 分治算法三步走

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 江子抑 转自 | 编程拯救世界 主要思想 分治算法,即分而治之:把一个复杂问题分成两个或更多的相同或相似子问题,直到最后子问题可以简 ...

  4. leetcode 分治 beautiful array

    题目链接 typedef vector<int> vi; class Solution {public:vi beautifulArray(int n){if (n == 1)return ...

  5. 字节跳动暑期实习——大数据开发工程师面经

    Intro 本人985CS科班 无行业相关经历,有经济学辅修与深度学习的科研经历,预计这个学期会发一篇顶会,投的是字节大数据开发,面试之前没什么准备,一面的时候一道题都没有刷,直接裸面.直到三面面完l ...

最新文章

  1. 2月书讯 | 193张图表+388段代码,原版长销13年的日系书终于来了
  2. 凭借这份Java面试题集,java上传文件夹
  3. 面部识别辅助监控系统 人工智能为城市安全保驾护航
  4. 数据库的使用你可能忽略了这些 (续)
  5. 5G NR上行控制信道PUCCH
  6. 项目管理思考——我适合做项目经理吗
  7. slide简介(大数据技术)
  8. c++用什么软件编程_学习编程用什么做笔记比较好?
  9. Python之数据分析(Numpy通用属性、数据可视化与matplotlib库通用函数)
  10. centos7 mariadb mysql_【软件安装】CentOS7安装MariaDb(mysql_替代品安装)
  11. 【资源】领域自适应相关论文、代码分享
  12. Anaconda常用指令
  13. Swift - 使用UIScrollView实现页面滚动切换
  14. 华铭智能属于芯片概念吗_华铭智能:子公司1个亿参股边缘计算独角兽九次方大数据!...
  15. 按要求编写Java程序(阶乘)
  16. 用计算机将复数转换成角度,计算机复数计算
  17. 怎样开发每天赚100万的微信小游戏?
  18. 主板前置面板插线插法
  19. 构造函数c语言引用,c – 定义的构造函数的“未定义引用”
  20. python处理word文档(docxtpl 中文说明文档)

热门文章

  1. hive的row_number()函数
  2. c语言中文件的读写函数
  3. Silverlight之我见——数据批示(2)
  4. 判断操作系统类型的多种方法
  5. 【Java从0到架构师】MyBatis - 缓存_构造方法
  6. 小程序入门学习07--动态设置标题、转发
  7. hibernate 读取mysql表结构_为什么要用hibernate 与基于数据库表结构的项目开发
  8. jpa 人大金仓数据库方言_兼容认证 | 人大金仓数据库管理系统完成与浪潮产品兼容认证...
  9. google map flex
  10. string 方法 java_String 的几个 方法。 (java)