小编eff*_*iss的帖子

HashSet似乎没有意识到两个对象是相同的.

我正在尝试使用HashSet来存储我创建的类的对象,但显然相同的对象似乎有两个不同的哈希值,这就是为什么contains方法没有意识到该对象已经在HashSet中.这导致我的程序耗尽堆内存.

我不认为我做错了什么,但无论如何我想要第二意见.我做过类似的操作,之前一切正常,这使得这特别烦人.我很感激任何帮助.

这是我的代码

move1 = new Move(t,s);
if(move1.hashCode()==new Move(t,s).hashCode())
    System.out.println("match");
move2 = new Move(s,t);
moves.add(move1); 
moves.add(move2);
if(moves.contains(new Move(t,s)))
    System.out.println("match found");
Run Code Online (Sandbox Code Playgroud)

这是Move类:

public class Move {
    private int move1;
    private int move2;

    Move(int m1, int m2)
    {
        move1 = m1;
        move2 = m2;
    }

    public String toString()
    {
         return String.valueOf(move1)+" "+String.valueOf(move2);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.HashMap.addEntry(HashMap.java:797)
    at java.util.HashMap.put(HashMap.java:431)
    at java.util.HashSet.add(HashSet.java:194)
    at makeMove.<init>(makeMove.java:33)
Run Code Online (Sandbox Code Playgroud)

java hashset

25
推荐指数
2
解决办法
4万
查看次数

用于在重叠间隔序列中找到最大和的算法

我试图解决的问题是在数字行上有一个间隔列表,每个间隔都有一个预定义的分数.我需要返回最大可能的总分.

问题是间隔重叠,重叠间隔我只能使用一个.这是一个例子.

Intervals   - Score  
   0- 5     -  15  
   4- 9     -  18  
  10-15     -  12  
   8-21     -  19  
  25-30     -  25    
Run Code Online (Sandbox Code Playgroud)

这里,间隔0-5,4-9和8-21重叠.
间隔10-15和8-21也重叠.
最大金额为55(18 + 12 + 25).

重要的是要注意,我们选择第一批重叠区间的间隔4-9,即使它没有三者的最高分数.

这是因为选择间隔8-21将阻止我们稍后使用间隔10-15,从而减少总和(在这种情况下,总和将是19 + 25 = 44).

我正在寻找这个问题的O(nlogn)或O(n)解决方案.我认为可以使用动态编程,但我可能错了.有人可以建议一个可以解决这个问题的解决方案/算法吗?

编辑:间隔没有特定的顺序.

algorithm sum max intervals

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

计算Levenshtein距离的最有效方法

我刚刚实现了一个最佳匹配文件搜索算法,以找到与字典中字符串最接近的匹配.在分析我的代码之后,我发现绝大部分时间花在计算查询和可能结果之间的距离上.我目前正在使用2-D数组实现算法来计算Levenshtein距离,这使得实现成为O(n ^ 2)运算.我希望有人可以建议更快的方式做同样的事情.

这是我的实现:

public int calculate(String root, String query)
{
  int arr[][] = new int[root.length() + 2][query.length() + 2];

  for (int i = 2; i < root.length() + 2; i++)
  {
    arr[i][0] = (int) root.charAt(i - 2);
    arr[i][1] = (i - 1);
  }

  for (int i = 2; i < query.length() + 2; i++)
  {
    arr[0][i] = (int) query.charAt(i - 2);
    arr[1][i] = (i - 1);
  }

  for (int i = 2; i < root.length() + 2; i++)
  { …
Run Code Online (Sandbox Code Playgroud)

algorithm optimization levenshtein-distance

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

给定一个文件,尽可能有效地找到十个最常出现的单词

这显然是一个面试问题(在一系列面试问题中找到它),但即使它不是很酷.

我们被告知要在所有复杂性措施上有效地做到这一点.我想创建一个HashMap,将单词映射到它们的频率.这将是时间和空间复杂度的O(n),但由于可能有很多单词,我们不能假设我们可以将所有内容存储在内存中.

我必须补充一点,问题中没有任何内容说这些单词不能存储在内存中,但是如果是这样的话呢?如果情况并非如此,那么这个问题似乎并不具有挑战性.

string algorithm

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

如何在Python中更好地控制循环增量?

我试图使用0.01的步长(例如)从0循环到1.我该怎么做呢?该for i in range(start, stop, step)只需要整数参数,以便花车将无法正常工作.

python syntax

21
推荐指数
2
解决办法
6万
查看次数

算法问题:翻转列

假设我们给出了一个零和一的mxn网格,并希望转换网格,以便最大行数仅由1组成.我们允许在网格上执行的唯一操作是选择一些列并翻转该列中的所有零和一个.我们还给出了一些整数k,并且必须执行恰好 k列翻转.给定网格和k的值,我们如何确定要翻转哪些列以最大化所有列的行数?

我认为需要做一些动态的事情,但我无法得到一个好的答案.有人可以帮忙吗?

algorithm binary grid optimization

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

给定一串红色和蓝色球,找到最小数量的交换以将颜色组合在一起

我们给出了一个形式的字符串:RBBR,其中R - 红色和B - 蓝色.

我们需要找到所需的最小交换次数,以便将颜色组合在一起.在上述情况下,答案是1获得RRBB或BBRR.

我觉得排序部分排序的数组的算法在这里很有用,因为简单的排序会给我们交换的数量,但我们想要minimum交换的数量.

有任何想法吗?

这是根据据称微软面试问题.

arrays sorting algorithm

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

Mac OS无法打开TopCoder Arena

我正在使用最新版本的Java运行Mac OX 10.7.4.我想访问TopCoder的竞技场,所以我下载了.jnlp并尝试打开它.但是,我一直收到一个错误,说应用程序是未签名的.我附上了错误的屏幕截图及其详细信息.有谁知道如何解决这一问题?

在此输入图像描述 在此输入图像描述

java macos exception

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

给定具有多个重复条目的阵列,重复输入O(N)时间和恒定空间

我们给出了一个大小为N的数组,其中包含0到N-2范围内的整数,包括0和N-2.

该阵列可以有多个重复的条目.我们需要在O(N)时间和常量空间中找到一个重复的条目.

我正在考虑获取阵列中所有entires的乘积和总和,以及0到N-2范围内所有数字的乘积和总和.

然后,总和的差异和产品的划分将给出两个方程式.如果给出只有两个重复的条目,这种方法会起作用,但由于可能有两个以上,我认为我的方法失败了.

有什么建议?

编辑:数组是不可变的.我意识到这是一个重要的信息,我很抱歉我忘了早些提到这一点.

java arrays algorithm

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

如果我在 Java 中返回一个 List,返回值是引用还是实际值?

不言自明:我需要修改我收到的 ArrayList,但我希望原件保持不变。

我知道这是非常基本的,我不知道为什么我不知道明确的答案。不过我想迟到总比不到好。

java collections

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