LeetCode#279. Perfect Squares

来源:互联网 发布:南开创元java 编辑:程序博客网 时间:2024/06/05 07:55
  • 题意:给定一个数n,求最少能有多少个完全平方数,使得这些完全平方数的之和等于n

  • 思路:任意一个数x,都能表示为 x = a + b*b(即使x本身就是个完全平方数),因此求解x的最少完全平方数缩小为求解a的最少完全平方数,即求“最优子结构”,典型的动态规划思想

  • 难度:Medium

  • 代码:

         public int numSquares(int n) {        //int count = (int)Math.sqrt(n);        int[] result = new int[n+1];        Arrays.fill(result,Integer.MAX_VALUE);        for(int i = 0; i*i <= n; i++)            result[i*i] = 1;        for(int i = 1; i <= n; i++){            for(int j = 1; j*j <= i; j++){                result[i] = Math.min(result[i],result[i-j*j]+1);            }        }        return result[n];    }
  • 更多参照:
    https://leetcode.com/problems/perfect-squares/#/solutions

0 0
原创粉丝点击