问题标签 [algorithm]

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 投票
6 回答
30953 浏览

algorithm - 谜题:查找最大矩形(最大矩形问题)

找到适合空白空间的最大面积矩形的最有效算法是什么?

假设屏幕看起来像这样('#' 表示填充区域):

一个可能的解决方案是:

通常我会喜欢找出解决方案。虽然这一次我想避免浪费时间自己摸索,因为这对我正在从事的项目有实际用途。有众所周知的解决方案吗?

Shog9写道:

您的输入是一个数组(正如其他响应所暗示的那样),还是一个任意大小、定位的矩形形式的遮挡列表(在处理窗口位置时可能是窗口系统中的情况)?

是的,我有一个结构可以跟踪放置在屏幕上的一组窗口。我还有一个网格,它跟踪每个边缘之间的所有区域,无论它们是空的还是填充的,以及它们的左边缘或上边缘的像素位置。我认为有一些修改的形式可以利用这个属性。你知道吗?

0 投票
19 回答
92675 浏览

algorithm - Merge Sort a Linked List

I was recently brushing up on some fundamentals and found merge sorting a linked list to be a pretty good challenge. If you have a good implementation then show it off here.

0 投票
10 回答
1752 浏览

algorithm - 寻找反转 sprintf() 函数输出的算法

我正在做一个需要解析日志文件的项目。我正在寻找一种快速算法,可以接收这样的组消息:

P1 处的温度为 35F。

P1 处的温度为 40F。

P3 处的温度为 35F。

记录仪停止。

记录仪启动。

P1 处的温度为 40F。

并以 printf() 的形式输出一些东西:

该算法需要足够通用以识别消息组中的几乎所有数据负载。

我尝试搜索这种技术,但我什至不知道要搜索的正确术语。

0 投票
6 回答
1774 浏览

algorithm - 制作人类可读的整数表示

对于那些喜欢这种事情的人来说,这是一个编码问题。让我们看看你对一个函数的实现(当然是用你选择的语言),它返回一个指定整数的人类可读的字符串表示。例如:

  • humanReadable(1) 返回“一”。
  • humanReadable(53) 返回“五十三”。
  • humanReadable(723603) 返回“七十二万三千六百零三”。
  • humanReadable(1456376562) 返回“十亿、四亿五千六百万、三十七万六千、五百六十二”。

特别聪明/优雅的解决方案的奖励积分!

这似乎是一个毫无意义的练习,但这种算法在现实世界中有很多应用程序(尽管支持高达 10 亿的数字可能有点矫枉过正:-)

0 投票
16 回答
22181 浏览

algorithm - 设计像谷歌日历这样的日历系统

我必须创建类似于谷歌日历的东西,所以我创建了一个包含用户所有事件的事件表。

困难的部分是处理重复发生的事件,事件表中的行有一个 event_type 字段,它告诉您它是什么类型的事件,因为一个事件只能针对一个日期,或者每 x 天重新发生一个事件.

主要的设计挑战是处理重复发生的事件。

当用户使用月份视图查看日历时,如何显示给定月份的所有事件?查询会很棘手,所以我认为创建另一个表并为每个事件创建一行会更容易,包括重新发生的事件。

你们有什么感想?

0 投票
7 回答
2289 浏览

php - 从给定的多个集合中找到最佳组合

假设您有货物。它需要从 A 点到 B 点,从 B 点到 C 点,最后从 C 点到 D 点。您需要用最少的钱在五天内到达那里。每条支线有三个可能的托运人,每条支线都有自己不同的时间和成本:

您将如何以编程方式寻找最佳组合?

到目前为止,我最好的尝试(第三或第四种算法)是:

  1. 为每条腿找到最长的托运人
  2. 淘汰最“贵”的一个
  3. 为每条腿找到最便宜的托运人
  4. 计算总成本和天数
  5. 如果天数可以接受,则完成,否则,转到 1

在 PHP 中快速模拟(请注意,下面的测试数组可以流畅地工作,但是如果您使用上面的测试数组尝试它,它不会找到正确的组合):

我想我实际上可能需要做一些事情,我逐个制作每个组合(带有一系列循环)并将每个组合的总“分数”相加,然后找到最好的一个......

编辑:澄清一下,这不是“家庭作业”(我不在学校)。这是我当前工作项目的一部分。

要求(一如既往)一直在不断变化。如果在我开始解决这个问题时给了我当前的限制,我将使用 A* 算法的一些变体(或 Dijkstra 或最短路径或单纯形或其他东西)。但是一切都在变化和变化,这将我带到了现在的位置。

所以我想这意味着我需要忘记我到目前为止所做的所有废话,只使用我知道我应该使用的东西,这是一种寻路算法。

0 投票
10 回答
3435 浏览

c - 在 C 中优化搜索算法

可以使用 C 的任何本机实用程序来改进这种顺序搜索算法(取自 编程实践)的性能,例如,如果我将 i 变量设置为寄存器变量?

0 投票
3 回答
2079 浏览

performance - 为(字符串)散列函数选择乘数

您对选择要在(乘法)散列函数中使用的乘数有任何建议/规则吗?该函数正在计算字符串的哈希值。

0 投票
33 回答
544276 浏览

c++ - 浮动和双重比较最有效的方法是什么?

double比较两个或两个float值的最有效方法是什么?

简单地这样做是不正确的:

但是像:

好像是废物处理。

有谁知道更智能的浮动比较器?

0 投票
8 回答
10541 浏览

algorithm - 你如何将游戏逻辑与显示分开?

如何让每秒显示帧数独立于游戏逻辑?这样无论显卡渲染速度有多快,游戏逻辑都以相同的速度运行。