279. 完全平方数

在这里插入图片描述

解法一、回溯法:

class Solution {
    public int numSquares(int n) {
        return numSquaresHepler(n);
    }
    public int numSquaresHepler(int n){
        if(n == 0) return 0;
        int count = Integer.MAX_VALUE;
        for(int i = 1; i * i <= n; i++){
            count = Math.min(count,numSquaresHepler(n - i * i) + 1);
        }
        return count;
    }
}

解法二、HashMap 优化回溯法

解法一超时,解法二优化通过使用 HashMap 保存

class Solution {
    public int numSquares(int n) {
        return numSquaresHepler(n,new HashMap<Integer,Integer>());
    }
    public int numSquaresHepler(int n,HashMap<Integer,Integer> map){
        if(map.containsKey(n)) return map.get(n);
        if(n == 0) return 0;
        int count = Integer.MAX_VALUE;
        for(int i = 1; i * i <= n; i++){
            count = Math.min(count,numSquaresHepler(n - i * i,map) + 1);
        }
        map.put(n,count);
        return count;
    }
}

解法三、动态优化

递归相当于先压栈压栈然后出栈出栈,动态规划可以省去压栈的过程。

动态规划的转移方程就对应递归的过程,动态规划的初始条件就对应递归的出口。

class Solution {
    public int numSquares(int n) {
        int[] dp = new int[n+1];
        Arrays.fill(dp,Integer.MAX_VALUE);
        dp[0] = 0;
        for(int i = 1; i <= n; i++){
             //依次减去一个平方数
            for(int j = 1; j * j <= i; j++){
                dp[i] = Math.min(dp[i],dp[i-j*j]+1);
            }
        }
        return dp[n];
    }
}

相关推荐

  1. 279. 完全平方

    2024-06-12 13:56:02       39 阅读
  2. 279. 完全平方

    2024-06-12 13:56:02       37 阅读
  3. 【Leetcode】279.完全平方

    2024-06-12 13:56:02       36 阅读
  4. LeetCode279 完全平方

    2024-06-12 13:56:02       32 阅读
  5. leetcode 279.完全平方

    2024-06-12 13:56:02       32 阅读
  6. 代码随想录 279. 完全平方

    2024-06-12 13:56:02       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 13:56:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 13:56:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 13:56:02       82 阅读
  4. Python语言-面向对象

    2024-06-12 13:56:02       91 阅读

热门阅读

  1. table根据字段合并单元格

    2024-06-12 13:56:02       25 阅读
  2. vue问题记录

    2024-06-12 13:56:02       25 阅读
  3. c++多态

    c++多态

    2024-06-12 13:56:02      27 阅读
  4. 数学学习与研究//知网//简介//投稿途径?

    2024-06-12 13:56:02       25 阅读
  5. PHP Cookies:应用与管理

    2024-06-12 13:56:02       32 阅读
  6. 算法训练题day57

    2024-06-12 13:56:02       23 阅读
  7. 微信小程序页面配置

    2024-06-12 13:56:02       28 阅读
  8. AWS无服务器 应用程序开发—第一章 目录

    2024-06-12 13:56:02       32 阅读
  9. MySQL密码复杂度策略配置

    2024-06-12 13:56:02       31 阅读