小编lea*_*ner的帖子

使用布尔数组在O(n)中查找字符串的第一个非重复字符?

我的问题与之前的问题有关

在字符串中查找第一个未重复的字符.

在我的一次采访中,我被要求编写一个函数来确定时间O(n)中字符串中的第一个唯一字符,使用长度为n的布尔数组作为额外空间.也就是说,仅使用O(n)复杂度和长度为n的bool数组找到字符串中的第一个非重复字母.有人可以建议如何使用bool数组解决它?

arrays string algorithm

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

在二维数组中找到局部最小值

给定N个N 不同整数的N-by-N阵列,设计O(N)算法以找到局部最小值:一对索引ij,使得:

  • a[i][j] < a[i+1][j]
  • a[i][j] < a[i-1][j]
  • a[i][j] < a[i][j+1]
  • a[i][j] < a[i][j-1]

我在一本在线算法书" Java编程入门",第4.2章:排序和搜索中找到了这个问题.

它类似于问题35(同一页面):

  • 给定一个N个实数的数组,写一个静态方法,在对数时间内找到一个局部最小值(索引i就是这样a[i-1] < a[i] < a[i+1]).

它有一些基于二进制搜索的解决方案,我无法找到.

algorithm

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

为什么一个很好的选择mod是"一个不太接近精确2的素数"

为了生成散列函数,通过将k的余数除以m,将密钥k映射到m个时隙之一.也就是说,哈希函数是

h(k)= k mod m.

我已经在几个地方读到了m的好选择

  1. 素数 - 我理解我们想要删除公因子,因此选择素数
  2. 不太接近2的精确力量 - 为什么会这样?

hash-function

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

从那个返回iterator返回mockito

嗨,我有一个课程A实施Iterable.我有这个代码来存根这个类的对象:

第一种方式:

A source = mock(A.class);
final List<String> documents = getList();
when(source.iterator()).thenAnswer(new Answer<Iterator<String>>() {
    @Override
    public Iterator<String> answer(final InvocationOnMock invocation) throws Throwable {
        return documents.iterator();
    }
});
Run Code Online (Sandbox Code Playgroud)

第二种方式:

A source = mock(A.class);
final List<String> documents = getList();
when(source.iterator()).thenReturn(getList().iterator());
Run Code Online (Sandbox Code Playgroud)

第一种方法Iterator在每次调用时返回一个新的,source.iterator()但第二种方法返回相同的Iterator对象.因此,如果我使用第二种方式来存根源对象,我会在后续调用中获得一个空迭代器source.iterator().

为什么会这样?Mock不应该Iterator在每次通话时都返回新的source.iterator()

java mockito

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

用于测试G是否包含树枝的算法

有向图G的树状结构是有根树,使得存在从图中的根到每个其他顶点的有向路径.提供一种有效且正确的算法来测试G是否包含树枝及其时间复杂度.

我只能考虑从每个节点运行DFS/BFS,直到其中一个DFS覆盖所有节点.我想过使用最小生成树算法,但这也仅适用于非定向图

有没有其他有效的算法呢?

我发现了一个跟进问题,哪个状态有一个O(n + m)算法,任何人都可以帮助解决这个问题吗?

graph

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

从离散分布中生成随机数的算法?

设计一个快速算法,从离散分布中重复生成数字:给定一个数组a []的非负实数,总和为1,目标是以概率a [i]返回索引i

我在一本在线算法书"Java编程入门",第4.2章:排序和搜索(http://introcs.cs.princeton.edu/java/42sort/)中找到了这个问题.

提示说:

形成累积和的数组s [],使得s [i]是[]的前i个元素的总和.现在,生成0到1之间的随机实数r,并使用二进制搜索返回索引i,其中s [i]≤s[i + 1].

一些我怎么不能理解提示,因此无法找到解决方案..

random algorithm math

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

清单 3.7 在 Java 并发中实际是如何工作的?

清单 3.7。隐式允许 this 引用转义。不要这样做。

public class ThisEscape {
 public ThisEscape(EventSource source) {
  source.registerListener(
   new EventListener() {
     public void onEvent(Event e) {
      doSomething(e);
     }
   }
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

引用“发布对象或其内部状态的最终机制是发布一个内部类实例,如清单 3.7 中的 ThisEscape 所示。当 ThisEscape 发布 EventListener 时,它也会隐式发布封闭的 ThisEscape 实例,因为内部类实例类实例包含对封闭实例的隐藏引用。”

我的问题是:这个隐藏的引用在哪里以及如何利用它?

java concurrency

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

标签 统计

algorithm ×3

java ×2

arrays ×1

concurrency ×1

graph ×1

hash-function ×1

math ×1

mockito ×1

random ×1

string ×1