小编use*_*037的帖子

使用常量空间和O(n)运行时编写二进制搜索树的非递归遍历

这不是作业,这是一个面试问题.

这里的问题是算法应该是恒定的空间.我对如何在没有堆栈的情况下做到这一点非常无能为力,我会发布我使用堆栈编写的内容,但无论如何它都不相关.

这是我尝试过的:我试图进行预订遍历,然后我到了最左边的节点,但我被困在那里.我不知道如何在没有堆栈/父指针的情况下"recurse"备份.

任何帮助,将不胜感激.

(我将它标记为Java,因为这是我很习惯使用的,但它显然是语言无关的.)

java binary-tree traversal tree-traversal

48
推荐指数
3
解决办法
4万
查看次数

Java中的Boolean.TRUE和true有什么区别?

PS:我理解"真实"与真实之间的区别.

编辑:我也理解Boolean.TRUE是原语true的包装器,我的问题是 - 为什么原语boolean接受Boolean.TRUE作为值?例如,

boolean boolVar = Boolean.TRUE;
Run Code Online (Sandbox Code Playgroud)

似乎是一个有效的陈述.

java boolean

30
推荐指数
3
解决办法
7万
查看次数

Java中的SGML解析器?

我正在寻找一个Java解析器,它可以解析用SGML格式化的文档.

对于重复的监视器:我知道讨论这个主题的另外两个线程: 使用SGML Java SGML 解析Java String 到XML转换? 但两者都没有解决方案,因此也是新主题.

对于那些将XML与SGML混淆的人:请阅读:http://www.w3.org/TR/NOTE-sgml-xml-971215#null (简而言之,有足够的细微差别至少使它无法使用它香草形式)

对于那些喜欢向Google发贴海报的人:我已经做过了,而我能提出的最接近的是广受欢迎的SAXParser:http://download.oracle.com/javase/1.4.2/docs/api/javax /xml/parsers/SAXParser.html 但这当然是一个XML解析器.我正在四处寻找是否有人实施了SAX Parser的修改以适应SGML.

最后,我不能使用SX,因为我正在寻找Java解决方案.

谢谢!:)

java sgml

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

按位乘法并在Java中添加

我有使用乘法和加法的方法,但我只是无法理解它们.它们都来自外部网站而不是我自己的网站:

public static void bitwiseMultiply(int n1, int n2) {
    int a = n1, b = n2, result=0;
    while (b != 0) // Iterate the loop till b==0
    {
        if ((b & 01) != 0) // Logical ANDing of the value of b with 01
        {
            result = result + a; // Update the result with the new value of a.
        }
        a <<= 1;              // Left shifting the value contained in 'a' by 1.
        b >>= 1;             // Right shifting …
Run Code Online (Sandbox Code Playgroud)

java bit-manipulation multiplication addition bitwise-operators

13
推荐指数
3
解决办法
3万
查看次数

二叉树的最低共同祖先

这是一个受欢迎的访谈问题,我可以在这个主题上找到的唯一一篇文章来自TopCoder.对我来说不幸的是,从面试答案的角度看,它看起来过于复杂.

除了绘制两个节点的路径并推断祖先之外,是否有更简单的方法可以做到这一点?(这是一个很受欢迎的答案,但是面试问题的变化需要一个恒定的空间答案).

java binary-tree

13
推荐指数
2
解决办法
9881
查看次数

为什么(-1 >>> 32)= -1?

可能重复:
为什么1 >> 32 == 1?

-1作为转换为二进制的int由32 1表示.当我右移31次时,我得到1(31 0和1).但当我右移32次时,我再次得到-1.它不应该等于0吗?

java bit-manipulation bit-shift

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

在Python中匹配2个正则表达式

是否有可能在Python中匹配2个正则表达式?

例如,我有一个用例,我需要比较两个这样的表达式:

re.match('google\.com\/maps', 'google\.com\/maps2', re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)

我希望返回一个RE对象.

但显然,Python期望一个字符串作为第二个参数.有没有办法实现这一点,或者它是正则表达式匹配的工作方式的限制?


背景:我有一个匹配字符串的正则表达式[r1,r2,r3,...]列表,我需要找出哪个表达式是给定字符串中最具体的匹配.我认为我可以使其工作的方式是:
(1)将r1与r2匹配.
(2)然后将r2与r1匹配.
如果两者都匹配,我们就会有"平局".如果只有(1)工作,则r1是比r2"更好"的匹配,反之亦然.
我在整个列表中循环(1)和(2).

我承认它有点包围(主要是因为我的描述可能不连贯),但我真的很感激,如果有人能给我一些洞察我如何实现这一目标.谢谢!

python regex

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

使用指向除下一节点之外的随机节点的指针复制LinkedList

问:链表的每个节点都有一个随机指针(除了下一个指针),它可以随机指向另一个节点或为空.你会如何复制这样的链表?

答:这就是我所拥有的,我只是想批准这是否是最佳方式.

由于没有指定空间限制,我将使用a LinkedHashSet和a LinkedHashMap(我可以想象人们已经在分歧中点头;))

第一次迭代:显而易见 - 从列表中读取每个节点以进行复制并在新列表上创建节点.然后,像这样读取随机节点:this.random.data并插入到LinkedHashSet.

第二次迭代:遍历新列表并将每个节点的数据添加为第一列,将节点本身作为第二列添加到LinkedHashMap(不必是链接,但我只是使用流程).

第三次迭代:迭代LinkedHashSet(这就是为什么需要链接 - 可预测的排序)和新列表同时进行.对于第一个节点,读取其中的第一个条目,在其中LinkedHashSet查找相应的对象LinkedHashMap,并将其作为随机节点添加到新列表中的当前节点.

3次迭代似乎有点疯狂,但尝试将复杂性保持为O(N).任何改进O(3N)空间要求和O(3N)运行时复杂性的解决方案都会很棒.谢谢!


编辑:进入LinkedHashSet时可以删除该条目LinkedHashMap,因此这只需要O(2N)空间.

java algorithm linked-list

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

为什么在Java中使用4个空格作为缩进单位?

Java代码约定说:

应使用四个空格作为压痕的单位.

但它没有任何解释为什么空间是首选.如果我输入空格4次而不是仅按一次标签,我必须按3次以上按键.这意味着需要做更多工作,因为编码人员会在一天内编写大量代码.那么这个约定来自哪里,有没有合理的理由去做更多工作?

java coding-style

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

LinkedList类中的element()和getFirst()方法有什么区别?

LinkedListelement()方法和getFirst()方法有类似的描述(奇怪的是 - 不一样的单词).

Deque 明确指出两种方法在返回值和异常方面是相同的.

我的问题是 - 为什么有两个相同的方法?它是为了向后兼容吗?一种方法比另一种更有效吗?

java linked-list

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