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

leetcode动态规划问题总结 Python

目录

一、基础理论

二、例题

1. 青蛙跳台阶

2. 解密数字

3. 最长不含重复字符的子字符串

4. 连续子数组的最大和

5. 最长递增子序列

6. 最长回文字符串

7. 机器人路径条数

8. 礼物的最大价值


一、基础理论

动态规划其实是一种空间换时间的基于历史数据的递推算法,甚至有时连空间也可以节省。动态规划算法,需要 3 个步骤。第一步决定用于记录历史计算结果的数据结构,例如 dp[];第二步构建递推公式,例如 dp[n]=dp[n-1]+dp[n-2];第三步设定初始值和递推顺序,例如 dp[0]=0, dp[1]=1。

二、例题

1. 青蛙跳台阶

一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

示例:

输入:3

输出:3

本题首先使用 dp[i] 数据结构存储中间结算结果,表示 i 级台阶的跳法数量,由于要想跳到第 i 级台阶只能从第 i-1 级或者 i-2级台阶跳过来,所以递推公式为 dp[i] = dp[i-1] + dp[i-2],由于想要跳到第 1 级台阶只有一种跳法,要跳到第 2 级台阶有两种跳法,所以初始值 dp[1]=1, dp[2]=2。

def jumpFloor(n):if (n <= 2):return ndp = [0]*(n+1)           # 创建一个数组来保存历史数据,多补了一个用不到的0位dp[1] = 1                # 给出初始值dp[2] = 2for i in range(3, n+1):  # 通过关系式来计算dp[n]dp[i] = dp[i-1] + dp[i-2]return dp[n]

该问题还可以进一步扩展为:一只青蛙一次可跳上 1 级台阶,也可以跳上 2 级 … 它也可以跳上 n 级。求该青蛙跳上一个n级的台阶(n 为正整数)总共有多少种跳法。

扩展问题无法用动态规划来解,需要通过分析得到公式,具体为:

f(n)    = f(n-1) + f(n-2) + f(n-3) +… f(1)
f(n-1) =              f(n-2) + f(n-3) +… f(1)
f(n)    = 2*f(n-1)   n>1

2. 解密数字

现有一串神秘的密文 ciphertext,经调查,密文的特点和规则如下:

密文由非负整数组成,数字 0-25 分别对应字母 a-z

请根据上述规则将密文 ciphertext 解密为字母,并返回共有多少种解密结果。

示例:

输入: ciphertext = 216612

输出: 6

解释: 216612 解密后有 6 种不同的形式,分别是 "cbggbc","vggbc","vggm","cbggm","cqggbc" 和 "cqggm"

本题首先使用 dp[i] 表示长度为 i 的字符串的解法,然后分析递推公式。如果第 i-1 数字为 0,那 dp[i] == dp[i-1];如果第 i-1 数字为 1,那 dp[i] == dp[i-1] + dp[i-2];如果第 i-1 数字为 2,且第 i 数字小于 6,那 dp[i] == dp[i-1] + dp[i-2];如果第 i-1 数字大于 2,那 dp[i] == dp[i-1]。所以只需要 i-1 和 i 数字组成的数字大于等于 10 小于等于 25,则 dp[i] == dp[i-1] + dp[i-2],否则 dp[i] == dp[i-1]。需要注意,在使用 dp 时,我们在前面补一个用不到的 0,这样做的目的是让索引 i 与实际长度匹配,但是当需要访问 s 时需要注意 dp[i] 与 s[i-1] 对应。一定要理清楚 dp 与 s 的索引之间的关系,否则很容易搞混了。

def translateNum(num):s = str(num)dp = [1] * (len(s)+1)         # 定义状态列表,在0位置添加了一个1,以便于递推公式的进行,以及索引与实际长度匹配dp[1] = 1                     # 长度1时的解法for i in range(2, len(s)+1):  # 长度2到长度n的解法if int(s[i-2:i]) >9 and int(s[i-2:i]) < 26:  # dp[i]对应s[i-1]索引dp[i] = dp[i-1] + dp[i-2]else:dp[i] = dp[i-1]return dp[-1]

3. 最长不含重复字符的子字符串

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

示例 :

输入: "abcabcbb"

