问题标签 [duplicate-removal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
383 浏览

objective-c - 匹配重复项的优化算法

我编写了一个小型实用程序来识别 iTunes 中的重复曲目。曲目的实际匹配需要很长时间,我想对其进行优化。我将轨道数据存储在 NSMutableDictionary 中,该 NSMutableDictionary 将单个轨道数据存储在由 trackID 键入的 NSMutableDictionaries 中。这些单独的曲目词典至少具有以下键:

  • 跟踪ID
  • 姓名
  • 艺术家
  • 持续时间(以毫秒为单位####.####)

要确定是否有任何曲目相互匹配,我必须检查:

  • 如果两首曲目的时长在 5 秒内
  • 名称匹配
  • 艺人比赛

我这样做的缓慢方法是使用两个 for 循环:

这对于大型音乐库来说变得非常慢,并且只使用 1 个处理器。一项推荐的优化是使用块并批量处理轨道(100 条轨道)。我试过了。如果我的代码最初需要 9 个小时才能运行,那么现在在四核上大约需要 2 个小时。那还是太慢了。但是(在这里谈论我的工资等级)也许有一种方法可以将我需要的所有值存储在“适合堆栈”的 C 结构中,然后我就不必从较慢的内存中获取值。这对我来说似乎太低级了,但如果我有一个例子,我愿意学习。

顺便说一句,我在 Instruments 中对此进行了分析,[NSCFSet member:]占用了 86.6% 的 CPU 时间。

然后我想我应该将所有持续时间提取到一个排序数组中,这样我就不必在字典中查找持续时间值。我认为这是一个好主意,但是当我开始实施它时,我想知道如何确定最佳批量大小。

如果我有以下持续时间:

然后只需遍历数组,我就知道要在索引 0 处找到歌曲的匹配曲目,我只需要将其与索引 6 之前的歌曲进行比较。太好了,我有了第一批。但是现在我必须从索引 1 重新开始,才发现它的批处理也应该在索引 6 处停止并排除索引 0。我假设我在这里浪费了很多处理周期来确定批处理应该是什么/持续时间火柴。这似乎是一个“集合”问题,但在我的算法介绍课上我们并没有做太多。

我的问题是:

1) 识别匹配曲目的最有效方法是什么?是不是和上面的类似?它是否使用略高于我的知识水平的不相交和 [统一] 集合操作?它是使用 NSArray 过滤数组吗?是否有描述此问题和解决方案的在线资源?

我愿意以最有效的方式(数据结构)重组曲目字典。起初我以为我需要通过 TrackID 执行许多查找,但现在不再如此。

2)有没有更有效的方法来解决这个问题?您如何摇滚明星从第 1 段到优化的解决方案?

我寻找答案的时间比我愿意承认的要长,并发现了这些有趣但无益的答案:

查找重复项

查找排序数组中的所有重复值和缺失值

感谢您提供的任何帮助,兰斯

0 投票
4 回答
2933 浏览

algorithm - 最快的稳定去重算法

我有一个数组,我需要摆脱它的数组,没有重复。我必须将那些具有最小顺序的独特元素留在原始数组中。这大概是我的意思

如果有比这个简单的算法更快的算法?

更新:我无法对数组进行排序。我需要一个“稳定”版本的重复删除算法。所以,如果A[i] == A[j] and i < j算法必须删除元素A[j]

0 投票
6 回答
10983 浏览

mysql - 从 MYSQL 中的表中删除重复的电子邮件地址

我有一个表格,其中包含IDfirstnamelastnameaddress等列email

有没有办法email从表中删除重复的地址?

附加信息(来自评论):

如果有两行具有相同的email地址,其中一行将是正常的firstnamelastname而另一行将firstname. 因此,我可以区分它们。我只想删除名字为“即时”的那个。

请注意,有些记录firstname='Instant'只有 1 个email地址。我不想只删除一个唯一的电子邮件地址,所以我不能只删除所有firstname='Instant'.

请帮帮我。

0 投票
1 回答
1205 浏览

list - 在 Prolog 中创建列表不包含重复项

我想创建一个谓词:

如果我的目标是find(X,Y),它将返回团队列表 X 和球员列表 Y,没有任何重复...如下所示:

