当前位置:首页>python>Python版_Leetcode_hot100系列(16)--多维动态规划

Python版_Leetcode_hot100系列(16)--多维动态规划

  • 2026-01-30 05:08:17
Python版_Leetcode_hot100系列(16)--多维动态规划

62.不同路径

🎭 题目小剧场

想象你在一个迷宫的左上角,要走到右下角。你只能向右或向下移动,就像在棋盘上走格子,每一步都要做出选择。你需要计算出有多少种不同的走法!

💡 解题思路

动态规划解法:

  1. 确定状态:dpi 表示到达位置(i,j)的不同路径数

  2. 状态转移:dpi = dpi-1 + dpi(从上方或左方到达)

  3. 初始条件:第一行和第一列都为1(只有一种走法)

  4. 逐步计算整个网格

🐍 Python代码实现

class Solution:    def uniquePaths(self, m: int, n: int) -> int:        """        动态规划解法 - 时间复杂度O(m×n),空间复杂度O(n)        """        # 使用一维数组优化空间        dp = [1] * n        for i in range(1, m):            for j in range(1, n):                dp[j] = dp[j] + dp[j-1]        return dp[-1]

📊 复杂度分析

  • 时间复杂度:O(m×n) - 需要遍历整个网格

  • 空间复杂度:O(n) - 使用一维数组优化空间

🌟 算法精髓

这个算法的巧妙之处在于"空间优化"。我们不需要存储整个二维数组,只需要一行即可,因为当前行的计算只依赖于当前行和上一行的数据。

🎯 小白友好贴士

  • dp = [1] * n 初始化第一行,都为1

  • for i in range(1, m) 从第二行开始

  • for j in range(1, n) 从第二列开始

  • dp[j] = dp[j] + dp[j-1] 状态转移方程

  • return dp[-1] 返回右下角的路径数

🔍 算法执行过程示例

示例:m = 3, n = 7初始:dp = [1111111]1行(i = 0):保持不变  dp = [1111111]2行(i = 1):  j = 1: dp[1] = dp[1] + dp[0] = 1 + 1 = 2  j = 2: dp[2] = dp[2] + dp[1] = 1 + 2 = 3  j = 3: dp[3] = dp[3] + dp[2] = 1 + 3 = 4  j = 4: dp[4] = dp[4] + dp[3] = 1 + 4 = 5  j = 5: dp[5] = dp[5] + dp[4] = 1 + 5 = 6  j = 6: dp[6] = dp[6] + dp[5] = 1 + 6 = 7  dp = [1234567]3行(i = 2):  j = 1: dp[1] = dp[1] + dp[0] = 2 + 1 = 3  j = 2: dp[2] = dp[2] + dp[1] = 3 + 3 = 6  j = 3: dp[3] = dp[3] + dp[2] = 4 + 6 = 10  j = 4: dp[4] = dp[4] + dp[3] = 5 + 10 = 15  j = 5: dp[5] = dp[5] + dp[4] = 6 + 15 = 21  j = 6: dp[6] = dp[6] + dp[5] = 7 + 21 = 28  dp = [13610152128]结束:return dp[-1] = 28 ✅

🎯 核心思想总结

  1. 状态定义:明确dp数组的含义

  2. 状态转移:找到递推关系

  3. 初始条件:确定边界值

  4. 空间优化:减少不必要的存储


64.最小路径和

🎭 题目小剧场

想象你在一个数字迷宫的左上角,每走一步都要付出相应的"代价"。你要找到一条从左上角到右下角的路径,使得总代价最小。就像在棋盘上收集金币,每格都有不同数量的金币,你要规划路线收集最多的金币!

💡 解题思路

动态规划解法:

  1. 确定状态:dpi 表示到达位置(i,j)的最小路径和

  2. 状态转移:dpi = gridi + min(dpi-1, dpi)

  3. 初始条件:dp0 = grid0,第一行和第一列需要特殊处理

  4. 逐步计算整个网格

🐍 Python代码实现

