小编Cam*_*all的帖子

从二进制堆中删除叶子的时间复杂度

从堆中删除叶节点的时间复杂度是多少?

我想如果你不知道节点在哪里,它就会记录,因为你必须找到它.

但是,如果你已经知道节点在哪里,它应该是O(1)对吗?既然你可以删除它而你不必重新堆积所有东西?

algorithm time-complexity binary-heap data-structures

3
推荐指数
1
解决办法
2253
查看次数

没有遥控器/原点/ HEAD与gitlab

我对git很新,但我一直在我设置的远程服务器上玩它,我很确定我理解基础知识.

我刚刚设置了gitlab并将我的一些代码推送到了一个新项目上.我做的是:

  1. 获取目录中的所有代码
  2. git init
  3. git add.
  4. git commit -m"初始提交"
  5. git push origin master

原产地设立时:

git remote add origin git@1.2.3.4:myproject.git
Run Code Online (Sandbox Code Playgroud)

现在,当我做git branch -a时,我看到:

* master
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

而在我以前玩的时候,我总是看到:

* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
Run Code Online (Sandbox Code Playgroud)

我知道头是当前检出的分支的指针,所以它不应该存在于原点上吗?它为什么不创造?

git gitlab

2
推荐指数
1
解决办法
2608
查看次数

这个C++代码是如何工作的?

我正在研究一个现有项目(由其他人编写),我无法理解这两个简单的功能.

我感兴趣的第一个函数包含:

int iCounts[NUM_GRADES];
PROFILEMAN->GetMachineProfile()->GetGrades( pSong, GAMESTATE->GetCurrentStyle()->m_StepsType, iCounts );
Run Code Online (Sandbox Code Playgroud)

所以我可以看到iCounts被传递到GetGrades,这很好.但后来在iCounts上使用如下:

AppendOctal( iCounts[g], 3, foo );
Run Code Online (Sandbox Code Playgroud)

所以有些东西改变了iCounts.但是当我去看GetGrades时,它看起来像这样:

void Profile::GetGrades( const Song* pSong, StepsType st, int iCounts[NUM_GRADES] ) const{
    SongID songID;
    songID.FromSong( pSong );

    memset( iCounts, 0, sizeof(int)*NUM_GRADES );

    ...then some more stuff is done to iCounts

}
Run Code Online (Sandbox Code Playgroud)

我无法理解的是,在GetGrades中没有涉及指针时,原始函数的iCounts如何被修改?

c++ pointers

2
推荐指数
1
解决办法
211
查看次数

是否可以为此类型编写函子实例?

鉴于:

data MyType a = Done a | Out a (MyType a) | In (a -> MyType a)
Run Code Online (Sandbox Code Playgroud)

我正在努力实施fmap f (In x)。我最初的想法是,In $ \y -> fmap f (x y)但是由于x在a上运行而无法正常工作MyType a-好像我需要某种方式来对参数以及“内部”内容进行fmap映射(如果有道理的话)。我想我正在寻找的是一种b -> m ba -> m a给定的创建方式a -> b-可能吗?

haskell functor

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

为什么Javascript的数组映射回调需要额外的参数

说我有:

myArray = [1,2,3];
Run Code Online (Sandbox Code Playgroud)

并说我在其他地方有一个util函数:

add3 = function(val) {
   return val+3;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我想将它用作地图函数的回调,我必须做这样的事情:

add3Callback = function(currentValue, index, array) {
    return add3(currentValue);
}

myArray.map(add3Callback);
Run Code Online (Sandbox Code Playgroud)

最好是地图回调不需要额外的两个参数,因为现在我必须为所有我的util函数添加包装器以便将它们与map一起使用,这违背了在第一个中使用map的一些原因地点.

我在这里错过了什么?为什么这些参数有用,其他语言似乎没有这样做.

javascript functional-programming function

0
推荐指数
2
解决办法
637
查看次数

我怎样才能使这个功能更优雅

我有这个功能:

wrap :: Text -> [Text] -> Text
wrap x = intercalate "" . map ((<> x) . (x <>))
Run Code Online (Sandbox Code Playgroud)

其目的是用给定的字符串包装列表的每个元素并将它们连接在一起.

映射的第一个参数周围的括号使我恼火,使用""也是如此.所以我想知道是否有更优雅(或通用,我猜)的方式来表达这个功能?

haskell function parametric-polymorphism

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