第十四章拆分单词乘积为正数的最长子数组长度拆分单词力扣链接常见的子数组问题⇒要使用动态规划的解法那么要确定dp数组的含义⇒do[i]——以s[i]结尾的子数组可不可以用wordDict中的字符串来表示那么问题来了,如何判断字符串[j,i]在没在wordDict中呢?我们可以用一个哈希表.将wordDict导入一个哈希表中,count判读一个字符是否在哈希表中出现遍历方向——从前到后初始化——由于出现了j-1,那么我们可以让dp数组多开一个位置⇒利于我们初始化,由于都是从第一个位置往后推导dp状态的,那么dp[0]就初始化为trueclassSolution{public:boolwordBre
#导入库fromwordcloudimportWordCloudfromimageioimportimreadimportjieba#fromcollectionsimportCounter#读入txt文本数据text=open(r'C:\Users\15423\Desktop\词云制作\threekingdoms.txt',"r",encoding='utf-8').read()#结巴中文分词,生成字符串,默认精确模式,如果不通过分词,无法直接生成正确的中文词云cut_text=jieba.lcut(text)#去掉不重要的词removes=[',','。','"',':','曰','将军'
第十一章有效的字母异位词题目理解代码两数之和题目理解(暴力篇)代码题目理解(哈希篇)代码有效的字母异位词力扣链接给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词示例1:输入:s=“anagram”,t=“nagaram”输出:true示例2:输入:s=“rat”,t=“car”输出:false提示:1s和t仅包含小写字母题目理解因为题目的要求是:两个数组仅仅包含小写字母⇒一共才26个英语字母两个数组的大小是1⇒我们可以采用哈希的思想我们可以用一个数组(利用下标)来记录两个数组中每个字母出现的次数然后通过比较每个字母
第十二章打家劫舍题目理解步骤dp数组递推公式初始化遍历顺序代码打家劫舍II题目理解步骤递推公式初始化遍历顺序代码打家劫舍力扣链接你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额示例1:输入:[1,2,3,1]输出:4解释:偷窃1号房屋(金额=1),然后偷窃3号房屋(金额=3)偷窃到的最高金额=1+3=4示例2:输入:[2,7,9,3,1]输出:12解释:偷窃1号
第十章最佳买卖股票时机含冷冻期题目理解步骤dp数组递推公式初始化遍历方向代码买卖股票的最佳时机含手续费题目理解步骤dp数组递推公式初始化遍历方向代码最佳买卖股票时机含冷冻期力扣链接给定一个整数数组prices,其中第prices[i]表示第i天的股票价格。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):卖出股票后,你无法在第二天买入股票(即冷冻期为1天)注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)示例1:输入:prices=[1,2,3,0,2]输出:3解释:对应的交易状态为:[买入,卖出,冷冻期,买入,卖出]示例2:输
第九章买卖股票的最佳时机III题目理解步骤dp数组递推公式初始化遍历方向代码买卖股票的最佳时机IV题目理解步骤dp数组递推公式初始化遍历方向代码买卖股票的最佳时机III力扣链接给定一个数组,它的第i个元素是一支给定的股票在第i天的价格设计一个算法来计算你所能获取的最大利润。你最多可以完成两笔交易注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)示例1:输入:prices=[3,3,5,0,0,3,1,4]输出:6解释:在第4天(股票价格=0)的时候买入,在第6天(股票价格=3)的时候卖出,这笔交易所能获得利润=3-0=3。随后,在第7天(股票价格=1)的时候买入,在第8天(股票
第八章买卖股票的最佳时机题目理解步骤dp含义递推公式初始化遍历方向代码买卖股票的最佳时机II题目理解步骤dp含义递推公式初始化遍历方向代码买卖股票的最佳时机力扣链接给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0示例1:输入:[7,1,5,3,6,4]输出:5解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,最大利润=6-1=5。注意利润不能是7-1=6
第七章最长重复子数组题目理解步骤dp含义递推公式初始化为啥dp数组如此奇怪遍历顺序代码最长公共子序列题目理解步骤dp含义递推公式初始化遍历顺序代码总结最长重复子数组力扣链接给两个整数数组nums1和nums2,返回两个数组中公共的、长度最长的子数组的长度。示例1:输入:nums1=[1,2,3,2,1],nums2=[3,2,1,4,7]输出:3解释:长度最长的公共子数组是[3,2,1]。示例2:输入:nums1=[0,0,0,0,0],nums2=[0,0,0,0,0]输出:5提示:10题目理解暴力解法就是用两个for循环遍历两个数组,然后在套用一个while循环或者for循环从各个起始位置
第四章全排列题目理解步骤树形图递归函数递归结束条件单层逻辑代码全排列II题目理解步骤递归函数递归结束条件单层逻辑代码全排列力扣链接给定一个不含重复数字的数组nums,返回其所有可能的全排列。你可以按任意顺序返回答案。示例1:输入:nums=[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2:输入:nums=[0,1]输出:[[0,1],[1,0]]示例3:输入:nums=[1]输出:[[1]]提示:1-10nums中的所有整数互不相同题目理解很明显这是用回溯算法来写的相比较之前写的组合:startindex——下一层递归
第二章目标和题意分析步骤dp的含义递推公式dp数组初始化遍历顺序代码目标和力扣链接给你一个整数数组nums和一个整数target。向数组中的每个整数前添加‘+’或‘-’,然后串联起所有整数,可以构造一个表达式:例如,nums=[2,1],可以在2之前添加‘+’,在1之前添加‘-’,然后串联起来得到表达式“+2-1”。返回可以通过上述方法构造的、运算结果等于target的不同表达式的数目。示例1:输入:nums=[1,1,1,1,1],target=3输出:5解释:一共有5种方法让最终目标和为3。-1+1+1+1+1=3+1-1+1+1+1=3+1+1-1+1+1=3+1+1+1-1+1=3+1