IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 【无标题】一个题 -> 正文阅读

[JavaScript知识库]【无标题】一个题

无标题

There is an array generated by a rule:

  • The first item is 1.
  • If k is in the array, then k*3+1 and k*2+1 are in the array.
  • The array is sorted. There are no duplicate values.

Please write a function that accepts an input N . It should return the index N of the array.
For example [1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ....]
n = 10 , return 22
n = 100 , return 447

// 起始数字为1,之后每个数字都是裂变成 两倍加1 和 三倍加1 两个数字。
const arr = [1];

let cache = [1]; // 减少裂变计算

const generate = (index) => {
    let stable = arr[index] && ((2 * cache[0] + 1) > arr[index]);

    while (arr.length < index + 1 || !stable) {
        console.log('计算');
        const newer = [];
        cache.forEach((n) => {
            const k2 = 2 * n + 1;
            const k3 = 3 * n + 1;
            // 不能有重复
            if (!arr.includes(k2) && !newer.includes(k2)) {
                newer.push(k2);
            }
            if (!arr.includes(k3) && !newer.includes(k3)) {
                newer.push(k3);
            }
        })

        arr.push(...newer); // 存入裂变出来的新数

        cache = newer.sort((a, b) => a - b); // 新数也是下一次裂变的基数
        arr.sort((a, b) => a - b); // 排序取目标值
        stable = !!arr[index] && ((2 * cache[0] + 1) > arr[index]); // 下一次裂变有可能产生比目标值更小的树,导致目标值改变
    }

    return arr[index];
}

console.log(generate(10));
console.log(generate(100));
console.log(generate(20));
console.log(arr);

暂记

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-11 23:54:12  更:2022-01-11 23:55:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:55:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码