RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

全部问题

Martin Hope
Max Lich
Asked: 2020-04-20 18:42:38 +0000 UTC

如何有效地对行进行分组?

  • 12

需要解决以下问题:

根据以下标准将唯一字符串集拆分为不重叠的组:

如果两行在一列或多列中有匹配的非空值,则它们属于同一组。

例如,线条

111;123;222
200;123;100
300;;100

都属于同一个组,因为前两行在第二列中具有相同的值,而后两行在第三列中123具有相同的值100

程序运行时间(30 秒)也有限制。我还可以添加行数——大约一百万。这是我的代码:

private static Set<TreeSet<Integer>> findLineGroups(List<String> lines) {
    Set<TreeSet<Integer>> resultSet = new TreeSet<>((Comparator<TreeSet<Integer>>) (trSet1, trSet2) -> {
        int diff = trSet2.size() - trSet1.size();
        if (diff != 0)
            return diff;

        Iterator<Integer> iterator1 = trSet1.iterator();
        Iterator<Integer> iterator2 = trSet2.iterator();
        while (iterator1.hasNext()) {
            diff = iterator1.next() - iterator2.next();
            if (diff != 0)
                return diff;
        }

        return 0;
    });

    Map<String, Integer> termLineGroupsPairs = new HashMap<>();
    List<TreeSet<Integer>> lineNumGroups = new ArrayList<>();

    for (int lineNum = 0; lineNum < lines.size(); lineNum++) {
        String line = lines.get(lineNum);
        String[] lineElements = line.replaceAll("\"", "").replaceAll(" ", "").split(";");
        Set<String> termSet = new HashSet<>(Arrays.asList(lineElements));
        termSet.remove("");

        Integer groupNum = null;
        TreeSet<String> tempSet = new TreeSet<>(termLineGroupsPairs.keySet());
        tempSet.retainAll(termSet); //оставляем только общие элементы
        if (!tempSet.isEmpty()) {
            String term = tempSet.first();
            groupNum = termLineGroupsPairs.get(term);
            lineNumGroups.get(groupNum).add(lineNum);
        }

        if (groupNum == null) {
            TreeSet<Integer> group = new TreeSet<>();
            group.add(lineNum);
            lineNumGroups.add(group);
            groupNum = lineNumGroups.size() - 1;
        }
        for (String term : termSet) {
            termLineGroupsPairs.put(term, groupNum);
        }
        if (lineNumGroups.size() % 1000 == 0)
            System.out.println(lineNumGroups.size());
    }

    resultSet.addAll(lineNumGroups);
    return resultSet;
}

而且我所有的解决方案都工作太久(我试图以不同的方式解决这个问题)。诚然,如果少于一千行,那么它可以快速运行(我符合指定的限制),并且几乎可以使用我的任何算法。

请告诉我如何解决这个问题(或在我的解决方案中进行哪些更改以使其快速运行)。

java
  • 2 个回答
  • 10 Views
Martin Hope
Kamerton
Asked: 2020-03-19 17:51:52 +0000 UTC

为什么 System.String.Empty 不为空?

  • 12

好的。

也许我的问题因为它的不正确而令人困惑,但这只是为了让你和我有同样的感觉。

我用两个反编译器(dotPeek 和 ILSpy)反编译了 mscorelib.dll v4.0,它们都向我展示了这是一个字段readonly,并且没有在类中初始化。类 NOT partial。在此处输入图像描述

当然,执行时,一切都很好string.Empty is "",但是有人可以向我解释为什么会这样吗?如果不在这里(也找不到静态构造函数),那么该字段在哪里初始化?还是这些反编译器看不到东西?

c#
  • 1 个回答
  • 10 Views
Martin Hope
daybreaker
Asked: 2020-03-07 17:42:27 +0000 UTC

比较图片的相似度

  • 12

如何比较图1和图2?

图片编号 1 图片编号 2

为了相似性,它们的大小没有必要不同。此外,它们不必是 100% 相似的。

研究这个主题的最佳材料是什么?

java
  • 1 个回答
  • 10 Views
Martin Hope
nick_gabpe
Asked: 2020-02-01 23:44:10 +0000 UTC

python 中 NaN 的奇怪工作:nan != nan 和 [nan] == [nan]

  • 12

有这个代码:

a = float("nan")
a == a              # Получаем False
[a] == [a]          # Получаем True

为什么会这样?

python
  • 2 个回答
  • 10 Views
Martin Hope
Qwertiy
Asked: 2020-12-29 06:21:23 +0000 UTC

是否可以在指针算术中忽略空子?

  • 12

有一个类A继承自该类B。但是,该类B不包含任何字段。如果我创建一个元素数组B,但将其用作元素数组A,它会正确吗?

该标准说这仅允许使用类似的类型:

当具有整数类型的表达式被添加到指针或从指针中减去时,结果具有指针操作数的类型。如果表达式 P 指向具有 n 个元素的数组对象 x 的元素 x[i],86 表达式 P + J 和 J + P(其中 J 的值为 j)指向(可能是假设的)元素 x [ i + j ] 如果 0 ≤ i + j ≤ n ;否则,行为未定义。同样,表达式 P - J 指向(可能是假设的)元素 x [ i - j ] 如果 0 ≤ i - j ≤ n ;否则,行为未定义。

旁边描述了类型的相似性,但我无法理解在我的情况下类型是否相似。哪些类型被认为是相似的?

这是一个示例代码:https://ideone.com/ncRepZ https://ideone.com/nMvJ0r
它是否包含未定义的行为?

#include <iostream>

using namespace std;

struct A
{
  int x;
  A(int x) : x(x) {}
  virtual ~A() {}
};

struct B : A
{
  B() : A(7) {}
};

int main()
{
  A *a = new B[4];

  for (size_t q=0; q<4; ++q)
    cout << q << ": " << a[q].x << endl;

  delete [] a;

  return 0;
}

如果仍然不允许这样做,是否足以检查这两种类型的大小是否相等https://ideone.com/iSkJk0

static_assert(sizeof (A) == sizeof (B), "B must have same size as A");

确保如果程序编译,那么它不包含UB?

c++
  • 1 个回答
  • 10 Views
上一页
下一页

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5