【问题标题】:Python code reserves immense amounts of memoryPython代码保留了大量的内存
【发布时间】:2020-08-30 01:42:38
【问题描述】:

我在 leetcode 上运行了以下代码,它显示了 14MB 的内存由于某种未知原因(对我而言)被征服。我知道这很糟糕,因为我处于第 10 个百分位的新手中,所以有人能告诉我是谁吃的吗?

class Solution:
    def longestPalindrome(self, s: str) -> int:
        all_freq = {} 
        
        for i in s: 
            if i in all_freq: 
                all_freq[i] += 1
            else: 
                all_freq[i] = 1
        
        number = 0
        flag = False
        
        for i in all_freq:
            number = number + all_freq[i] // 2 
            if all_freq[i] % 2 == 1:
                flag = True
        
        number = number*2
        if flag : number = number +1
            
        return number

问题是: https://leetcode.com/problems/longest-palindrome/

【问题讨论】:

  • 如果调用这段代码时用一个非常非常大的字符串作为参数,那么我可以想象它会占用大量内存。
  • @JohnGordon Nah,他们只是展示了整个 Python 进程的内存左右,无论解决方案如何,它都不会低于 ~13 MB 左右。

标签: python memory


【解决方案1】:

内存消耗取决于数据量、实例量和测试用例量,而基准测试不是那么准确,不用担心。这也会通过:

class Solution:
    def longestPalindrome(self, s):
        odds = sum(val & 1 for val in Counter(s).values())
        return len(s) - odds + bool(odds)

【讨论】:

    猜你喜欢
    • 2011-05-03
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多