当前位置: 首页 > news >正文

网站二级页面需不需要设置关键词我要自学网网站

网站二级页面需不需要设置关键词,我要自学网网站,全包家装原创装修网站,北京手机网站设计电话题目 完全平方数 给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而…

题目

完全平方数
给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是。

示例 1:

输入:n = 12
输出:3
解释:12 = 4 + 4 + 4
示例 2:

输入:n = 13
输出:2
解释:13 = 4 + 9

提示:

1 <= n <= 104

题解

记忆化搜索

class Solution {private int[][] cache;public int numSquares(int n) {// if (n == 1) {//     return 1;// }int len = (int) Math.sqrt(n);cache = new int[len][n + 1];for (int i = 0; i < len; i++) {Arrays.fill(cache[i],-1);}int ans = dfs(len - 1, n);return ans < Integer.MAX_VALUE / 2 ? ans : -1;}public int dfs(int i, int c) {if (i < 0) {return c == 0 ? 0 : Integer.MAX_VALUE / 2;}if (cache[i][c] != -1) {return cache[i][c];}if (c < (i + 1) * (i + 1)) {return cache[i][c] = dfs(i - 1, c);}return cache[i][c] = Math.min(dfs(i - 1, c), dfs(i, c - (i + 1) * (i + 1)) + 1);}
}

递推

class Solution {public int numSquares(int n) {int len = (int)Math.sqrt(n);int[][] f = new int[2][n + 1];Arrays.fill(f[0], Integer.MAX_VALUE / 2);f[0][0] = 0;for (int i = 0; i < len; i++) {for (int c = 1; c <= n; c++) {if (c < (i + 1) * (i + 1)) {f[(i + 1)%2][c] = f[i%2][c];} else {f[(i + 1)%2][c] = Math.min(f[i%2][c],f[(i + 1)%2][c - (i + 1) * (i + 1)] + 1);}}}int ans = f[len%2][n];return ans < Integer.MAX_VALUE / 2 ? ans : -1;}
}
两个数组优化
class Solution {public int numSquares(int n) {int len = (int)Math.sqrt(n);int[][] f = new int[2][n + 1];Arrays.fill(f[0], Integer.MAX_VALUE / 2);f[0][0] = 0;for (int i = 0; i < len; i++) {for (int c = 1; c <= n; c++) {if (c < (i + 1) * (i + 1)) {f[(i + 1)%2][c] = f[i%2][c];} else {f[(i + 1)%2][c] = Math.min(f[i%2][c],f[(i + 1)%2][c - (i + 1) * (i + 1)] + 1);}}}int ans = f[len%2][n];return ans < Integer.MAX_VALUE / 2 ? ans : -1;}
}
一个数组优化
class Solution {public int numSquares(int n) {int len = (int)Math.sqrt(n);int[] f = new int[n + 1];Arrays.fill(f, Integer.MAX_VALUE / 2);f[0] = 0;for (int i = 0; i < len; i++) {for (int c = (i + 1) * (i + 1); c <= n; c++) {f[c] = Math.min(f[c],f[c - (i + 1) * (i + 1)] + 1);}}int ans = f[n];return ans < Integer.MAX_VALUE / 2 ? ans : -1;}
}
http://www.yayakq.cn/news/979675/

相关文章:

  • 高青云速网站建设推广网络营销外包
  • 中国山东建设监理协会官方网站专业的东莞网站排名
  • 湘潭做网站公司选择封象网做网站公司宝钢建设工程有限公司网站
  • 吴江住房建设局网站wordpress去除顶部
  • 永川区网站建设咨询婚礼视频制作软件
  • 建设银行企业网上银行网站网站建设好不好
  • 设计必备网站利用codeing做网站
  • 网站做弹窗广告吗网站开发的兼职网站
  • 网站建设有哪些工作需需要筹备中国建筑英才网官网手机版
  • 重庆网站建设mswzjs北京哪家公司做网站好
  • 网站连接到wordpress网页设计课程主要内容
  • 宿城区建设局网站如何把物流做免费网站
  • 晋江网站建设哪家公司专业淘宝网站建设目标是什么意思
  • 寿县城乡建设局网站怎么做自己的一个网站
  • 网站下载的文件在哪里如何加快网站打开速度
  • 专业做曝光引流网站网站建设的相关新闻
  • 网站主体负责人 法人跨境网站有哪些
  • 滕州市 网站建设公司计算机外包公司有哪些
  • flash源文件网站现在中型公司做网站用的是什么框架
  • asp做网站安全性免费发布信息的网站
  • 网站制作的内容包含百度提交收录
  • 淘宝上网站开发信用 网站 建设方案
  • 泉州市建设系统培训中心网站门户网站开发文档
  • 学校资源网站 建设方案asp网站静态化
  • wordpress网站的优化wordpress 进度插件
  • 用myeclipse做网站国内著名设计公司
  • 企业英语网站网站防站
  • 视差设计网站部门网站集约化建设方案
  • 网站备案年检网站建设管理员工工资多少钱
  • 形容网站开发的词移动互联网时代欧莱雅全渠道营销模式研究