输出: 3      解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

该问题首先使用 dp[i] 表示以 s[i] 为结点的最长不包含重复字符的字符串长度,最终结果就是 dp 中的最大值。那递推公式很容易想到,如果 s[i] 不存在于以 s[i-1] 为结点的最长不包含重复字符的字符串中,那么 dp[i] = dp[i-1] + 1;如果s[i] 存在于以 s[i-1] 为结点的最长不包含重复字符的字符串中,且重复字符所在索引是 j,那么 dp[i] = i - j。此时引出一个问题,如何获取这个字符串,如何判断一个字符是否存在于这个字符串中,以及如何获取重复字符的索引,这个还是非常困难的。所以这里采用另外一种办法,可以使用字典数据结构把所有的字符和索引均存储起来,键是字符,值是索引,当字符存在重复时,会被覆盖,所以通过这个字典可以获取 s[j] 左侧是否存在重复字符,如果存在可以获得最近的索引,如果不存在可以使用默认值 -1 表示,那么此时就可以通过 i-j 与 dp[i-1] + 1 的大小比较以判断是否存在重复字符了,但这种办法会增加内存使用量。这里初始值 dp[0] = 1。

def lengthOfLongestSubstring(s):  # 本函数有很多优化点,但为了便于理解,这里没有优化if not s: return 0            # 如果为空,则返回 0  || 可优化掉dic = {}                      # 定义哈希表,用于获取最近相同字符的索引dic[s[0]] = 0                 # 初始化第一个字符对应的哈希表  || 可优化掉,直接放进循环里dp = [1] * len(s)             # 初始化第一个字符对应的 dp  || 可优化掉,直接使用一个变量值记录res = 1                       # 初始化第一个字符的 res 结果for i in range(1, len(s)):    # 从第二个字符开始处理j = dic.get(s[i], -1)     # 获取 s[i] 左侧最近相同元素的索引 jif dp[i-1] + 1 < i - j:   # 如果 i-j 大于 dp[i-1]+1 说明在 s[j] 并不存在于以 s[j-1] 为结点的最长无重复字符串中  || 可优化为min()函数dp[i] = dp[i-1] + 1else:                     # 反之dp[i] = i - jdic[s[i]] = i             # 哈希表记录每个字符,这会造成内存使用量偏高res = max(res, dp[i])return res

针对本问题,这里还有一个思路,即实时维护一个集合,当向右遍历字符串时,使得集合中的元素使用对应着当前的最长无重复字符串。那此时就需要一个左指针 left 和一个右指针 i,以及需要实时维护的集合 lookup。i 需要向右遍历,所以 i 对应一个 for 循环。每遍历一个 i 值,需要首先删除集合 lookup 中与 s[i] 重复的字符左侧的所有字符,这里使用了一个很巧妙的办法,即从 left 开始一直删除,直至不存在重复。最后需要将当前字符 s[i] 放入集合中,以完成针对 i 的遍历。此方案在空间消耗上要优于方案1。

def lengthOfLongestSubstring(s):if not s:return 0left = 0                      # 左指针lookup = set()                # 字典max_len = 0cur_len = 0for i in range(len(s)):       # i是右指针,每遍历一个i,lookup都是由left到i的元素组成的字典cur_len += 1while s[i] in lookup:     # 每遍历一个i,删除lookup中的重复元素,并同步修改leftlookup.remove(s[left])left += 1cur_len -= 1          # 附带着同步修改当前i对应字符串的长度if cur_len > max_len:max_len = cur_lenlookup.add(s[i])return max_len

4. 连续子数组的最大和

输入一个长度为 n 的整型数组 array,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。

示例:

输入:[1,-2,3,10,-4,7,2,-5]

输出:18

该问题取 dp[i] 作为以 s[i] 为结尾的连续子数组的最大和,那 max(dp) 为最终结果。递推公式为 if dp[i-1]>0: dp[i]=dp[i-1]+s[i] else: dp[i]=s[i]。

def maxSubArray(nums):dp = [nums[0]] * len(nums)for i in range(1, len(nums)):if dp[i-1] > 0:dp[i] = dp[i-1] + nums[i]else:dp[i] = nums[i]return max(dp)

