前端算法-完全平方数

简介: 前端算法-完全平方数

题目

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量

输入: n = 12
输出: 3 
解释: 12 = 4 + 4 + 4

思路一

我们先创建一个array变量,他是一个做为储存状态的数组,他的长度是形参n+1,默认值全为0,我们用该数组来记录当前数值的所需完全平方数的最少数量,然后再使用循环对形参n进行循环,在循环中我们创建一个min变量他的值是Number的最大值,然后再使用循环对第一层循环的i变量进行循环,我们在该循环中使用Math.min函数获取当前min变量和array数组的i-j*j的最小值,然后我们将其得出的最小值重新赋值给min变量,依次往复,求出当前所需完全平方数的最少数量,然后将min变量+1赋值给array的i变量位置,最后我们将array的形参n位置的数据返回出去即可

var numSquares = function(n) {
    let array = new Array(n+1).fill(0); 
    for(let i=1; i<=n; i++){ 
        let min = Number.MAX_VALUE; 
        for(let j=1; j*j<=i; j++){ 
            min = Math.min(min, array[i - j * j]); 
        }
        array[i] = min + 1;
    }
    return array[n]; 
};

思路二

我们在先声明一个s变量,它的值是形参n与0.5进行乘方在使用Math.floor方法向下取整后的值,然后我们在判断当前s变量和s变量想乘是否等于n,如果等于则返回1,如果不是我们接下来声明f变量他的值默认是n,然后再判断f和8相余是否等于7,如果是则直接返回4,如果不是则进行循环,判断当前f变量和4相余是否等于0,如果是则一直进行循环,在循环中我们将f变量和4相除最后把值在赋值给f变量,在判断f变量和8相余是否等于7,如果是则直接返回4,则下来在声明一个a变量,默认值为0,然后再进行循环,当前的变量a和变量a相乘是否小于形参n,如果是则进入循环,在循环中我们使用Math.floor方法向下取整通过( n - a*a ) ** 0.5该公式得出的值,然后进行判断 b*b + a*a === n,如果满足则直接返回2,如果不是则将变量a自增1,循环结束后,如果没有返回值则直接返回3

var numSquares = function(n) {
    let s = Math.floor(n ** 0.5);
    if( s*s === n ) return 1;
    let f = n
    if(f % 8 === 7) return 4;
    while( f % 4 === 0 ){
        f /= 4
        if(f % 8 === 7) return 4;
    }
    let a = 0
    while( a*a < n ){
        b = Math.floor(( n - a*a ) ** 0.5)
        if( b*b + a*a === n ) return 2
        a++
    }
    return 3
};


相关文章
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
538 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
10月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
674 5
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
874 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
12月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
271 0
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
247 1
|
数据采集 前端开发 算法
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
150 4
|
缓存 算法 前端开发
前端 JS 经典:LRU 缓存算法
前端 JS 经典:LRU 缓存算法
201 0
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值
【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值

热门文章

最新文章