力扣刷题记录(2023.10.17)斗鱼直播怎么关闭延迟

力扣刷题记录(2023.10.17)斗鱼直播怎么关闭延迟,

本文目录导读:

  1. 刷题背景
  2. 刷题计划
  3. 刷题过程

我决定开始系统地刷力扣题目,以提高自己的编程能力和算法思维,这是我第一次系统性地进行刷题练习,希望通过这个过程,能够逐步掌握各种算法和编程技巧。

刷题背景

力扣(LeetCode)是一个非常流行的算法练习平台,提供了大量的编程题目,按难度排序,适合不同水平的程序员练习和提升,我选择力扣作为练习平台,主要是因为它的题目质量高,而且每个题目都有详细的题解和讨论区,方便我学习和交流。 标 标是逐步完成力扣上的所有题目,从简单题开始,逐步挑战中等题和困难题,我计划在接下来的3个月内完成以下目标:

  1. 完成所有简单题:简单题通常涉及基础的数据结构和算法,掌握这些是进一步学习的基础。
  2. 完成所有中等题:中等题难度稍高,需要对基础算法有深入的理解和应用能力。
  3. 完成所有困难题:困难题难度较大,需要综合运用多种算法和数据结构,同时注重代码的优化和效率。

刷题计划

为了高效地完成刷题任务,我制定了以下计划:

  1. 每日刷题量:每天至少完成1-2道题目,确保每天都有进步。
  2. 分类刷题:按照简单题、中等题、困难题分类刷题,逐步提升。
  3. 定期复习:每周进行一次总结和复习,巩固之前学习的知识点。
  4. 记录错题:将做错的题目整理到错题本中,定期复习,避免重复犯错。

刷题过程

第一天:简单题练习

我选择了力扣上的第一道简单题——“两数之和”,这道题要求在一个整数数组中找到两个数,使得它们的和等于目标值,我决定先自己思考,再参考题解。 描述**:给定一个整数数组 nums 和一个目标值 target,请返回两个数的索引,使得它们的和等于 target,你可以假设每个输入只存在一个解。

思考过程

  1. 理解题目:我需要找到两个不同的元素,它们的和等于 target,并且返回的是这两个元素的索引。
  2. 初步想法:可以使用哈希表来存储已经遍历过的元素,然后对于每个元素,检查 target 减去当前元素是否在哈希表中,如果是,就找到了两个数。
  3. 实现细节:需要注意索引的顺序,以及避免重复索引。

代码实现

def twoSum(nums, target):
    hash_map = {}
    for i, num in enumerate(nums):
        complement = target - num
        if complement in hash_map:
            return [hash_map[complement], i]
        hash_map[num] = i
    return []

题解分析

力扣的题解中,这道题的解法非常经典,使用哈希表的时间复杂度为 O(n),空间复杂度为 O(n),我的实现与题解一致,说明我对哈希表的应用理解正确。

第二天:中等题练习

我选择了力扣上的中等题——“反转字符串”,这道题要求将一个字符串的字符顺序反转。 描述**:给定一个字符串,反转它的字符顺序。

思考过程

  1. 理解题目:反转字符串意味着将最后一个字符放到第一个位置,依此类推。
  2. 初步想法:可以使用切片操作,或者手动交换字符。
  3. 实现细节:需要考虑字符串的长度为奇数和偶数的情况,以及空字符串的情况。

代码实现

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

题解分析

力扣的题解中,这道题有多种解法,包括使用切片、手动反转字符等,我的实现非常简洁,但可能在处理空字符串或单字符字符串时需要考虑边界情况。

第三天:困难题练习

我选择了力扣上的困难题——“最长有效括号”,这道题要求找到一个字符串中最长的连续有效括号的长度。 描述*:给定一个字符串,包含 '(', ')' 和 '','*' 可以被视为 '(' 或 ')',请找到最长的连续有效括号的长度。

思考过程

  1. 理解题目:有效括号需要满足匹配的条件,而 '*' 可以灵活匹配,增加了题目的复杂性。
  2. 初步想法:可以使用动态规划的方法,记录每个位置的最长有效括号长度。
  3. 实现细节:需要考虑 '*' 的两种情况,即作为 '(' 或 ')'。

代码实现

def longestValidParentheses(s):
    dp = [0] * len(s)
    max_length = 0
    for i in range(1, len(s)):
        if s[i] == ')':
            if s[i-1] == '(' or s[i-1] == '*':
                dp[i] = dp[i-2] + 1
                if dp[i] > max_length:
                    max_length = dp[i]
            elif s[i-1] == ')':
                dp[i] = 0
    return max_length

题解分析

力扣的题解中,这道题的解法非常巧妙,使用动态规划的方法,通过记录每个位置的最长有效括号长度,从而高效地解决问题,我的实现与题解思路一致,但可能在处理 '*' 的情况时需要更仔细。

通过今天的刷题练习,我深刻体会到刷题的重要性,也认识到自己在编程和算法方面的不足之处,以下是我今天的收获和总结:

  1. 理解题目:在刷题时,首先要仔细阅读题目描述,明确问题要求,避免理解错误。
  2. 选择合适的算法:根据题目的难度和要求,选择合适的算法和数据结构,使用哈希表解决两数之和问题,使用动态规划解决最长有效括号问题。
  3. 注意边界情况:在编程实现时,要特别注意边界情况,例如空字符串、单字符字符串、全是括号的字符串等。
  4. 优化代码:在实现过程中,尽量优化代码的效率和空间复杂度,避免不必要的计算和存储。

我将继续坚持每天刷题,逐步提高自己的编程能力和算法思维,我相信,通过不断的练习和总结,我能够掌握更多的算法和编程技巧,为将来的职业发展打下坚实的基础。


接下来的计划

  1. 完成所有简单题:接下来的3个月,我将专注于完成力扣上的所有简单题,确保基础扎实。
  2. 逐步挑战中等题和困难题:在掌握简单题的基础上,逐步攻克中等题和困难题,提升自己的算法水平。
  3. 定期复习和总结:每周进行一次总结和复习,巩固之前学习的知识点,避免遗忘。
  4. 记录错题和优秀题解:将做错的题目和优秀的题解整理到错题本和优秀题解本中,定期复习和学习。

希望通过这个刷题计划,我能够在力扣上取得优异的成绩,同时提升自己的编程能力和算法思维,为未来的职业发展做好准备。

力扣刷题记录(2023.10.17)斗鱼直播怎么关闭延迟,

发表评论