LC-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.

BFS
public class Solution {
    public int numSquares(int n) {
        if (n < 2) return n;
        
        List<Integer> edges = new ArrayList<>();
        for (int i = 1; i * i <= n; i++) {
            edges.add(i*i);
        }
        Queue<Integer> queue = new LinkedList<>();
        queue.offer(n);
        int level = 0;
        while (!queue.isEmpty()) {
            level++;
            int size = queue.size();
            for (int i = 0; i < size; i++) {
                int top = queue.poll();
                System.out.println(top);
                //neighbors
                for (int edge : edges) {
                    if (top == edge) {
                        return level;
                    } else if (top < edge) {
                        break;
                    } else {
                        queue.offer(top - edge);
                    }
                }
            }
        }
        return level;
    }
}
dp
//接龙型dp
public class Solution {
    public int numSquares(int n) {
        int[] record = new int[n+1];
        for (int i = 0; i <= n; i++) {
            record[i] = i;
            for (int j = 1; j * j <= i; j++) {
                record[i] = Math.min(record[i], record[i - j * j] + 1);
            }
        }
        return record[n];
    }     
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,769评论 0 33
  • 01 从空中俯瞰,引光中学就像一张方方正正的脸颊,眉毛、眼睛、鼻子、嘴巴,五官一应俱全,活脱脱一个刻板的知识分子。...
    166676344403阅读 290评论 1 3
  • 单片机概念 单片机是指一个集成在一块芯片上的完整计算机系统。尽管它的大部分功能集成在一块小芯片上,但是它具有一...
    稻香_阅读 973评论 1 0
  • 儿子:“手拉手” 爸爸:“手拉手” 儿子:“我自己走” 爸爸:“走到哪里去” 儿子:“走到家门口”
    打油先生阅读 176评论 0 1