class Solution:    def minPathSum(self, grid: List[List[int]]) -> int:        """        动态规划解法 - 时间复杂度O(m×n),空间复杂度O(n)        """        if not grid or not grid[0]:            return 0        m, n = len(grid), len(grid[0])        dp = [0] * n        for i in range(m):            for j in range(n):                if i == 0 and j == 0:                    dp[j] = grid[i][j]                elif i == 0:                    dp[j] = dp[j-1] + grid[i][j]                elif j == 0:                    dp[j] = dp[j] + grid[i][j]                else:                    dp[j] = min(dp[j], dp[j-1]) + grid[i][j]        return dp[-1]

📊 复杂度分析

  • 时间复杂度:O(m×n) - 需要遍历整个网格

  • 空间复杂度:O(n) - 使用一维数组优化空间

🌟 算法精髓

这个算法的巧妙之处在于"原地更新"。我们直接在输入网格上进行修改,或者使用一维数组,避免了额外的空间开销,同时保证了计算的正确性。

🎯 小白友好贴士

  • if not grid or not grid[0] 处理空网格

  • dp = [0] * n 初始化一维数组

  • if i == 0 and j == 0 处理起始点

  • elif i == 0 处理第一行

  • elif j == 0 处理第一列

  • dp[j] = min(dp[j], dp[j-1]) + grid[i][j] 状态转移方程

🔍 �算法执行过程示例

