LeetCode 279. Perfect Squares
来源:互联网 发布:js弹出路径选择对话框 编辑:程序博客网 时间:2024/06/02 05:27
一、问题描述
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
, return
= 132
because 13 = 4 + 9
.
二、解题思路
将一个数表示为完全平方数之和的形式,在这些组合中找到完全平分数个数最少的,可以想到,对于一个给定的数num,它必然是由一个完全平方数a加上另外一个数b得到的,要使组成num的完全平方数最小,则组成b的完全平方数也必然要最小,那么求组成b的完全平方数的最小个数的问题,就是这个问题的一个子问题,如此递推。
另一方面,对于num而言,a、b的组合有一种或若干种,我们只需找到完全平方数个数最少的一种,这里涉及到的状态转移方程如下:
v[i + j * j] = min(v[i + j * j], v[i] + 1);
三、C++代码
class Solution {public: int numSquares(int n) { vector<int> v(n + 1, INT_MAX); for (int i = 1; i * i <= n; i++) { v[i*i] = 1; } for (int i = 1; i <= n; i++) { for (int j = 1; i + j*j <= n; j++) { v[i + j * j] = min(v[i + j * j], v[i] + 1); } } return v[n]; }};
阅读全文
0 0
- [leetcode] 279. Perfect Squares
- 279. Perfect Squares LeetCode
- leetcode 279. Perfect Squares
- leetcode 279. Perfect Squares
- [LeetCode]279. Perfect Squares
- LeetCode-279.Perfect Squares
- LeetCode *** 279. Perfect Squares
- leetcode.279. Perfect Squares
- LeetCode 279. Perfect Squares
- [leetcode] 279. Perfect Squares
- Leetcode-279. Perfect Squares
- LeetCode 279. Perfect Squares
- Leetcode 279. Perfect Squares
- [LeetCode]279. Perfect Squares
- 【LeetCode】 279. Perfect Squares
- (LeetCode) 279. Perfect Squares
- LeetCode 279. Perfect Squares
- LeetCode#279. Perfect Squares
- Android笔记
- java集合实例
- Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition
- (error) CLUSTERDOWN Hash slot not served
- hadoop中master能够启动datanode,但是datanode无法连接namenode 报 17/11/16 03:49:13 WARN ipc.Client: Failed to conn
- LeetCode 279. Perfect Squares
- nginx的upstream目前支持5种方式的分配
- Linux下启动tomcat的脚本文件
- 【angular】gyp ERR! build error msbuild.exe` failed with exit code: 1
- AndroidStudio 缓存文件夹配置
- 【算法】单源最短路径和任意两点最短路径总结(补增:SPFA)
- spring事物配置,声明式事务管理和基于@Transactional注解的使用
- ListView下拉刷新,上拉加载
- c语言基础知识2