这是我最近遇到的面试问题之一.
给定完整或几乎完整的二叉树的根地址,我们必须编写一个函数将树转换为最大堆.
这里没有涉及数组.树已经建成了.
例如,
1
/ \
2 5
/ \ / \
3 4 6 7
Run Code Online (Sandbox Code Playgroud)
可以有任何可能的最大堆作为输出 -
7
/ \
3 6
/ \ / \
2 1 4 5
Run Code Online (Sandbox Code Playgroud)
要么
7
/ \
4 6
/ \ / \
2 3 1 5
Run Code Online (Sandbox Code Playgroud)
等等...
我写了一个解决方案,但使用了前后顺序遍历的组合,但我想在O(n ^ 2)中运行.我的代码提供了以下输出.
7
/ \
3 6
/ \ / \
1 2 4 5
Run Code Online (Sandbox Code Playgroud)
我一直在寻找更好的解决方案.有人可以帮忙吗?
编辑:
void preorder(struct node* root)
{
if(root==NULL)return;
max_heapify(root,NULL);
preorder(root->left);
preorder(root->right);
}
void max_heapify(struct node* root,struct …Run Code Online (Sandbox Code Playgroud) 问题是这样的 -
我们必须找到要在字符串末尾插入的最小字符数,以使其成为回文.
因此,在我努力解决这个问题时,我认为这相当于找到最大的回文子串,这也是字符串的后缀.
我可以很容易地在O(n ^ 2)中做到这一点,但我正在寻找可能使用改进的KMP的O(n)解决方案.有人请帮我搞清楚.
问题是这样的 -
对于作为输入给出的每个字符串,您需要告诉它作为回文的子序列的数量(不一定是不同的).请注意,空字符串不是回文.例如,"aab"的回文子序列是:
"a","a","b","aa",方法返回4.
我有动态编程解决方案来寻找最长的回文子序列,因此试图从中获取想法.无法真正得到解决方案.可能甚至不需要动态编程.建议请.
还有一个问题.当"不一定要区分"的条件被删除时,我们仍然可以在不实际产生所有回文子序列的情况下进行计数吗?
对于我的 chrome 和 firefox 扩展,我需要一种方法来确定后台脚本是否已卸载或正在卸载。发生这种情况时是否会触发事件?我浏览了 stackoverflow 上的多个链接,甚至一些官方的 Chromium 错误链接,但找不到具体的答案。后台脚本不支持 beforeunload 并且关闭窗口并不能保证浏览器关闭,因为如果扩展程序具有“后台”权限,后台脚本仍将在后台运行。我现在能做什么?
序列比对是一个非常标准的问题,可用于生物信息学领域的DNA或蛋白质比对.我最近遇到了这个问题的不同版本.
给定两个输入字符串(假设字符串仅由A,C,G,T组成),问题基本上是根据以下矩阵找到最大对齐分数 -
A C G T -
A 5 -1 -2 -1 -3
C -1 5 -3 -2 -4
G -2 -3 5 -2 -2
T -1 -2 -2 5 -1
- -3 -4 -2 -1 Not Allowed
Run Code Online (Sandbox Code Playgroud)
因此,如果A与 - 对齐,我们在对齐分数上加-3,或者如果G与T对齐,我们在分数上加-2,或者如果C与C对齐,我们加5.因此,对于输入字符串AGTGATG和GTTAG,最大比对得分为14,其中一个具有最大得分的比对可以表示为
AGTGATG
-GTTA-G
Run Code Online (Sandbox Code Playgroud)
对齐得分计算如下:A- = -3,GG = 5,TT = 5,GT = -2,AA = 5,T- = -1和GG = 5.加起来,-3 + 5 + 5-2 + 5-1 + 5 = 14这是这对弦的最大可能对齐分数.
我能够使用动态编程对其进行编码并获得Alignment得分矩阵,但我在打印两个字符串的所有可能对齐方面遇到问题,并且最大对齐得分.我试图像在LCS中一样回溯,但无法使其正常工作.我附上了我的代码.
static Dictionary<string, int> dict;
static void Main(string[] args)
{ …Run Code Online (Sandbox Code Playgroud) Google云消息传递(GCM)是一项服务,可让开发人员将数据从服务器发送到Android应用程序或Chrome应用程序和扩展程序.
我正在开发一个chrome和一个firefox扩展/附加组件.我正在使用Web扩展API进行Firefox扩展.
现在,Web Extension API尚不支持chrome.gcm.*API.从本质上讲,firefox扩展无法与GCM通信.
还有其他类似GCM的内容,firefox扩展可以与之交谈吗?Firefox提供的东西就像Google为其浏览器Chrome提供的GCM一样?如果没有,有人可以解释如何在Firefox扩展中实现这一目标吗?
更新:即使对于Web应用程序,firefox也不会使用与GCM类似的东西.他们使用服务人员.Firefox浏览器扩展可以与服务工作者互动吗?
firefox firefox-addon google-cloud-messaging service-worker web-push
我为 chrome 和 firefox 制作了一个浏览器扩展。firefox 是使用Web 扩展 API开发的因此这两个扩展中的代码差异很小。作为扩展中的一个重要功能,一些 HTML 元素通过内容脚本成为网页的一部分。这还涉及加载托管在某些服务器上并通过 https 提供的图像。现在,当扩展在 twitter 和 github 上运行时,这些图像在 chrome 中加载良好。但是,有趣的是,当相应的扩展在 twitter 和 github 上运行时,图像根本没有加载到 firefox 中。更有趣的是,twitter 在其响应标头中设置的内容脚本策略禁止该图像加载,因此 firefox 的行为是正确的。所以,我的问题基本上是 Chrome 是否在这里违反了 CSP?
在此处附加 twitter 设置的 csp--
script-src 'nonce-j0GK1zjoBy82/ZWhR7gw+g==' https://connect.facebook.net https://cm.g.doubleclick.net https://ssl.google-analytics.com https://graph .facebook.com https://twitter.com 'unsafe-eval' https:// .twimg.com https://api.twitter.com https://analytics.twitter.com https://publish.twitter。 com https://ton.twitter.com https://syndication.twitter.com https://www.google.com https://t.tellapart.com https://platform.twitter.com https:// www.google-analytics.com '自我';框架祖先“自我”;字体-SRC https://twitter.com的https:// .twimg.com数据:https://ton.twitter.com https://fonts.gstatic.com https://maxcdn.bootstrapcdn.com https://netdna.bootstrapcdn.com 'self'; media-src https://twitter.com https:// .twimg.com https://ton.twitter.com blob: 'self'; connect-src https://graph.facebook.com https:// .giphy.com https:// …
firefox google-chrome-extension content-script content-security-policy
问题陈述如下——
There is a text messaging service.It provides with an API to send SMSes to a user,
but they can be at most 30 characters long.
Also it doesn't guarantee the order in which the messages will be received.
You have to build a function which splits the text in chunks so that it can
be sent in multiple messages. Each chunk has to be :
- upto 30 characters long
- no word should be split in the middle …Run Code Online (Sandbox Code Playgroud) 我知道后缀数组本身的定义是它是一个字符串所有后缀的排序数组.但我试图了解这种排序操作的重要性在这里?假设我们创建了一个包含字符串所有后缀的数组,并选择不对其进行排序并继续构建LCP数组,当我们尝试解决诸如Longest Palindromic子字符串之类的常见问题时,我们在这种情况下会松动什么呢?最长的重复子串?
给定是一个无限排序的数组,只包含数字0和1.有效地找到转换点.
例如:00000000000111111111111111
输出:11是转换发生的索引
我为此编写了一个解决方案,忽略了一些边缘情况.
int findTransition(int start)
{
int i;
if(a[start]==1)return start;
for(i=1;;i*=2)
{
//assume that this condition will be true for some index
if(a[start+i]==1)break;
}
if(i==1)return start+1;
return findTransition(start+(i/2));
}
Run Code Online (Sandbox Code Playgroud)
我不太确定这个解决方案的时间复杂性.有人可以帮我解决这个问题吗?
是O(log(N))吗?
arrays algorithm performance time-complexity data-structures
我正在尝试建立一个Kafka系统.由于我项目中的大多数现有代码都已经在PHP中,因此我很可能会在PHP本身编写生成器.但在选择一种语言来写消费者时,我的约束相对较少.现在,有很多客户可以使用我正在修复.
另外,为了在这里选择合适的技术,应该记住哪些因素?
特别想应用这些知识在java客户端与节点客户端之间进行选择(多线程模型与异步模型)
任何帮助将受到高度赞赏.
algorithm ×7
firefox ×2
string ×2
apache-kafka ×1
arrays ×1
binary-heap ×1
binary-tree ×1
c# ×1
firefox-addon-webextensions ×1
heap ×1
java ×1
node.js ×1
performance ×1
sorting ×1
suffix-array ×1
web-push ×1