LeetCode简单题目(#27 #28 #35 #38)-2019.10.23-4道

清疚 2023-05-31 06:58 30阅读 0赞

leetcode题库中共有350道简单题目。
本文记录已解决的题目和代码。
本文中的序号是leetcode题目中的真实序号。

文章目录

  • 27 移除元素
    • 描述
    • 代码
  • 28 实现 strStr()
    • 描述
    • 代码
  • 35 搜索插入位置
    • 描述
    • 代码
  • 38 报数
    • 描述
    • 代码

27 移除元素

描述

给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

示例 1:
给定 nums = [3,2,2,3], val = 3,
函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。
你不需要考虑数组中超出新长度后面的元素。

代码

  1. class Solution(object):
  2. def removeElement(self, nums, val):
  3. """
  4. :type nums: List[int]
  5. :type val: int
  6. :rtype: int
  7. """
  8. while val in nums:
  9. nums.remove(val)
  10. return len(nums)

28 实现 strStr()

描述

实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,
在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

示例 1:
输入: haystack = “hello”, needle = “ll”
输出: 2
示例 2:
输入: haystack = “aaaaa”, needle = “bba”
输出: -1
说明:
当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

代码

  1. class Solution(object):
  2. def strStr(self, haystack, needle):
  3. """
  4. :type haystack: str
  5. :type needle: str
  6. :rtype: int
  7. """
  8. # if not needle:
  9. # return 0
  10. return haystack.find(needle)

35 搜索插入位置

描述

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。

示例 1:
输入: [1,3,5,6], 5
输出: 2
示例 2:
输入: [1,3,5,6], 7
输出: 4
示例 3:
输入: [1,3,5,6], 0
输出: 0

代码

  1. class Solution(object):
  2. def searchInsert(self, nums, target):
  3. """
  4. :type nums: List[int]
  5. :type target: int
  6. :rtype: int
  7. """
  8. for i in range(len(nums)):
  9. if nums[i] >= target:
  10. return i
  11. return i+1

38 报数

描述

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

  1. 1
  2. 11
  3. 21
  4. 1211
  5. 111221

1 被读作 “one 1” (“一个一”) , 即 11。
11 被读作 “two 1s” (“两个一”), 即 21。
21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。
注意:整数顺序将表示为一个字符串。

示例 1:
输入: 1 输出: “1”
示例 2:
输入: 4 输出: “1211”

代码

  1. class Solution(object):
  2. def countAndSay(self, n):
  3. """
  4. :type n: int
  5. :rtype: str
  6. """
  7. num_str = '1'
  8. count = 0
  9. temp_str = ''
  10. while n-1:
  11. num_len = len(num_str)
  12. if num_len == 1:
  13. count += 1
  14. else:
  15. for i in range(num_len-1):
  16. if num_str[i+1] == num_str[i]:
  17. count += 1
  18. else:
  19. temp_str = temp_str + str(count) + num_str[i]
  20. count = 1
  21. temp_str = temp_str + str(count) + num_str[num_len-1]
  22. num_str = temp_str
  23. temp_str = ''
  24. count = 1
  25. n -= 1
  26. return num_str

发表评论

表情:
评论列表 (有 0 条评论,30人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python 刷 leetcode 题目35

    75. 分类颜色 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,[原地][Link 1]对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此

    相关 LeetCode 35

    问题描述: 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例