• Leetcode 26,27,28, 22, 873


    26. 删除排序数组中的重复项

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

    不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

    示例 1:

    给定数组 nums = [1,1,2],

    函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。

    你不需要考虑数组中超出新长度后面的元素。
    示例 2:

    给定 nums = [0,0,1,1,1,2,2,3,3,4],

    函数应该返回新的长度 5, 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。


    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution:
    def remove_duplicates(self, nums):
    if not nums:
    return 0
    count = 0

    for i in range(len(nums)):
    if nums[count] != nums[i]:
    count += 1
    nums[count] = nums[i]
    return count+1




    27.移出元素

    给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。

    不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

    元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

    示例 1:

    给定 nums = [3,2,2,3], val = 3,

    函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。

    你不需要考虑数组中超出新长度后面的元素。
    示例 2:

    给定 nums = [0,1,2,2,3,0,4,2], val = 2,

    函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。

    注意这五个元素可为任意顺序。

    你不需要考虑数组中超出新长度后面的元素。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/remove-element
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
    for i in range(len(nums)-1, -1, -1):
    if nums[i] == val:
    nums.pop(i)
    return len(nums)

    实现 strStr() 函数。

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

    示例 1:

    输入: haystack = "hello", needle = "ll"
    输出: 2
    示例 2:

    输入: haystack = "aaaaa", needle = "bba"
    输出: -1

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/implement-strstr
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution:
    def strStr(self, haystack: str, needle: str) -> int:

    for i in range(len(haystack) - len(needle) + 1):
    if haystack[i: i + len(needle)] == needle:
    return i
    return -1

    22.全排列

    给定一个没有重复数字的序列,返回其所有可能的全排列。

    示例:

    输入: [1,2,3]
    输出:
    [
    [1,2,3],
    [1,3,2],
    [2,1,3],
    [2,3,1],
    [3,1,2],
    [3,2,1]
    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/permutations
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution:
    def permute(self, nums):
    if len(nums) <= 1:
    return[nums]

    answer = []
    for i, num in enumerate(nums):
    n = nums[:i] + nums[i+1:]
    for y in self.permute(n):
    answer.append([num] + y)
    return answer

    如果序列 X_1, X_2, ..., X_n 满足下列条件,就说它是 斐波那契式 的:

    n >= 3
    对于所有 i + 2 <= n,都有 X_i + X_{i+1} = X_{i+2}
    给定一个严格递增的正整数数组形成序列,找到 A 中最长的斐波那契式的子序列的长度。如果一个不存在,返回  0 。

    (回想一下,子序列是从原序列 A 中派生出来的,它从 A 中删掉任意数量的元素(也可以不删),而不改变其余元素的顺序。例如, [3, 5, 8] 是 [3, 4, 5, 6, 7, 8] 的一个子序列)

     

    873. 最长的斐波那契子序列的长度

    示例 1:

    输入: [1,2,3,4,5,6,7,8]
    输出: 5
    解释:
    最长的斐波那契式子序列为:[1,2,3,5,8] 。
    示例 2:

    输入: [1,3,7,11,12,14,18]
    输出: 3
    解释:
    最长的斐波那契式子序列有:
    [1,11,12],[3,11,14] 以及 [7,11,18] 。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/length-of-longest-fibonacci-subsequence
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    class Solution:
    def lenLongestFibSubseq(self, A):
    s = set(A)
    n = len(A)
    result = 0

    for i in range(n-1):
    for j in range(i+1, n):
    a, b = A[i], A[j]
    count = 2
    while a+b in s:
    a, b = b, a+b
    count += 1
    result = max(result, count)
    return result if result > 2 else 0

  • 相关阅读:
    java11切换java8,maven版本切换
    CSS层叠上下文
    CSS Reset
    scrollWidth、clientWidth、offsetWidth、width的区别
    wangEditor ctrl v 粘贴图片时上传图片到自定义服务器以及File本地读取
    centos下修改docker镜像和容器默认存放位置
    docker mysql8忽略大小写
    navicat 连接 MySQL8 出现 Authentication plugin 'caching_sha2_password' cannot be loaded错误
    Nextcloud搭建私有云盘
    mysql8大小写敏感修改问题
  • 原文地址:https://www.cnblogs.com/xqy-yz/p/11407410.html
Copyright © 2020-2023  润新知