2024.4.28力扣刷题记录-数组篇记录3(未完)

一、396. 旋转函数

找规律

不会,想到了找规律,但是没有总结出来。来自评论(. - 力扣(LeetCode))。

class Solution:
    def maxRotateFunction(self, nums: List[int]) -> int:
        # 找规律
        s, f, n = 0, 0, len(nums)
        # 计算f(0)
        for i, x in enumerate(nums):
            s += x
            f += i * x
        ans = f
        # 迭代计算f
        for i in range(1, n):
            f += s - n * nums[n-i]
            ans = max(ans, f)
        return ans

来自灵神的总结(. - 力扣(LeetCode))。

二、645. 错误的集合

1.哈希表 + 数学

class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        # 哈希表 + 数学
        hash = {}
        ans = [0]*2
        for i, x in enumerate(nums):
            hash[x] = hash.get(x, 0) + 1
            if hash[x] == 2:
                # 找重复数字
                ans[0] = x
        n = len(nums)
        # 找丢失数字
        ans[1] = (1 + n) * n // 2 - sum(nums) + ans[0]
        return ans

2.纯哈希表

来自评论(. - 力扣(LeetCode))。

class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        # 纯哈希表
        n = len(nums)
        hash = Counter(nums)
        repeat = lose = -1
        for i in range(1, n + 1):
            cnt = hash.get(i, 0)
            if cnt == 0:
                lose = i
            elif cnt == 2:
                repeat = i
        return [repeat, lose]

 3.纯数学

同样来自上面评论连接。没有想到用集合找出重复元素。

class Solution:
    def findErrorNums(self, nums: List[int]) -> List[int]:
        # 纯数学
        n, total = len(nums), sum(set(nums))
        # ans[1] = (1 + n) * n // 2 - sum(nums) + ans[0]
        # sum(set(nums)) = sum(nums) - ans[0]
        return [sum(nums) - total, (1 + n) * n // 2 - total]

4.位运算

来自官方题解(. - 力扣(LeetCode))。

(未完待续)

感谢你看到这里!一起加油吧!

相关推荐

  1. 2024.4.28记录-数组记录3

    2024-04-29 05:56:07       37 阅读
  2. 2024.3.26记录-二叉树学习记录1(

    2024-04-29 05:56:07       44 阅读
  3. 2024.3.30记录-二叉树学习记录2(

    2024-04-29 05:56:07       42 阅读
  4. 2024.4.7记录-数组记录2

    2024-04-29 05:56:07       36 阅读
  5. 2024.4.29记录-数组记录4

    2024-04-29 05:56:07       38 阅读
  6. 2024.3.25(1200-1400)记录

    2024-04-29 05:56:07       34 阅读
  7. 2024.3.27(1200-1400)记录

    2024-04-29 05:56:07       42 阅读
  8. 2024.3.31(1200-1400)记录

    2024-04-29 05:56:07       37 阅读
  9. 2024.4.5记录-数组记录1

    2024-04-29 05:56:07       37 阅读
  10. 2024.6.7记录-链表学习记录

    2024-04-29 05:56:07       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-29 05:56:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-29 05:56:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-29 05:56:07       82 阅读
  4. Python语言-面向对象

    2024-04-29 05:56:07       91 阅读

热门阅读

  1. C++宝强越狱1.0.7版本上市

    2024-04-29 05:56:07       26 阅读
  2. VUE3与Uniapp 五 (v-if、v-show和template的使用)

    2024-04-29 05:56:07       30 阅读
  3. selenium如何开启手机模式

    2024-04-29 05:56:07       31 阅读
  4. gin学习1-7

    2024-04-29 05:56:07       28 阅读
  5. addEventListener()方法中的参数,以及作用

    2024-04-29 05:56:07       33 阅读