zoukankan      html  css  js  c++  java
  • 279. Perfect Squares


    Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which sum to n.

    For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9.

    题目含义:求一个数字可以通过最少个平方数累加得到

     1     /* 如果一个数x可以表示为一个任意数a加上一个平方数bxb,也就是x = a + bxb,
     2     * 那么能组成这个数x最少的平方数个数,就是能组成a最少的平方数个数加上1(因为b*b已经是平方数了)。
     3     */    
     4     public int numSquares(int n) {
     5         int[] nums = new int[n + 1];
     6         Arrays.fill(nums, Integer.MAX_VALUE); // 将所有非平方数的结果置最大,保证之后比较的时候不被选中
     7         for (int i = 0; i * i <= n; i++)  // 将所有整平方数的结果置1
     8         {
     9             nums[i * i] = 1;
    10         }
    11         for (int a = 0; a <= n; a++)// 从小到大找任意数a
    12             for (int b = 0; a + b * b <= n; b++)// 从小到大找平方数b*b
    13             {
    14                 nums[a + b * b] = Math.min(nums[a] + 1, nums[a + b * b]);// 因为a+b*b可能本身就是平方数,所以我们要取两个中较小的
    15             }
    16         return nums[n];        
    17     }
  • 相关阅读:
    中国式关系
    太太万岁
    matlab记录运行时间命令
    matlab读xls数据
    matlab,xls转换为mat文件
    matlab里plot设置线形和颜色
    matlab里plot画多幅图像、设置总标题、legend无边框
    matlab显示图像的横纵坐标
    去掉matlab图片空白边缘
    matlab显示原图和灰度直方图
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7692688.html
Copyright © 2011-2022 走看看