示例:grid = [  [131],  [151],  [421]]初始:dp = [000]1行(i = 0):  j = 0: dp[0= grid[0][0= 1  j = 1: dp[1= dp[0+ grid[0][1= 1 + 3 = 4  j = 2: dp[2= dp[1+ grid[0][2= 4 + 1 = 5  dp = [145]2行(i = 1):  j = 0: dp[0= dp[0+ grid[1][0= 1 + 1 = 2  j = 1: dp[1= min(dp[1], dp[0]) + grid[1][1= min(42+ 5 = 7  j = 2: dp[2= min(dp[2], dp[1]) + grid[1][2= min(57+ 1 = 6  dp = [276]3行(i = 2):  j = 0: dp[0= dp[0+ grid[2][0= 2 + 4 = 6  j = 1: dp[1= min(dp[1], dp[0]) + grid[2][1= min(76+ 2 = 8  j = 2: dp[2= min(dp[2], dp[1]) + grid[2][2= min(68+ 1 = 7  dp = [687]结束:return dp[-1= 7 验证:最小路径为 13111,和为7

🎯 核心思想总结

  1. 状态定义:明确dp数组的含义

  2. 状态转移:找到递推关系

  3. 边界处理:特殊处理第一行和第一列

  4. 空间优化:使用一维数组减少空间


5.最长回文子串

🎭 题目小剧场

想象你在玩一个找对称的游戏,给定一串字符,你要找出最长的对称片段。就像照镜子,左边的字符和右边的字符要完全一样,比如 "aba" 或 "abba"。

💡 解题思路

中心扩展法:

  1. 每个字符(或字符间隙)都可以作为回文中心

  2. 从中心向两边扩展,检查是否构成回文

  3. 处理两种情况:奇数长度(单字符中心)和偶数长度(字符间隙中心)

  4. 维护最长回文子串的起始位置和长度

🐍 Python代码实现

class Solution:    def longestPalindrome(self, s: str) -> str:        """        中心扩展法 - 时间复杂度O(n²),空间复杂度O(1)        """        if not s:            return ""        start = 0        max_length = 1        for i in range(len(s)):            # 奇数长度回文(中心为单个字符)            self.expandAroundCenter(s, i, i, start, max_length)            # 偶数长度回文(中心为字符间隙)            self.expandAroundCenter(s, i, i + 1, start, max_length)        return s[start:start + max_length]    def expandAroundCenter(self, s: str, left: int, right: int, start: int, max_length: int):        while left >= 0 and right < len(s) and s[left] == s[right]:            current_length = right - left + 1            if current_length > max_length:                max_length = current_length                start = left            left -= 1            right += 1        return start, max_length

📊 复杂度分析

  • 时间复杂度:O(n²) - n个中心,每个中心最多扩展n次

  • 空间复杂度:O(1) - 只使用常数额外空间

🌟 算法精髓

这个算法的巧妙之处在于"中心思想"。我们不直接枚举所有子串,而是枚举所有可能的中心,然后从中心向两边扩展,大大减少了计算量。

🎯 小白友好贴士

  • if not s: return "" 处理空字符串

  • start = 0, max_length = 1 初始化结果

  • for i in range(len(s)) 遍历所有可能中心

  • expandAroundCenter(s, i, i) 处理奇数长度

  • expandAroundCenter(s, i, i + 1) 处理偶数长度

  • while left >= 0 and right < len(s) and s[left] == s[right] 扩展条件

🔍 算法执行过程示例

示例:s = "babad"初始:start = 0, max_length = 11步:i = 0  奇数中心 (00):    left = 0right = 0, s[0= 'b' = s[0= 'b'    current_length = 1, max_length = 1start = 0    left = -1right = 1, 停止  偶数中心 (01):    left = 0right = 1, s[0= 'b' ≠ s[1= 'a'    停止2步:i = 1  奇数中心 (11):    left = 1right = 1, s[1= 'a' = s[1= 'a'    current_length = 1, max_length = 1start = 0    left = 0right = 2, s[0= 'b' ≠ s[2= 'b'    停止  偶数中心 (12):    left = 1right = 2, s[1= 'a' ≠ s[2= 'b'    停止3步:i = 2  奇数中心 (22):    left = 2right = 2, s[2= 'b' = s[2= 'b'    current_length = 1, max_length = 1start = 0    left = 1right = 3, s[1= 'a' = s[3= 'a'    current_length = 3, max_length = 3start = 1    left = 0right = 4, s[0= 'b' ≠ s[4= 'd'    停止  偶数中心 (23):    left = 2right = 3, s[2= 'b' ≠ s[3= 'a'    停止4步:i = 3  奇数中心 (33):    left = 3right = 3, s[3= 'a' = s[3= 'a'    current_length = 1, max_length = 3start = 1    left = 2right = 4, s[2= 'b' ≠ s[4= 'd'    停止  偶数中心 (34):    left = 3right = 4, s[3= 'a' ≠ s[4= 'd'    停止5步:i = 4  奇数中心 (44):    left = 4right = 4, s[4= 'd' = s[4= 'd'  current_length = 1, max_length = 3start = 1left = 3right = 5, 停止偶数中心 (45):left = 4right = 5, 停止结束:return s[1:1+3= "bab" ✅验证:最长回文子串为 "bab" 或 "aba",长度为3

🎯 核心思想总结

  1. 中心思想:每个字符和间隙都可以作为中心

  2. 双向扩展:从中心向两边同时扩展

  3. 奇偶处理:分别处理奇数和偶数长度的回文

  4. 实时更新:发现更长回文时立即更新结果


1143.最长公共子序列

🎭 题目小剧场

想象你有两串字符,像两条不同的项链。你要找出这两条项链上最长的相同字符序列,这些字符可以不连续,但必须保持原有的相对顺序。就像在两本书中找出最长的相同句子片段!

💡 解题思路

动态规划解法:

  1. 确定状态:dpi 表示text1的前i个字符和text2的前j个字符的最长公共子序列长度

  2. 状态转移:

    (1) 如果text1[i-1] == text2[j-1]:dpi = dpi-1 + 1

    (2) 如果text1[i-1] != text2[j-1]:dpi = max(dpi-1, dpi)

  3. 初始条件:dp0 = dpi = 0(空字符串的LCS为0)

  4. 逐步计算整个二维数组

🐍 Python代码实现

class Solution:    def longestCommonSubsequence(self, text1: str, text2: str) -> int:        """        动态规划解法 - 时间复杂度O(m×n),空间复杂度O(n)        """        m, n = len(text1), len(text2)        # 使用一维数组优化空间        dp = [0] * (n + 1)        for i in range(1, m + 1):            prev = 0  # 保存dp[i-1][j-1]的值            for j in range(1, n + 1):                temp = dp[j]  # 保存当前的dp[i-1][j]                if text1[i-1] == text2[j-1]:                    dp[j] = prev + 1                else:                    dp[j] = max(dp[j], dp[j-1])                prev = temp        return dp[n]

📊 复杂度分析

  • 时间复杂度:O(m×n) - m和n分别是两个字符串的长度

  • 空间复杂度:O(n) - 使用一维数组优化空间

🌟 算法精髓

这个算法的巧妙之处在于"空间优化"。我们观察到当前状态只依赖于左上方、上方和左方的状态,因此可以用一维数组加上一个临时变量来存储必要信息。

🎯 小白友好贴士

  • m, n = len(text1), len(text2) 获取字符串长度

  • dp = [0] * (n + 1) 初始化一维数组

  • prev = 0 保存左上角的值

  • temp = dp[j] 保存当前格子上方的值

  • if text1[i-1] == text2[j-1] 字符匹配的情况

  • dp[j] = prev + 1 匹配时长度加1

  • dp[j] = max(dp[j], dp[j-1]) 不匹配时取较大值

🔍 算法执行过程示例

示例:text1 = "abcde", text2 = "ace"初始:m = 5, n = 3, dp = [0, 0, 0, 0]第1行(i = 1, text1[0] = 'a'):prev = 0j = 1: text1[0] = 'a' == text2[0] = 'a'temp = dp[1] = 0dp[1] = prev + 1 = 1prev = temp = 0j = 2: text1[0] = 'a' != text2[1] = 'c'temp = dp[2] = 0dp[2] = max(dp[2], dp[1]) = max(0, 1) = 1prev = temp = 0j = 3: text1[0] = 'a' != text2[2] = 'e'temp = dp[3] = 0dp[3] = max(dp[3], dp[2]) = max(0, 1) = 1prev = temp = 0dp = [0, 1, 1, 1]第2行(i = 2, text1[1] = 'b'):prev = 0j = 1: text1[1] = 'b' != text2[0] = 'a'temp = dp[1] = 1dp[1] = max(dp[1], dp[0]) = max(1, 0) = 1prev = temp = 1j = 2: text1[1] = 'b' != text2[1] = 'c'temp = dp[2] = 1dp[2] = max(dp[2], dp[1]) = max(1, 1) = 1prev = temp = 1j = 3: text1[1] = 'b' != text2[2] = 'e'temp = dp[3] = 1dp[3] = max(dp[3], dp[2]) = max(1, 1) = 1prev = temp = 1dp = [0, 1, 1, 1]第3行(i = 3, text1[2] = 'c'):prev = 0j = 1: text1[2] = 'c' != text2[0] = 'a'temp = dp[1] = 1dp[1] = max(dp[1], dp[0]) = max(1, 0) = 1prev = temp = 1j = 2: text1[2] = 'c' == text2[1] = 'c'temp = dp[2] = 1dp[2] = prev + 1 = 2prev = temp = 1j = 3: text1[2] = 'c' != text2[2] = 'e'temp = dp[3] = 1dp[3] = max(dp[3], dp[2]) = max(1, 2) = 2prev = temp = 1dp = [0, 1, 2, 2]第4行(i = 4, text1[3] = 'd'):prev = 0j = 1: text1[3] = 'd' != text2[0] = 'a'temp = dp[1] = 1dp[1] = max(dp[1], dp[0]) = max(1, 0) = 1prev = temp = 1j = 2: text1[3] = 'd' != text2[1] = 'c'temp = dp[2] = 2dp[2] = max(dp[2], dp[1]) = max(2, 1) = 2prev = temp = 2j = 3: text1[3] = 'd' != text2[2] = 'e'temp = dp[3] = 2dp[3] = max(dp[3], dp[2]) = max(2, 2) = 2prev = temp = 2dp = [0, 1, 2, 2]第5行(i = 5, text1[4] = 'e'):prev = 0j = 1: text1[4] = 'e' != text2[0] = 'a'temp = dp[1] = 1dp[1] = max(dp[1], dp[0]) = max(1, 0) = 1prev = temp = 1j = 2: text1[4] = 'e' != text2[1] = 'c'temp = dp[2] = 2dp[2] = max(dp[2], dp[1]) = max(2, 1) = 2prev = temp = 2j = 3: text1[4] = 'e' == text2[2] = 'e'temp = dp[3] = 2dp[3] = prev + 1 = 3prev = temp = 2dp = [0, 1, 2, 3]结束:return dp[3] = 3 ✅验证:最长公共子序列为 "ace",长度为3

🎯 核心思想总结

  1. 状态定义:明确dp数组的含义

  2. 状态转移:找到递推关系

  3. 空间优化:使用一维数组减少空间

  4. 边界处理:正确处理空字符串情况


72.编辑距离

🎭 题目小剧场

想象你是一位文字编辑师,要把单词 "word" 变成 "word1"。你有三种操作:插入一个字符、删除一个字符、替换一个字符。每次操作都算一步,你的目标是找到最少的操作步骤。

💡 解题思路

动态规划解法:

  1. 确定状态:dpi 表示word1的前i个字符转换成word2的前j个字符所需的最少操作数

  2. 状态转移:

    (1) 如果word1[i-1] == word2[j-1]:dpi = dpi-1(无需操作)

    (2) 如果word1[i-1] != word2[j-1]:dpi = min(dpi-1 + 1, dpi + 1, dpi-1 + 1)

  3. 初始条件:dp0 = j(插入j个字符),dpi = i(删除i个字符)

  4. 逐步计算整个二维数组

🐍 Python代码实现

class Solution:    def minDistance(self, word1: str, word2: str) -> int:        """        动态规划解法 - 时间复杂度O(m×n),空间复杂度O(m×n)        """        m, n = len(word1), len(word2)        # 创建dp数组        dp = [[0] * (n + 1for _ in range(m + 1)]        # 初始化边界条件        for i in range(m + 1):            dp[i][0] = i  # 删除i个字符        for j in range(n + 1):            dp[0][j] = j  # 插入j个字符        # 填充dp数组        for i in range(1, m + 1):            for j in range(1, n + 1):                if word1[i-1] == word2[j-1]:                    dp[i][j] = dp[i-1][j-1]                else:                    dp[i][j] = min(                        dp[i-1][j] + 1,    # 删除                        dp[i][j-1] + 1,    # 插入                        dp[i-1][j-1] + 1   # 替换                    )        return dp[m][n]

📊 复杂度分析

  • 时间复杂度:O(m×n) - m和n分别是两个单词的长度

  • 空间复杂度:O(m×n) - 需要二维数组存储状态

🌟 算法精髓

这个算法的巧妙之处在于"状态定义"。通过定义清晰的子问题,将复杂的字符串转换问题分解为简单的字符比较问题,从而找到最优解。

🎯 小白友好贴士

  • m, n = len(word1), len(word2) 获取单词长度

  • dp = [[0] * (n + 1) for _ in range(m + 1)] 创建dp数组

  • dp[i][0] = i 删除i个字符

  • dp[0][j] = j 插入j个字符

  • if word1[i-1] == word2[j-1] 字符匹配的情况

  • dp[i][j] = dp[i-1][j-1] 匹配时无需操作

  • dp[i][j] = min(...) 不匹配时取最小操作数

🔍 算法执行过程示例

示例:word1 = "horse", word2 = "ros"初始:m = 5, n = 3dp = [  [0123],  [1000],  [2000],  [3000],  [4000],  [5000]]1行(i = 1, word1[0] = 'h'):  j = 1: word1[0] = 'h' != word2[0] = 'r'    dp[1][1] = min(dp[0][1] + 1, dp[1][0] + 1, dp[0][0] + 1)       = min(1 + 11 + 10 + 1) = 1  j = 2: word1[0] = 'h' != word2[1] = 'o'    dp[1][2] = min(dp[0][2] + 1, dp[1][1] + 1, dp[0][1] + 1)       = min(2 + 11 + 11 + 1) = 2  j = 3: word1[0] = 'h' != word2[2] = 's'    dp[1][3] = min(dp[0][3] + 1, dp[1][2] + 1, dp[0][2] + 1)       = min(3 + 12 + 12 + 1) = 32行(i = 2, word1[1] = 'o'):  j = 1: word1[1] = 'o' != word2[0] = 'r'    dp[2][1] = min(dp[1][1] + 1, dp[2][0] + 1, dp[1][0] + 1)       = min(1 + 12 + 11 + 1) = 2  j = 2: word1[1] = 'o' == word2[1] = 'o'    dp[2][2] = dp[1][1] = 1  j = 3: word1[1] = 'o' != word2[2] = 's'    dp[2][3] = min(dp[1][3] + 1, dp[2][2] + 1, dp[1][2] + 1)       = min(3 + 11 + 12 + 1) = 23行(i = 3, word1[2] = 'r'):  j = 1: word1[2] = 'r' == word2[0] = 'r'    dp[3][1] = dp[2][0] = 2  j = 2: word1[2] = 'r' != word2[1] = 'o'    dp[3][2] = min(dp[2][2] + 1, dp[3][1] + 1, dp[2][1] + 1)       = min(1 + 12 + 12 + 1) = 2  j = 3: word1[2] = 'r' != word2[2] = 's'    dp[3][3] = min(dp[2][3] + 1, dp[3][2] + 1, dp[2][2] + 1)       = min(2 + 12 + 11 + 1) = 24行(i = 4, word1[3] = 's'):  j = 1: word1[3] = 's' != word2[0] = 'r'    dp[4][1] = min(dp[3][1] + 1, dp[4][0] + 1, dp[3][0] + 1)       = min(2 + 14 + 13 + 1) = 3  j = 2: word1[3] = 's' != word2[1] = 'o'    dp[4][2] = min(dp[3][2] + 1, dp[4][1] + 1, dp[3][1] + 1)       = min(2 + 13 + 12 + 1) = 3  j = 3: word1[3] = 's' == word2[2] = 's'    dp[4][3] = dp[3][2] = 25行(i = 5, word1[4] = 'e'):  j = 1: word1[4] = 'e' != word2[0] = 'r'    dp[5][1] = min(dp[4][1] + 1, dp[5][0] + 1, dp[4][0] + 1)       = min(3 + 15 + 14 + 1) = 4  j = 2: word1[4] = 'e' != word2[1] = 'o'    dp[5][2] = min(dp[4][2] + 1, dp[5][1] + 1, dp[4][1] + 1)       = min(3 + 14 + 13 + 1) = 4  j = 3: word1[4] = 'e' != word2[2] = 's'    dp[5][3] = min(dp[4][3] + 1, dp[5][2] + 1, dp[4][2] + 1)       = min(2 + 14 + 13 + 1) = 3结束:return dp[5][3] = 3 ✅验证:horse → rse → rose → ros,共3步操作

🎯 核心思想总结

  1. 状态定义:明确dp数组的含义

  2. 状态转移:考虑插入、删除、替换三种操作

  3. 边界条件:处理空字符串的情况

  4. 最优选择:选择操作数最少的方案

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 07:38:21 HTTP/2.0 GET : https://f.mffb.com.cn/a/464900.html
  2. 运行时间 : 0.088671s [ 吞吐率:11.28req/s ] 内存消耗:4,625.70kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8fe2c728aaca39d9f58423be358add13
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000681s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001003s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000367s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000297s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000687s ]
  6. SELECT * FROM `set` [ RunTime:0.000187s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000626s ]
  8. SELECT * FROM `article` WHERE `id` = 464900 LIMIT 1 [ RunTime:0.000880s ]
  9. UPDATE `article` SET `lasttime` = 1770507501 WHERE `id` = 464900 [ RunTime:0.010083s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000387s ]
  11. SELECT * FROM `article` WHERE `id` < 464900 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000631s ]
  12. SELECT * FROM `article` WHERE `id` > 464900 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000394s ]
  13. SELECT * FROM `article` WHERE `id` < 464900 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000834s ]
  14. SELECT * FROM `article` WHERE `id` < 464900 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000822s ]
  15. SELECT * FROM `article` WHERE `id` < 464900 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001873s ]
0.090448s