arr[i] + arr[k] != 2*arr[j]

简介: 给定一个正整数M,请构造出一个长度为M的数组arr, 要求对于任意的i,j,k三个位置,如果i<j<k,都有arr[i] + arr[k] != 2*arr[j],返回构造出的arr(满足情况的一种)。

一、题目描述:


给定一个正整数M,请构造出一个长度为M的数组arr, 要求对于任意的i,j,k三个位置,如果i<j<k,都有arr[i] + arr[k] != 2*arr[j],返回构造出的arr(满足情况的一种)。


示例:

示例 1:

输入:1

输出:[1]


示例 2:

输入:3

输出:[1, 5, 2]


示例 3:

输入:5

输出:[ 1, 5, 3, 2, 6]


二、思路分析:


利用奇数偶数来举例。此题核心主要是列举一个满足 a + c != 2b的例子。

当长度为1时,直接返回任意一个数都满足情况。


当长度不为1时,我们可以将数组划分成两半,前半份为奇数,后半份为偶数。

长度为2时,arr = [1,2]。根据长度为1的扩展。分别为第一个奇数、第一个偶数。

长度为3时,arr = [1,3,2]。根据长度为2(3的一半)的扩展。第一个奇数、第二个奇数,第一个偶数。


长度为4时,arr = [1,3,2,4]。根据长度为2(4的一半)的扩展。第一个奇数、第二个奇数,第一个偶数、第二个偶数。


长度为5时,arr = [1, 5, 3, 2, 6]。根据长度为3(5的一半)的扩展。第一个奇数、第三个奇数、第二个奇数,第一个偶数、第三个偶数。

。。。

以此类推。

使用递归,利用上一个结果,求其结果。

网络异常,图片无法展示
|


三、AC 代码:


function makeNo(size) {
  if (size === 1) return [1]
  let halfSize = Math.floor((size + 1) / 2)
  console.log(halfSize);
  let base = makeNo(halfSize)
  let res = []
  let index = 0
  for (; index < halfSize; index++) {
    res[index] = base[index] * 2 - 1
  }
  console.log(res,index)
  for (let i = 0; index < size; index++, i++) {
    // 偶数
    res[index] = base[i] * 2
    console.log(base[i])
  }
  return res
}


四、总结:


此题只要满足情况即可,根据奇数偶数只是其中一种方法。


作者:ClyingDeng

链接:https://juejin.cn/post/6952773184533823496

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

目录
相关文章
面向对象编程:类、对象、继承与多态
面向对象编程:类、对象、继承与多态
88 1
|
数据采集 运维 算法
【数据挖掘导论】书籍小册(一)绪论
【数据挖掘导论】书籍小册(一)绪论
213 0
【数据挖掘导论】书籍小册(一)绪论
|
数据可视化 Linux 开发工具
阿里云服务器使用ubuntu16.04 server 配置可视化桌面环境
阿里云服务器使用ubuntu16.04 server 配置可视化桌面环境
4840 0
阿里云服务器使用ubuntu16.04 server 配置可视化桌面环境
|
API 数据安全/隐私保护
QQ登陆功能的实现2
QQ登陆功能的实现2     由于看到园子里有朋友说需要讲解和剖析实现的步骤,前面的QQ登陆实现只有代码,所以这篇补上    1.  分析 1). 当运行QQ.exe后会出现qq登陆界面的窗体 2).
1126 0
|
Java Scala 测试技术
学习Scala第一篇-从hello World开始
最近开始系统性的学习scala。其实之前使用过scala的,比如我在用Gatling这款性能测试工具的时候就接触到了scala了。Gatling本身就是用Scala写的,而且Gatling的性能测试配置文件本身就是一个scala类,可以随意使用scala甚至是Java提供的各种类库。
913 0
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。