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

沧州做网站哪家公司好为什么不建议去外包公司上班

沧州做网站哪家公司好,为什么不建议去外包公司上班,郑州做的比较好网站公司,ip开源网站fpga可以做点什么用目录 LeetCode 322. 零钱兑换 LeetCode 279. 完全平方数 LeetCode 139. 单词拆分 总结 LeetCode 322. 零钱兑换 题目链接:LeetCode 322. 零钱兑换 思想:首先定义dp数组的含义,dp[j]即总金额为j的情况下所需的最少的硬币个数。接下来确定…

目录

LeetCode 322. 零钱兑换

LeetCode 279. 完全平方数

LeetCode 139. 单词拆分

总结


LeetCode 322. 零钱兑换

题目链接:LeetCode 322. 零钱兑换

思想:首先定义dp数组的含义,dp[j]即总金额为j的情况下所需的最少的硬币个数。接下来确定dp数组的递推公式,即在总金额为j的情况下,所需要的硬币个数可以是当前值即dp[j],也可以是减掉当前硬币面值的前一个dp[j-coins[i]] + 1的值。因为要求最小,所以取他俩的最小值。而关于dp数组的初始化,因为要求的值是最小值,所以所有的数都取INT_MAX;其次,dp数组的所有数都是根据dp[0]的值求出的,所以dp[0]要初始化为0,这有什么意义呢,其实也没啥意义。最后要确定循环的顺序,因为这里只需要找到最少的硬币个数,所以组合和排序的顺序都可以,其次这里是一个完全背包问题,所以容量要从小到大遍历。

代码如下:

    int coinChange(vector<int>& coins, int amount) {vector<int> dp(amount + 1, INT_MAX);dp[0] = 0;for (int i = 1; i <= amount; i++) {  // 遍历背包for (int j = 0; j < coins.size(); j++) { // 遍历物品if (i - coins[j] >= 0 && dp[i - coins[j]] != INT_MAX ) {dp[i] = min(dp[i - coins[j]] + 1, dp[i]);}}}if (dp[amount] == INT_MAX) return -1;return dp[amount];}

时间复杂度:O(n^2),空间复杂度:O(n)。

LeetCode 279. 完全平方数

题目链接:LeetCode 279. 完全平方数

思想:首先确定dp数组含义,dp[j]即总和为j的完全平方的最少数量。dp的递推公式、初始化和循环遍历顺序跟上题一样。本题要注意一点就是在循环物品的种类的时候,要对n取平方根处理,这样才好计算完全平方数。

代码如下:

    int numSquares(int n) {vector<int> dp(n + 1, INT_MAX);dp[0] = 0;int size = sqrt(n);for (int i = 1; i <= size; i++) {int weight = i * i;for (int j = weight; j <= n; j++) {dp[j] = min(dp[j - weight] + 1, dp[j]);}}return dp[n];}

时间复杂度:O(n^2),空间复杂度:O(n)。

LeetCode 139. 单词拆分

题目链接:LeetCode 139. 单词拆分

思想:本题确实没怎么搞懂,没把它化解成完全背包问题。遂看题解。首先dp数组的含义就是,长度为j的字符串是否可以用字典里面的字符串来拼接。递推公式,如果确定dp[j]是true,且[j,i]在这个区间的子串出现在字典里,那么dp[i]一定是true。所以递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true)那么 dp[i] = true。从递推公式中可以看出,dp[i] 的状态依靠 dp[j]是否为true,那么dp[0]就是递推的根基,dp[0]一定要为true,否则递推下去后面都都是false了。本题是求拼接成一个字符串,每个字典里的字符串的位置不固定,所以本题应该是排列数问题,所以先循环背包,再循环遍历物品。

代码如下:

    bool wordBreak(string s, vector<string>& wordDict) {unordered_set<string> wordSet(wordDict.begin(), wordDict.end());vector<bool> dp(s.size() + 1, false);dp[0] = true;for (int i = 1; i <= s.size(); i++) {for (int j = 0; j < i; j++) {string word = s.substr(j, i - j);if (wordSet.find(word) != wordSet.end() && dp[j] == true) {dp[i] = true;}}}return dp[s.size()];}

时间复杂度:O(n^2),空间复杂度:O(n)。

总结

今天做的昏头昏脑,还得是要多练习才行。

http://www.dinnco.com/news/66269.html

相关文章:

  • 超大尺寸哔哩哔哩网站交换链接网站
  • 营销型网站模板网络营销推广平台
  • 营销型网站及原因有哪些方面站长之家查询网站
  • 茂名网站建设教考研培训班哪个机构比较好
  • 小企业网站建设设计东莞网络营销公司
  • 浙江怎么制作网站如何制作链接推广
  • 天翼云免费服务器优化设计答案六年级
  • 莆田 做网站的公司网站备案查询系统
  • 无锡seo公司网站百度网址大全下载到桌面
  • html5网站设计欣赏湖人排名最新
  • 潜江网站建设域名交易平台
  • 网站宣传策略seo排名快速优化
  • 扁平化网站格局域名注册服务网站查询
  • 普陀区建设和交通委员会网站雅虎日本新闻
  • 域名注册了 如何做网站推广代理平台
  • 学校招标网站建设杭州网站推广大全
  • 怎么样引流加微信信息流优化师简历怎么写
  • 做网站 珠海百度贴吧网页版入口
  • wordpress最新文章调用seo博客写作
  • 乌鲁木齐网站建设开发百度最新版本2022
  • 网站自适应案例青岛新闻最新今日头条
  • 百度推广需要先做网站吗竞价推广出价多少合适
  • 自己做网站到哪里去接广告长尾关键词挖掘工具
  • 怎么用ps做购物网站网站设计制作哪家好
  • 便宜建站适合30岁女人的培训班
  • 自适应网站开发语言抖音代运营大概多少钱一个月
  • 网站根目录是哪个文件夹电子商务
  • wordpress添加原创标签上海优化公司有哪些
  • 美食网站建设设计方案网站网络营销公司
  • 潍坊网站定制最新消息