如果不仅想要获取最大和,还需要获取最大和所对应的字符串,那就需要增加几个变量实时记录当前 dp[i] 所对应的字符串,这里其实属于滑动窗口问题了,滑动窗口的右边界很容易界定,就是遍历的参数,左边界不太好想清楚,其实左边界只有在 dp[i-1] 小于 0 的时候才会更新,且更新为 i,想明白了这一点,那就好编程了。

def maxSubArray(nums):dp = [nums[0]] * len(nums)max_value = nums[0]beign = 0end = 0max_beign = 0max_end = 0for i in range(1, len(nums)):if dp[i-1] > 0:dp[i] = dp[i-1] + nums[i]else:dp[i] = nums[i]beign = i        # 这个是最关键的点,需要想清楚end = iif dp[i] > max_value:max_value = dp[i]max_beign = beignmax_end = endreturn (max_value, nums[max_beign:max_end+1])

5. 最长递增子序列

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

示例:

输入:nums = [10,9,2,5,3,7,101,18]

输出:4    解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。

该问题选用 dp 作为中间数据存储结构,以 dp[i] 表示以 s[i] 为结尾的最大递增子序列长度。接下来是递推公式,首先想到的是与 dp[i-1] 之间的关系,但是这次的子序列是允许跳跃的,所以不一定只是与 dp[i-1] 之间有关系,所以仔细想清楚后,发现 dp[i] 其实与 dp[0]...dp[i-1] 都有关系,需要找出来的是在 s[i]>s[index] 前提下找到 max(dp[index]...)。

def lengthOfLIS(nums):dp = [1]*len(nums)for i in range(len(nums)):for j in range(i):if nums[i] > nums[j]:dp[i] = max(dp[i], dp[j]+1)return max(dp)

如果想要同步获取这个子序列,那需要定义一个变量 result 保存所有的最长递增子序列,reslut[i] 存储的是以 s[i] 为结尾的最长递增子序列。然后在更新 dp 的时候同步更新 result。这里需要特别注意的是 [[]]*len(nums) 的方式属于浅拷贝,更新任何一个 [] 都会同步影响其它 []。在做 List 的整体赋值时一定注意好是需要赋值、浅拷贝还是深拷贝。深拷贝可以使用 copy 包或者 [:] 运算符。

import copydef lengthOfLIS(nums):dp = [1]*len(nums)max_dp = 1max_i = 0# results = [[]]*len(nums)                # 不能这样写,这是浅拷贝results = [[] for _ in range(len(nums))]  # 记录以s[i]结尾的最长递增子序列for i in range(len(nums)):for j in range(i,-1,-1):              # 检查i之前所有序列if nums[i] > nums[j]:             # 前提是s[i]大于s[j]if dp[i] < dp[j] + 1:         # 次之是序列长度要更长,因为存在相等的情况,所以存在答案不唯一dp[i] = dp[j] + 1results[i] = copy.deepcopy(results[j])  # 注意这里一定要用深拷贝# results[i] = results[j][:]            # 注意这里一定要用深拷贝results[i].append(nums[i])if max_dp < dp[i]:max_dp = dp[i]max_i = ireturn (dp[max_i], results[max_i])

6. 最长回文字符串

给你一个字符串 s,找到 s 中最长的回文字符串。

示例 :

输入:s = "babad"

输出:"bab"        解释:"aba" 同样是符合题意的答案。

本题采用二维 dp 作为中间存储数据结构,dp[i,j] 表示 s[i] 到 s[j] 是否为回文字符串,主对角线表示每个单独的字符均为长度 1 的回文字符,如果首尾两个元素相等,中间部分也是回文字符串,那当前字符串也为回文字符串,所以递推公式为 dp[i,j] = dp[i+1,j-1] and s[i]==s[j],从递推公式可以得到遍历输出是 i 从大到小 j 从小到大,至此可以获取任意字符串是否为回文字符串。在遍历的同时记录下最长长度和对应的起止点。

def longest_palindrome(s):dp = [[True]*len(s) for _ in range(len(s))]     # 注意深浅拷贝问题,直接相乘属于浅拷贝max_len = 1max_beign = 0max_end = 0for i in range(len(s)-2, -1, -1):for j in range(i+1, len(s)):dp[i][j] = dp[i+1][j-1] and s[i]==s[j]if dp[i][j] and max_len < j-i+1:        # 记录最长长度和对应起始终止位置max_len = j-i+1max_beign = imax_end = jreturn (max_len, s[max_beign:max_end+1])

