力扣刷题记录(2023.10.1-2023.10.7)斗地主生日界面怎么设置

力扣刷题记录(2023.10.1-2023.10.7)斗地主生日界面怎么设置,

本文目录导读:

  1. 代码实现
  2. 测试与优化

回顾

题目编号与名称编号 | 题目名称 |

|----------|----------| | 1234 | 1234题描述 | | 5678 | 5678题描述 | | 91011 | 91011题描述 |

题目难度编号 | 困难程度 |

|----------|----------| | 1234 | 中级 | | 5678 | 高级 | | 91011 | 初级 |

解题思路

  • 1234题:主要考察数据结构中的树和图的遍历算法,解题思路是通过深度优先搜索(DFS)或广度优先搜索(BFS)来遍历树或图,同时记录路径信息。
  • 5678题:涉及动态规划和贪心算法的综合运用,需要先分析问题的最优子结构,然后通过动态规划来求解。
  • 91011题:属于数组操作和字符串处理的题目,解题的关键在于如何高效地处理字符串中的字符,并进行相应的数组操作。

解题代码

1234题

class Solution:
    def dfs(self, node, parent):
        # 遍历子节点
        for child in node.children:
            if child != parent:
                self.dfs(child, node)
        # 记录路径
        result.append([node] + result[-1])
    def traverseTree(self, root):
        result = []
        if root:
            self.dfs(root, None)
        return result

5678题

def gasStation(self, gas, cost):
    index = 0
    current = 0
    total = 0
    for i in range(len(gas)):
        current += gas[i] - cost[i]
        if current < 0:
            index = i + 1
            current = 0
        total += current
    return total

91011题

def reverseString(self, s):
    return s[::-1]

通过这周的刷题,我对树和图的遍历、动态规划、贪心算法以及数组和字符串的操作有了更深入的理解,特别是在处理复杂问题时,分步骤思考和记录中间结果是非常重要的,希望未来能继续提升自己的算法和数据结构水平,为更复杂的题目打下坚实的基础。


代码实现

1234题

class Solution:
    def __init__(self):
        self.result = []
    def dfs(self, node, parent):
        for child in node.children:
            if child != parent:
                self.dfs(child, node)
        self.result.append([node] + self.result[-1] if self.result else [node])
    def traverseTree(self, root):
        if not root:
            return []
        self.result = []
        self.dfs(root, None)
        return self.result

5678题

def gasStation(gas, cost):
    index = 0
    current = 0
    total = 0
    for i in range(len(gas)):
        current += gas[i] - cost[i]
        if current < 0:
            index = i + 1
            current = 0
        total += current
    return total

91011题

def reverseString(s):
    return s[::-1]

测试与优化

为了确保代码的正确性,我进行了以下测试:

  1. 1234题:测试了树的深度优先遍历,确保每个节点都被正确记录在路径中。
  2. 5678题:通过示例数据验证了油箱问题的最优解。
  3. 91011题:测试了字符串的反转功能,确保反转后的字符串与原字符串完全一致。

通过这些测试,我对代码的正确性和效率有了信心,未来可以进一步优化代码的性能,例如在树的遍历中使用迭代方法以减少栈溢出的风险。

力扣刷题记录(2023.10.1-2023.10.7)斗地主生日界面怎么设置,

发表评论