小编Kol*_*lom的帖子

解决 Go 的地图指针问题

我正在解决这个 Project Euler 问题。首先我尝试了暴力破解,花了 0.5 秒,然后我尝试了动态编程来利用记忆化,期望有巨大的改进,但令我惊讶的是结果是 0.36 秒。

经过一番谷歌搜索后,我发现您不能在函数(find_collat​​z_len)中使用指向外部地图数据(备忘录)的指针。因此,每次运行下面的函数时,它都会复制整个字典。这听起来像是对处理器能力的巨大浪费。

我的问题是有什么解决方法,以便我可以使用指向函数外部映射的指针来避免复制。

这是我的丑陋代码:

package main
//project euler 014 - longest collatz sequence

import (
    "fmt"
    "time"
)

func find_collatz_len(n int, memo map[int]int) int {
    counter := 1
    initital_value := n
    for n != 1 {
        counter++
        if n < initital_value {
            counter = counter + memo[n]
            break
        }
        if n%2 == 0 {
            n = int(float64(n)/2)
        } else {
            n = n*3+1
        }
    }
    memo[initital_value] = counter
    return counter
} …
Run Code Online (Sandbox Code Playgroud)

algorithm dictionary go

0
推荐指数
1
解决办法
249
查看次数

为什么 Python “in” 返回 False

为什么下面的代码在 Python中返回FALSE?不应该是TRUE,因为 b 已经包含“T”。

a = ["T"]
b = ["H", "T"]
a in b
False
Run Code Online (Sandbox Code Playgroud)

python

-4
推荐指数
1
解决办法
113
查看次数

标签 统计

algorithm ×1

dictionary ×1

go ×1

python ×1