小编cat*_*n87的帖子

scala中的'< - '是做什么的?

我是该语言的新手,并试图弄清楚如何阅读其中的一些代码.这是我想要弄清楚的示例代码:

lazy val genHeap: Gen[H] = for{
    n <- arbitrary[A]
    h <- frequency((1,value(empty)),(9,genHeap))
} yield insert(n,h)
Run Code Online (Sandbox Code Playgroud)

我不太明白发生了什么:

  • 返回类型是Gen?
  • 该<-行为是否作为=运营商?
  • yield语句是否通过插入新元素为每次迭代构建一个堆?

scala

6
推荐指数
1
解决办法
2137
查看次数

计算范围(0,n)中数字'x'的出现次数

所以我正在尝试编写一个python函数,它接受两个参数n和num,并计算0和num之间'n'的出现次数.例如,

countOccurrences(15,5)应该是2.

countOccurrences(100,5)应该是20.

我为这个问题做了一个简单的迭代解决方案:

def countOccurrences(num,n):
  count=0
  for x in range(0,num+1):
    count += countHelper(str(x),n)
  return count

def countHelper(number,n):
  count=0
  for digit in number:
    if digit==n:
      count += 1
  return count
Run Code Online (Sandbox Code Playgroud)

如果我试图打电话,这会遇到明显的问题countOccurrences(100000000000,5).我的问题是如何才能提高效率?我希望能够"公平"快速地处理问题,并避免内存不足错误.这是我尝试执行此操作的递归解决方案的第一次传递:

def countOccurence(num, n):
  if num[0]==n:
    return 1
  else:
    if len(num) > 1:
      return countOccurence(num[1:],n) + countOccurence(str((int(num)-1)),n)
    else:
      return 0
Run Code Online (Sandbox Code Playgroud)

python algorithm memory-management

6
推荐指数
1
解决办法
1584
查看次数

标签 统计

algorithm ×1

memory-management ×1

python ×1

scala ×1