我尝试这样做,但它给出“错误:超出本地堆栈”,如果我不使用 remove_dups 谓词,团队列表,“X”,将会有重复并且程序无法停止......继续像 X =[milan,milan,milan,milan,inter] .... 我该如何更正此代码。?:

非常感谢...

0 投票
1 回答
269 浏览

xslt - 如何避免从字符串变量中获取重复的字符串?

我有一个serviceProvideList包含字符串值的变量。

我使用以下代码分别获取每个字符串:

如何避免变量中的重复值serviceProvideList

0 投票
2 回答
18908 浏览

oracle - 如何防止在选择查询中选择重复行?

我的任务是从 Oracle 数据库中选择关键数据,但我注意到我的选择返回了重复的行。我的报告不需要它们,但我不希望他们删除它们。有人可以帮助仅获取我需要的数据。我已经尝试了以下代码,但这没有帮助。

0 投票
2 回答
1021 浏览

sql-server-2008 - 防止重复的表格插入

数据库是 SQL Server 2008。我有一个查询,它从一个或多个表中提取行,然后尝试将它们插入到表变量中。

我想要一种防止重复插入的有效方法,所以我想出的是:

但是,这似乎并不能防止在某些情况下重复插入。

似乎(如果您考虑一下并查看查询计划,这是有道理的)在左连接操作中仅使用了 @MyTableVariable 的初始“状态”。换句话说,如果在运行此语句之前@MyTableVariable 已经包含 SomeID,这将防止重复,但如果 SomeTable/SomeOtherTalbe 上的 FROM/INNER JOIN 导致重复的 SomeID,则不会防止重复。

除了简单地在 SELECT 语句上打一个 DISTINCT 之外,还有另一种更有效的方法来处理这个问题吗?

0 投票
9 回答
47148 浏览

mysql - 如何根据多个字段删除SQL表中的重复项

我有一个游戏表,描述如下:

但是每场比赛在表格的某个地方都有一个重复的条目,因为每场比赛都在两支球队的赛程表中。是否有一条 sql 语句可以用来查看和删除基于相同日期、时间、hometeam_id、awayteam_id、locationcity 和 locationstate 字段的所有重复项?

0 投票
2 回答
1973 浏览

mysql - 从结果中过滤重复行,不包括一列?

我有一张这样的桌子-

从上表中可以看出,uid 为 13 和 14 的行对于除 uid 之外的所有列具有相同的值。

所以我想过滤除列 uid 之外的所有具有完全相同值的行(即列 uid 可以延迟值),在最终结果中,我想要重复或相似行的行,并且在它的 uid 列中,所有重复的 uid 用逗号分隔格式。

预期成绩 -

我尝试使用DISTINCTROW,但它要求所有列都相同才能将行视为重复。

任何建议表示赞赏。

编辑:我使用 MYSQL 作为数据库。

0 投票
4 回答
14833 浏览

r - 查找接近重复记录的技术

我正在尝试清理一个数据库,多年来,该数据库已获得许多重复记录,名称略有不同。例如,在公司表中,有“Some Company Limited”和“SOME COMPANY LTD!”之类的名称。

我的计划是将有问题的表格导出到 R 中,将名称转换为小写,替换常见的同义词(如“limited”->“ltd”),去掉非字母字符,然后使用agrep来查看看起来相似的内容。

我的第一个问题是agrep它只接受一个模式来匹配,并且循环遍历每个公司名称以匹配其他公司名称很慢。(某些要清理的表将有数万甚至数十万个名称要检查。)

我已经非常简要地查看了该tm包(JSS 文章),它看起来非常强大,但适用于分析大块文本,而不仅仅是名称。

我有几个相关的问题:

  1. tm软件包是否适合此类任务?

  2. 有更快的替代方案agrep吗?(所述功能使用 Levenshtein 编辑距离,这很慢。)

  3. 除了agrep和之外,R 中还有其他合适的工具tm吗?

  4. 我什至应该在 R 中执行此操作,还是应该直接在数据库中执行此类操作?(这是一个 Access 数据库,所以如果可能的话,我宁愿避免接触它。)