本题还可以采用中心扩展法,即定义一个函数可以实现通过两边扩展遍历的方式寻找最长回文字符串,返回回文字符串的长度和起始点,然后遍历所有字符,检查每个字符对应的最长回文字符串,即可获取最长回文字符串。暴力遍历法的时间复杂度是O3,空间复杂度是O1,而动态规划的时间复杂度是O2,空间复杂度是O1,最后中心扩展法的时间复杂度是O2,空间复杂度是O1。

def longest_palindrome(s):def check(s, i, j):                             # 检查从i和j向两边扩散的字符串是否是回文字符串while i>=0 and j<len(s) and s[i]==s[j]:     # 实际仅仅用于 i=j 或者 i=j-1 两种情况i -= 1j += 1return j-i-1, i+1, j-1                      # 返回回文字符串的长度和起始以及终止点max_len = 1max_beign = 0max_end = 0for i in range(len(s)):len1, left1, right1 = check(s, i, i)len2, left2, right2 = check(s, i, i+1)if max_len < max(len1, len2):max_len = max(len1, len2)if len1 >= len2:max_beign = left1max_end = right1else:max_beign = left2max_end = right2    return s[max_beign:max_end+1]            

7. 机器人路径条数

一个机器人位于一个 mxn 网格的左上角(起始点在上图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。问总共有多少条不同的路径?

示例:

输入:m=3, n=7

输出:28

本问题需要准备一个二维的 dp 数据结构记录中间过程,dp[i,j] 表示从起点到 (i,j) 位置的路径条数,dp[-1,-1]即为最终结果。那递推公式显然就是 dp[i,j]=dp[i-1,j]+dp[i,j-1]。初始条件,第一行和第一列全部为1,递推顺序是第二行开始从左到右,从上到下。

def uniquePaths(m, n):dp = [[1 for _ in range(n)] for _ in range(m)]for i in range(1, m):for j in range(1, n):dp[i][j] = dp[i - 1][j] + dp[i][j - 1]return dp[-1][-1]

8. 礼物的最大价值

在一个 mxn 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?

示例:

输入:[ [1,3,1], [1,5,1], [4,2,1] ]

输出:12        解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物

本问题需要准备一个二维的 dp 数据结构记录中间过程,dp[i,j] 表示从起点到 (i,j) 位置的最多礼物,dp[-1,-1] 即为最终结果。那递推公式显然就是 dp[i,j]=max(dp[i-1,j]+dp[i,j-1])+grid[i,j]。初始条件,第一行和第一列全部为累计求和结果,递推顺序是第二行开始从左到右,从上到下。

def maxValue(grid):m, n = len(grid), len(grid[0])dp = [[grid[0][0] for _ in range(n)] for _ in range(m)]for i in range(1, m):dp[i][0] = dp[i-1][0] + grid[i][0]for j in range(1, n):dp[0][j] = dp[0][j-1] + grid[0][j]for i in range(1, m):for j in range(1, n):dp[i][j] = max(dp[i-1][j], dp[i][j-1]) + grid[i][j]return dp[-1][-1]

相关文章:

leetcode动态规划问题总结 Python

目录 一、基础理论 二、例题 1. 青蛙跳台阶 2. 解密数字 3. 最长不含重复字符的子字符串 4. 连续子数组的最大和 5. 最长递增子序列 6. 最长回文字符串 7. 机器人路径条数 8. 礼物的最大价值 一、基础理论 动态规划其实是一种空间换时间的基于历史数据的递推算法&…...

strtok函数的介绍

_str指被分解的字符串 delim指分隔符字符串 返回类型是指针 strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串&#xff0c;参数delim则为分割字符串中包含的所有字符。当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,则会将该字符改为\0 字符…...

CF1909_C. Heavy Intervals题解

CF1909_C. Heavy Intervals题解 题目传送门&#xff08;Problem - C - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/contest/1909/problem/C&#xff09;。 题目翻译如下&#xff1a;&#xff08;图片来源&a…...

【Python机器学习】理论知识:决策树

决策树是广泛用于分类和回归任务的模型&#xff0c;本质上是从一层层if/else问题中进行学习&#xff0c;并得出结论。这些问题类似于“是不是”中可能问到的问题。 决策树的每个结点代表一个问题或一个包含答案的终结点&#xff08;叶结点&#xff09;。树的边奖问题的答案与将…...

天软特色因子看板 (2024.01 第2期)

该因子看板跟踪天软特色因子A04001(当日趋势强度)&#xff0c;该因子为反映股价走势趋势强弱&#xff0c;用以反映股价走势趋势强弱&#xff0c;abs(值)越接近1&#xff0c;趋势 性越强&#xff0c;符号代表涨跌方向 今日为该因子跟踪第2期&#xff0c;跟踪其在SH000905 (中证5…...

java智慧医院互联网智慧3D导诊系统源码,经由智慧导诊系统多维度计算,准确推荐科室

什么是智慧导诊系统? 简单地说&#xff0c;智慧导诊系统是一种利用人工智能技术&#xff0c;为医生提供帮助的系统。它可以通过分析患者的症状和病史为医生提供疾病诊断和治疗方案的建议。 系统介绍&#xff1a; 医院智慧导诊系统是在医院中使用的引导患者自助就诊挂号&…...

WiFi7: MLD寻址

原文:MLD使用MLD MAC address唯一的标识本MLD。 MLD下的STA(s)使用与之不同的MAC address。 NOTE MLD MAC address可以和其下的某个STA的MAC address相同或者不同于任一MAC Address。 原文:对于individually addressed 帧。以下规则适用: Address 2(TA)设置为STA的MAC Add…...

laravel-admin之 浏览器自动填充密码(如果需要渲染数据库密码的话,首先确认数据库密码是否可以逆向解密)

参考 https://blog.51cto.com/u_10401840/5180106 为什么浏览器端保存的密码一直自动写入到$form->password 解决办法 2、在页面进入的时候&#xff0c;默认表单的type值为text&#xff1b;推荐指数&#xff1a;2颗星 5、设置表单的readonly属性;推荐指数&#xff1a;4颗…...

jquery图形验证码

效果展示 js图形随机验证码&#xff08;表单验证&#xff09; html代码片段 <form class"formwrap"><div class"item"><input type"text" id"code_input" value"" placeholder"请输入验证码"/>…...

dp专题10 目标和

本题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 根据这道题&#xff0c;可以通过暴力的方法进行取 号或者 - 号 两个操作&#xff0c;通过当刚好得到 target 的时候 答案 1&#xff0c;但是通过长度是 20 &#xff0c;操…...

详解 docker 镜像制作的两种方式

概要 制作Docker镜像一般有2种方法&#xff1a; 通过Dockerfile&#xff0c;完成镜像的创建使用仓库中已有的镜像&#xff0c;安装自己使用的软件环境后完成新镜像创建 docker 常用命令 docker build: 用于构建 Docker 镜像。该命令可以从 Dockerfile 构建镜像&#xff0c;…...

selenium元素单击不稳定解决方法

selenium自动化测试过程中&#xff0c;经常会发现某一元素单击&#xff0c;很不稳定&#xff0c;有时候执行了点击没有反映。 以下总结两种解决方法&#xff1a;都是通过js注入的方式去点击。 1.F12查一看&#xff0c;要点击的按钮&#xff0c;或连接&#xff0c;有没有οncl…...

vue3中vite使用sass

引用&#xff1a;https://blog.csdn.net/weiliang_66/article/details/132469597 npm install sass -d配置vite.config.js: css: {preprocessorOptions: {scss: {additionalData:import "/assets/styles/main.scss";}}}创建对应的 main.sass...

centos 8.0 安装sysbench 1.0.17

序号步骤说明执行命令执行结果备注1 下载并解压sysbench-1.0.17.zip sysbench-1.0.17.zip2安装依赖文件 yum install automake libtool -y yum install /usr/include/libpq-fe.h 3安装sysbench cd sysbench-1.0.17 ./autogen.sh ./configure \ --prefix/sysbench \ --with-pgsq…...

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统

LabVIEW开发分布式光纤油气管道泄漏检测及预警系统 随着油气工业的发展&#xff0c;管道泄漏成为一个严峻的安全问题。本文介绍了一种基于LabVIEW的分布式光纤油气管道泄漏检测及预警系统的设计思路和组成结构。系统包括硬件和软件两部分&#xff0c;其中硬件部分详细阐述了分…...

Go后端开发 -- Go Modules

Go后端开发 – Go Modules 文章目录 Go后端开发 -- Go Modules一、什么是Go Modules?二、GOPATH的工作模式1.GOPATH模式2.GOPATH模式的弊端 三、Go Modules模式创建项目1.go mod命令2.go mod环境变量3.使用Go Modules初始化项目4.修改模块的版本依赖关系 四、Go Modules下impo…...

基于det_keypoint_unite的ROS功能包(jetson部署)

文章目录 硬件软件FastDeploy编译CMakeLists.txt头文件源代码硬件 Jetson AGX Orin 64GB 软件 gcc/g++ >= 5.4(推荐8.2)cmake >= 3.10.0jetpack >= 4.6.1opencv=4.2.0FastDeploy编译 git clone https://github.com/PaddlePaddle/FastDeploy.git cd FastDeploy mkdi…...

TS 36.211 V12.0.0-下行(8)-调制和上变频

本文的内容主要涉及TS 36.211&#xff0c;版本是C00&#xff0c;也就是V12.0.0。...

基于SSM酒店后台管理系统【源码】【最详细运行文档】

基于SSM酒店后台管理系统【源码】【最详细运行文档】 功能简介技术描述运行准备♝项目运行访问项目 演示图✅源码获取 &#x1f4a1; 「分享」 大家好&#xff0c;最近几年在酒店后台管理系统非常流行&#xff0c;无论是上课的项目或者是一些毕设都会以酒店后台管理系统举例说…...

利用Python实现每日新闻早报推送

本文将介绍如何使用Python编写简单的逻辑&#xff0c;通过调用API接口实现每日新闻推送功能。 步骤&#xff1a; 导入所需的库&#xff1a; 在代码的开头&#xff0c;我们需要导入所需的库。通常&#xff0c;我们会使用requests库来发送HTTP请求&#xff0c;以获取新闻数据。 …...

图像分割-Grabcut法

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割-Grabcut法(C#)-CSDN博客 GrabCut是一种基于图像分割的技术&#xff0c;它可以用于将图像…...

性能测试浅谈

早期的性能测试更关注后端服务的处理能力。 一个用户去访问一个页面的请求过程&#xff0c;如上图。 数据传输时间 当你从浏览器输入网址&#xff0c;敲下回车&#xff0c;开始... 真实的用户场景请不要忽视数据传输时间&#xff0c;想想你给远方的朋友写信&#xff0c;信件需…...

媒体运营常用的ChatGPT通用提示词模板

媒体平台选择&#xff1a;如何选择合适的媒体平台&#xff0c;确保内容的有效传播&#xff1f; 内容策划与创作&#xff1a;如何策划和创作高质量的内容&#xff0c;吸引和留住目标受众&#xff1f; 内容发布与推广&#xff1a;如何有效地发布和推广内容&#xff0c;提高内容…...

Java学习苦旅(二十一)——泛型

本篇博客将详细讲解Java中的泛型。 文章目录 泛型的定义语法示例 泛型类语法示例类型边界语法示例 类型擦除通配符语法示例上界语法示例 下界语法示例 裸类型泛型方法语法示例 泛型的限制结尾 泛型的定义 语法 class 泛型类名称<类型形参列表> {//这里可以使用类型参数…...

具备闭环思维的测试才更充分

测试工作的终极目标是为了保障产品的质量。如果用同一个维度衡量测试人员的业务水平&#xff0c;简单粗暴一些&#xff1a;那就是针对同一款产品&#xff0c;哪个测试人员发现的bug多&#xff0c;哪个测试人员的测试理论与实践水平相对来说还是高一些。 前两天组长在群里分析了…...

flask web学习之模板(一)

文章目录 一、模板基本用法1.1 定界符1.2 模板语法1.3 渲染模板 二、模板辅助工具2.1 上下文2.2 全局对象2.3 过滤器2.4 测试器2.5 模板环境对象 在动态web程序中&#xff0c;视图函数返回的HTML数据往往需要根据相应的变量&#xff08;比如查询参数&#xff09;动态生成。当HT…...

RedisInsight - Redis官方可视化工具

一、RedisInsight 简介 RedisInsight 是一个直观高效的 Redis GUI 管理工具&#xff0c;它可以对 Redis 的内存、连接数、命中率以及正常运行时间进行监控&#xff0c;并且可以在界面上使用 CLI 和连接的 Redis 进行交互&#xff08;RedisInsight 内置对 Redis 模块支持&#…...

Matlab定义函数计算斐波那契数列

以下是使用 MATLAB 定义函数计算并输出斐波那契数列前 200 个数的示例代码&#xff1a; function result fibonacci(n)if n < 1 || n > 200result NaN;elseif n 1 || n 2result 1;elseresult fibonacci(n-1) fibonacci(n-2);end endn 200; result fibonacci(n)…...

计算机网络面试题总结

总结自Network | JavaGuide(Java面试 学习指南) 什么是OSI7层模型&#xff1f; 什么是TCP/IP 四层模型&#xff1f; 为什么网络要分层&#xff1f; 应用层有哪些常见的协议&#xff1f; 传输层有哪些常见的协议&#xff1f; 网络层有哪些常见的协议&#xff1f; 从输入…...

视频转为序列图的软件,让视频批量转为序列图

你是否曾经遇到过这样的困境&#xff1a;需要将一段视频转为一系列的图片&#xff0c;但却没有合适的工具来完成&#xff1f;或许你曾经手动截图&#xff0c;或者用其他方式&#xff0c;但结果往往不尽如人意&#xff0c;图片质量差、色彩失真、画面不清晰。现在&#xff0c;让…...

网站建设数据库系统/站长之家查询的网址

什么是自动垃圾回收&#xff1f; 自动垃圾回收是一种在堆内存中找出哪些对象在被使用&#xff0c;还有哪些对象没被使用&#xff0c;并且将后者删掉的机制。所谓使用中的对象&#xff08;已引用对象&#xff09;&#xff0c;指的是程序中有指针指向的对象&#xff1b;而未使用中…...

发布悬赏任务的推广平台/北京seo服务商

Java程序员&#xff0c;eclipse或者idea是常备的开发工具。idea又是近几年非常火爆的开发新宠了(低配电脑除外)&#xff0c;推荐几个提升效率的工具&#xff0c;并收集几个比较好的教程放在这里。 JRebel for IntelliJ 安装参考: https://blog.csdn.net/weixin_42831477/art…...

dede网站后台模板/百度云电脑网页版入口

上一篇跟文章点击量有关的还是如何刷访问量的事情&#xff0c;写博客快一年&#xff0c;自己看了下自己二十多篇文章的点击量给程序员喜欢看的文章类型做一个总结吧&#xff0c;排名不分先后&#xff08;当然也可以分先后&#xff09;。 1.某知名公司/大佬出的新东西的解决方案…...

wordpress增加文章404/广州优化疫情防控举措

从e.getMessage()为null看Java异常机制参考文章&#xff1a; &#xff08;1&#xff09;从e.getMessage()为null看Java异常机制 &#xff08;2&#xff09;https://www.cnblogs.com/guanghe/p/10058254.html 备忘一下。...

asp网站源码后台密码存放在那个文件里?/西安seo顾问培训

开始将mobile与AI进行靠拢了&#xff0c;RL,FL,DL一网打尽&#xff0c;先多看看survey再说。本文主要来自于Federated Machine Learning: Concept and Applications&#xff0c;主要介绍了使用Federated Machine Learning的原因&#xff0c;常用的一些概念&#xff0c;以及目前…...

wordpress 色 片段/网站服务器ip地址查询

所谓的异常就是指在程序运行当中所发生的不正常事件,它会中止程序的运行,导致异常的的发生主要来自 代码错误,包括语法错误,逻辑错误,这些都是开发人员造成的 资源不可以,这是由系统访问了未经授权的资源而引起的错误 在.net中,公共语言运行库也就是…...