给定一个数组[a1b7c3d2]转换为[abcd1732]具有O(1)空间和O(n)时间,即把左边和数字字母的这种权利,他们的相对顺序是一样的.我可以想到一个O(nlogn)算法,但不是更好.有人可以帮忙吗?
请考虑以下问题:
给出了一个整数数组.您的目标是修剪数组,使得2*min> max,其中min和max是数组的最小和最大元素.如果上述条件不满足,您可以从数组的开头或结尾删除元素.清除次数应尽量减少.
例如,如果数组是
a, b, c, d, e, f
Run Code Online (Sandbox Code Playgroud)
其中c是最小值,e是最大值,那么如果2*c> e为真,我们就完成了.如果没有,我们可以从开始(即a,b,c)或从末尾(即e,f)移除,使得新的最小值或最大值满足条件,并且移除应该是最小的.
我有一个O(n 2)算法来解决这个问题.这可以及时解决O(n log n)吗?
我想编写一个反转整数位的程序.
Ex 11000101到10100011
我知道如何使用循环来解决这个问题,但我遇到了使用字节移位来解决这个问题的解决方案:
num>>4|num<<4
Run Code Online (Sandbox Code Playgroud)
我不明白这是如何工作的.有人可以解雇我吗?
我想垂直打印二叉树.我知道使用hashmap的解决方案.但是,我在许多地方读到可以通过使用双向链表来完成.但是,我无法弄清楚如何做到这一点.我也无法在网上找到任何可以理解的材料.有人可以帮助我使用双向链表方法吗?
例:
5
4 3
6 7 8 9
Run Code Online (Sandbox Code Playgroud)
这给了
6
4
5 7 8
3
9
Run Code Online (Sandbox Code Playgroud)
即它就像一个水平顺序遍历垂直顺序.
使用哈希映射解决方案:假设根是索引0,那么离开的会是-1,-2等和右的人会+1,+2等等.所以,我们可以建立键安装在列数的哈希,并有所有列表具有该特定列号作为值的根.然后我们可以简单地打印哈希条目.
请参阅此链接,阅读第1轮评论,技术问题1.
我在其他许多地方也发现了同样的评论.