279. 完全平方数 golang 动态规划

题目

类似题目:322. 零钱兑换
279. 完全平方数
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

示例 1:

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

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

图解

在这里插入图片描述

推导思路

分解为子问题求解
在这里插入图片描述
从而寻找动态方程。
在这里插入图片描述

解法

func numSquares(n int) int {dp:=make([]int,n+1)for i:=1;i<=n;i++{dp[i]=ifor j:=1;i-j*j>=0;j++{dp[i]=min(dp[i],dp[i-j*j]+1)}}return dp[n]
}
func min(x ,y int)int{if x>y{return y}return x
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382184.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划-01背包问题详解

read&#xff0c;write&#xff0c;comprehend

322. 零钱兑换 golang 动态规划

题目 零钱兑换 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1。 示例 1: 输入: coins [1, 2, 5], amount 11 输出: 3 解释: 11 5 5 1 示例 2: 输入…

377. 组合总和 Ⅳ golang 动态规划

题目 377. 组合总和 Ⅳ 类似322 给定一个由正整数组成且不存在重复数字的数组&#xff0c;找出和为给定目标正整数的组合的个数。 示例: nums [1, 2, 3] target 4 所有可能的组合为&#xff1a; (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1) 请注意…

LeetCode上读不懂题!看不懂测试用例的那些题(有生之年更新。。。)

文章目录599. 两个列表的最小索引总和521. 最长特殊序列 Ⅰ645. 错误的集合小彩蛋599. 两个列表的最小索引总和 假设Andy和Doris想在晚餐时选择一家餐厅&#xff0c;并且他们都有一个表示最喜爱餐厅的列表&#xff0c;每个餐厅的名字用字符串表示。 你需要帮助他们用最少的索…

746. 使用最小花费爬楼梯 golang 动态规划

746. 使用最小花费爬楼梯 746. 使用最小花费爬楼梯 数组的每个索引做为一个阶梯&#xff0c;第 i个阶梯对应着一个非负数的体力花费值 costi。 每当你爬上一个阶梯你都要花费对应的体力花费值&#xff0c;然后你可以选择继续爬一个阶梯或者爬两个阶梯。 您需要找到达到楼层顶…

474. 一和零 golang动态规划

474. 一和零 在计算机界中&#xff0c;我们总是追求用有限的资源获取最大的收益。 现在&#xff0c;假设你分别支配着 m 个 0 和 n 个 1。另外&#xff0c;还有一个仅包含 0 和 1 字符串的数组。 你的任务是使用给定的 m 个 0 和 n 个 1 &#xff0c;找到能拼出存在于数组中…

518. 零钱兑换 II golang动态规划

518. 零钱兑换 II 给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1: 输入: amount 5, coins [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 55 5221 52111 511111 示例 2: 输入: amount 3, co…

494. 目标和 golang 动态规划

题目 494. 目标和 给定一个非负整数数组&#xff0c;a1, a2, …, an, 和一个目标数&#xff0c;S。现在你有两个符号 和 -。对于数组中的任意一个整数&#xff0c;你都可以从 或 -中选择一个符号添加在前面。 返回可以使最终数组和为目标数 S 的所有添加符号的方法数。 示…

1360. 日期之间隔几天 golang

1360. 日期之间隔几天 请你编写一个程序来计算两个日期之间隔了多少天。 日期以字符串形式给出&#xff0c;格式为 YYYY-MM-DD&#xff0c;如示例所示。 示例 1&#xff1a; 输入&#xff1a;date1 “2019-06-29”, date2 “2019-06-30” 输出&#xff1a;1 示例 2&#…

1154. 一年中的第几天 golang

1154. 一年中的第几天 给你一个按 YYYY-MM-DD 格式表示日期的字符串 date&#xff0c;请你计算并返回该日期是当年的第几天。 通常情况下&#xff0c;我们认为 1 月 1 日是每年的第 1 天&#xff0c;1 月 2 日是每年的第 2 天&#xff0c;依此类推。每个月的天数与现行公元纪…

1185. 一周中的第几天 golang

1185. 一周中的第几天 给你一个日期&#xff0c;请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数&#xff1a;day、month 和 year&#xff0c;分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday…

golang time包梳理

import “time” 官方文档 func main() {fmt.Println(time.Now())// Parse解析一个格式化的时间字符串并返回它代表的时间fmt.Println(time.Parse("2006.01.02", "2012.02.11"))date : time.Now()// 判断两个时间是否相同&#xff0c;会考虑时区的影响&a…

179. 最大数 golang (自定义sort)

179. 最大数 给定一组非负整数&#xff0c;重新排列它们的顺序使之组成一个最大的整数。 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 说明: 输出结果可能非常大&#xff0c;所以你需要返回一个字符串而不是整数。 Code import ("so…

1356. 根据数字二进制下 1 的数目排序 golang

golang的自定义排序 根据数字二进制下 1 的数目排序 给你一个整数数组 arr 。请你将数组中的元素按照其二进制表示中数字 1 的数目升序排序。 如果存在多个数字二进制中 1 的数目相同&#xff0c;则必须将它们按照数值大小升序排列。 请你返回排序后的数组。 示例 1&#x…

LeetCode单链表题目测试代码(只需添加对应题目,本地即可debug)

本地模拟单链表 package single_listimport ("strconv" )/*** Definition for singly-linked list.* type ListNode struct {* Val int* Next *ListNode* }*/type ListNode struct {Val intNext * ListNode } // Add String method to use print func (l *L…

138. 复制带随机指针的链表 golang

138. 复制带随机指针的链表 这个题结构体特殊&#xff0c;需要更改上一篇博客的node结构体 给定一个链表&#xff0c;每个节点包含一个额外增加的随机指针&#xff0c;该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。 我们用一个由 n 个节点组成的链表…

160. 相交链表 golang

160. 相交链表 计算两个链表长度&#xff0c;让长的先走到两个链表一样长&#xff0c;然后找交点 编写一个程序&#xff0c;找到两个单链表相交的起始节点。 如下面的两个链表&#xff1a; 在节点 c1 开始相交。 示例 1&#xff1a; 输入&#xff1a;intersectVal 8, li…

86. 分隔链表 golang

86. 分隔链表 只把小的放在一边&#xff0c;大于的不用放到右边&#xff08;这个题的题目比较晦涩&#xff0c;很多人说看不懂题&#xff0c;我也没看懂&#xff0c;解法也没什么特殊&#xff0c;半天没读懂题&#xff0c;看了别人的解法&#xff09; 给定一个链表和一个特定值…

141. 环形链表 golang

141. 环形链表 给定一个链表&#xff0c;判断链表中是否有环。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有环。 示例 1&#xff1a; 输入&a…

142. 环形链表 II golang

142. 环形链表 II 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff…