当前位置: 首页 > news >正文

漂亮数组 Beautiful Array

2019-04-06 16:09:56

问题描述:

问题求解:

本题还是挺有难度的,主要是要考虑好如何去进行构造。

首先考虑到2 * A[i] = A[j] + A[k],那么j,k就必须是同奇同偶,否则它们的和必为奇数,显然等式不成立。

那么如果我们将N的数组分成两个部分,一部分全奇数,一部分全偶数,并且这两个部分是Beautiful Array,那么将它们concat一下,得到的也是Beautiful Array。

那么如何得到这两个部分呢?

这就需要一些数学的证明了,很容易证明得到漂亮数组满足以下的两个性质。

  • 同乘一个数依然是漂亮数组
  • 同加一个数依然是漂亮数组

得到这两个性质后就可以进行构造了,从{1}开始,每次得到{A * 2 - 1}和{A * 2},显然这两个数组是漂亮数组,并且分别是奇数和偶数数组,将它们concat之后就会得到长度更长的数组,这样就可以构造出来结果需要的数组。

    public int[] beautifulArray(int N) {
        List<Integer> res = new ArrayList<>();
        res.add(1);
        while (res.size() < N) {
            List<Integer> tmp = new ArrayList<>();
            for (int i : res) if (i * 2 - 1 <= N) tmp.add(i * 2 - 1);
            for (int i : res) if (i * 2 <= N) tmp.add(i * 2);
            res = tmp;
        }
        return res.stream().mapToInt(i -> i).toArray();
    }

  

 

转载于:https://www.cnblogs.com/TIMHY/p/10662077.html

相关文章:

  • es6常用功能与异步详解(JS高级面试题)
  • python----__str__与__repr__的区别
  • OpenCV入门学习资料汇总
  • 性能测试必知必会
  • Typora + Mathpix Snip,相见恨晚的神器
  • MongoDB 介绍
  • ActiveMQ( 一) 同步,异步,阻塞 JMS 消息模型
  • Python基础之集合
  • vue父组件给子组件传值:属性的形式
  • Vue项目通过JSSDK调用微信分享接口
  • Linux启动/停止/重启Mysql数据库的方法
  • 基于注解的AOP配置
  • python-day2-变量
  • 同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
  • 生产巡检
  • CSS 专业技巧
  • FastReport在线报表设计器工作原理
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PAT A1017 优先队列
  • PHP 7 修改了什么呢 -- 2
  • Python_网络编程
  • Redis字符串类型内部编码剖析
  • STAR法则
  • 半理解系列--Promise的进化史
  • 笨办法学C 练习34:动态数组
  • 测试如何在敏捷团队中工作?
  • 排序算法之--选择排序
  • 如何使用 JavaScript 解析 URL
  • 数据结构java版之冒泡排序及优化
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 原生 js 实现移动端 Touch 滑动反弹
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • (175)FPGA门控时钟技术
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)【Hibernate总结系列】使用举例
  • .NET Core 中的路径问题
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .NET项目中存在多个web.config文件时的加载顺序
  • .net专家(高海东的专栏)
  • /etc/fstab 只读无法修改的解决办法
  • @Async注解的坑,小心
  • @EventListener注解使用说明
  • @vue/cli脚手架
  • [ajaxupload] - 上传文件同时附件参数值
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [BZOJ5250][九省联考2018]秘密袭击(DP)