返回

力扣刷题,简单+中等(第三十期)

前端

力扣刷题,是我多年来保持的习惯,也是我提升编程技能的主要途径之一。为了帮助广大程序员提高编程技能,快速掌握算法和数据结构,我定期整理力扣刷题内容,每期精选十道简单和中等难度的题目,附有详细的解题思路和示例代码。欢迎大家关注我的博客,一起学习,共同进步!

本期刷题内容如下:

  1. 两数之和

    • 给你两个整数 ab,返回它们相加的结果。
    • 示例:
      • a = 1, b = 2,返回 3
      • a = -1, b = 2,返回 1
    • 解题思路:
      • 直接返回 a + b 即可。
  2. 两数相除

    • 给你两个整数 ab,返回它们的商。
    • 示例:
      • a = 10, b = 3,返回 3
      • a = 7, b = -2,返回 -3
    • 解题思路:
      • 直接返回 a / b 即可。
  3. 字符串反转

    • 给你一个字符串 s,返回它的反转字符串。
    • 示例:
      • s = "hello",返回 "olleh"
      • s = "A man, a plan, a canal: Panama",返回 "amanaP :lanac a ,nalp a ,nam A"
    • 解题思路:
      • 使用内置函数 reversed() 反转字符串即可。
  4. 最长公共前缀

    • 给你一个字符串数组 strs,返回它们的最长公共前缀。
    • 示例:
      • strs = ["flower", "flow", "flight"],返回 "fl"
      • strs = ["dog", "racecar", "car"],返回 ""
    • 解题思路:
      • 首先找到字符串数组中最短的字符串,然后逐个字符比较,直到遇到不相同的字符为止。
  5. 回文数

    • 给定一个整数 x,判断它是否回文数。
    • 示例:
      • x = 121,返回 true
      • x = -121,返回 false
      • x = 10,返回 false
    • 解题思路:
      • 将整数转换成字符串,然后比较字符串是否回文即可。
  6. 爬楼梯

    • 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 12 阶。有多少种不同的方法可以爬到楼顶?
    • 示例:
      • n = 2,返回 2
      • n = 3,返回 3
    • 解题思路:
      • 这个问题可以用动态规划来解决。假设 f(n) 表示爬到第 n 阶楼梯的不同方法数。那么 f(n) = f(n-1) + f(n-2)
  7. 最大子序和

    • 给定一个整数数组 nums,找到一个连续子数组,其和最大。
    • 示例:
      • nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4],返回 6
      • nums = [1],返回 1
    • 解题思路:
      • 这个问题可以用动态规划来解决。假设 f(i) 表示以第 i 个元素结尾的连续子数组的最大和。那么 f(i) = max(f(i-1) + nums[i], nums[i])
  8. 买卖股票的最佳时机

    • 给定一个数组 prices,其中 prices[i] 是某只股票第 i 天的价格。你只能买卖这只股票一次。请问你能够获得的最大利润是多少?
    • 示例:
      • prices = [7, 1, 5, 3, 6, 4],返回 5
      • prices = [7, 6, 4, 3, 1],返回 0
    • 解题思路:
      • 这个问题可以用动态规划来解决。假设 f(i) 表示在第 i 天卖出股票的最大利润。那么 f(i) = max(f(i-1), prices[i] - min(prices[0], ..., prices[i-1]))
  9. 单词搜索

    • 给定一个二维字符数组 board 和一个字符串 word,判断 word 是否存在于 board 中。
    • 示例:
      • board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED",返回 true
      • board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE",返回 true
      • board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB",返回 false
    • 解题思路:
      • 这个问题可以用回溯法来解决。从 board 中的每个元素开始,向四个方向进行搜索,直到找到 word 为止。
  10. N皇后问题

    • 给定一个 n 皇后的棋盘,请找到一种放置方式,使得任何两个皇后都不在同一行、同一列或同一斜线上。
    • 示例:
      • n = 4,返回以下一种解法:
      [".Q..",
       "...Q",
       "Q...",
       "..Q."]
      
    • 解题思路:
      • 这个问题可以用回溯法来解决。从第一行第一列开始,尝试放置皇后。如果放置成功,则继续放置下一行;如果放置失败,则回溯到上一行。

以上是本期力扣刷题内容,希望对大家有所帮助。如果您有任何问题,欢迎在评论区留言。