- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
由于我不确定如何表达这个问题,我将用一个与我想要实现的非常相似的例子来说明它。
我正在寻找一种方法来优化执行以下任务所需的时间。
假设我有三组标记为“A”、“B”和“C”的数字,每组包含任意数量的整数。
我收到一堆要求“包”数字的订单,每个订单都要求特定的整数组合,每组一个。因此,订单可能看起来像“A3、B8、C1”,这意味着我需要从 A 组中取出 3,从 B 组中取出 8,从 C 组中取出 1。
任务很简单:拿一个订单,查看数字,然后去收集它们并将它们放在一个“包裹”中。
我需要一些时间来收集号码,而且经常有一个订单要求提供与之前订单相同的号码,所以我决定存储所有包裹以备日后检索;这样一来,我处理重复订单所需的时间就会大大减少,而不必再去收集相同的号码。
取号的时间比较长,但如果我当天订单很多的话,还不如一个一个检查一个包裹那么长。
例如,如果我有以下几组数字和订单
set A: [1, 2, 3]set B: [4, 5, 6, 12, 18]set C: [7, 8]Order 1: A1, B6, C7Order 2: A3, B5, C8Order 3: A1, B6, C7
我会为订单 1 和 2 打包,但后来我注意到订单 3 是重复订单,所以我可以选择只拿我为第一个订单打包的包裹并快速完成最后一个订单。
目标是优化处理一堆订单所花费的时间。目前我想到了两种方法,但也许还有更多的方法可以做事
收集每个订单的编号,无论它是否重复。最后我得到了很多包裹,在极端情况下,有人批量订购 50 个相同的包裹,这显然是浪费时间
检查包是否已存在于缓存中,也许对订单使用某种哈希方法。
有什么想法吗?
最佳答案
没有详细说明如何获取数据以组成包等。这使得很难针对您的问题提出不同的解决方案。例如,现有的包可能会引导您找到组成新包所需的数据,尽管它们在某种程度上有所不同。为此,实际上有可用的专用哈希方法,如局部敏感哈希。
考虑到您提出的两种方法,选择路线 2 听起来很自然。索引中的散列听起来微不足道(一阶很容易通过数字 167 或字符串“167”识别,对吗?)因此使用散列不会有任何真正的缺点。也许是内存限制,因为您需要保留旧包。还有一些常用方法可以定义哪些包要保留在(散列)缓存中,哪些要丢弃。
关于algorithm - 从多组任意项目中挑选项目时最大限度地减少重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080875/
我想要以下内容: void foo( /* something representing a function f */, /* arguments a1, a2, etc. in s
简而言之,我想声明一个这样的特征: trait Test { def test(amount: Int): A[Int] // where A must be a Monad } 这样我就可以
在 GWT 中,如何在 onModuleLoad 方法中插入框架集以及相对嵌套的框架集和框架,以合并许多小程序和其他小部件和 HTML?代码片段是: 公共(public)类 MainEntryPoin
这个问题在这里已经有了答案: How do I best simulate an arbitrary univariate random variate using its probability
我对java相当陌生,并且习惯于枚举本质上只不过是一个命名的整数列表。 现在我正在编写一个实现,其中父类有几个采用枚举值作为参数的方法。枚举将在子类中定义,并且会略有不同。由于枚举基本上看起来像类,所
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
想象一下 6-7 台服务器的设置都完全相同Java 版本“1.6.0_18”OpenJDK 运行时环境 (IcedTea6 1.8) (fedora-36.b18.fc11-i386)OpenJDK
这个问题在这里已经有了答案: What are some uses of template template parameters? (10 个答案) 关闭 4 年前。 我有一个根据策略舍入值的函数
我正在寻找如何在 Java 中给定一个 Async CompletableFutures 列表,以便前 N 个中的任何一个成功完成或失败。除非没有 N 次成功,否则忽略任何失败。 有这方面的例子吗?
我面临的问题是项目已经使用集群编程来分配任务。 if (cluster.isMaster) { // Fork workers. for (var i = 0; i { }); } el
我正在为 Luxology modo(3D 和 VFX 应用程序)编写脚本,该脚本使用 python 作为脚本语言。在我的脚本中的某个位置,我正在读取从其他应用程序输出的文本文件,并从该文本文件的行创
这个问题在这里已经有了答案: Fast arbitrary distribution random sampling (inverse transform sampling) (5 个答案) 关闭
我只是遇到了一个问题,我有一个结构数组,例如 package main import "log" type Planet struct { Name string `json:"
我正在尝试将 class ResponseResult 编码为 json case class ResponseResult (var Code : Int, var
我想将一个矩阵中的一个 block 复制到另一个矩阵的一部分中。要将其与任何类型的 n 维数组一起使用,我需要通过 [] 运算符应用带有偏移量的列表。有办法做到这一点吗? mat_bigger[0:5
我有一个匹配一组数字和字母的正则表达式。但是我希望能够排除任何三个连续的字母。这是为了防止意外形成单词或缩写。 我的表达如下。它还排除了一些类似的字符,如 0、o、O 和 1、i、I、l): ^[2-
根据documentation . 应匹配任何字符,但不匹配重音字符。 mysql> select 'test' regexp 't.st'; +----------------------+ | '
我该如何用 JavaScript 编写这个 if 语句? if(url == "http://www.google.com/" && "*") { ... } * 需要灵活并接受添加到第一个变量上
我知道 cPython 有一个 GIL,因此如果不使用多处理模块,您的脚本就无法在多个内核上运行。但是有什么可以阻止内置功能,例如使用多核进行排序吗?我不了解 cPython 结构,但我想我要问的问题
寻找命令行 gdb 的替代方法来检查 OSX 上的核心转储 - 有没有办法让 Xcode 打开带有调试符号的任意核心转储? 最佳答案 您是否尝试过使用 MachOView 1? 听起来它可能适用于查看
我是一名优秀的程序员,十分优秀!