- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我得到一个随机长度的随机数字序列,由 0、1、2 组成:
201102220221
我还得到了一个数字:1 或 2。我只能遍历序列一次,我需要确定我给出的数字的所有子序列,运行它通过另一个函数计算值并将该值添加到总和(初始化为 0)。
任何 0 都可以用 1 或 2 替换。因此,可以通过用数字替换旁边的 0 来“扩展”子序列。如果一个子序列不能扩展到最小长度超过 4,我需要丢弃它。
例如,假设我得到了序列:
11011002102
和数字 1。我在开头识别长度为 2 的子序列(参见第一个元素)。它可以扩展为长度为 7 的子序列,方法是用 1 替换第一个 0、第三个和第四个零。因此,我通过一个函数运行它的当前长度并将其添加到总和中。
sum += function(2);
然后我确定下一个 1 的子序列(参见第四个元素)。它目前的大小为 2,并且可以通过替换它周围的零来扩展到最大大小 7。所以我将它的长度传递给一个函数并将其添加到总和中。
sum += function (2);
我终于确定了 1 的最后一个子序列(参见第六元素)。它目前的长度为 1,并且可以通过将其旁边的零替换为小于 4 的 1 来扩展到最大大小 2,因此我将其丢弃。
谁能帮我写一个函数,通过仅循环遍历序列一次来执行上述操作。 请不要给我真正的代码,只是想法、建议或伪代码。
我没有任何工作可以分享,我完全迷路了。我也不懂算法,所以请不要开始谈论动态规划或线性规划之类的东西,而是解释解决问题的可能方法。
最佳答案
鉴于只能循环一次序列的要求,您知道代码的基本结构。
给定用于丢弃子序列(扩展长度为 4 或更多)和用于处理子序列(未扩展序列长度)的参数,您知道需要跟踪哪些数据。找出如何根据您的环境和语言约定最好地存储这些数据。
在循环的每次迭代中,考虑输入序列的当前字符及其对存储数据的影响。
我试图在此处澄清问题,而不仅仅是向您提供解决方案。欢迎提出更多问题。
编辑:
考虑如何逐步分解问题。以下是 for 循环的迭代:
1----------
好的,我们正在寻找 1
,我们已经找到了一个。
-1---------
太棒了,又是一个 1
,现在我们的子序列长度已经增加到 2
--0--------
是的,因为这不是 1
,所以这个子序列的长度现在已知为 2 - 它不再增加,但因为这是 0
,如果它可以扩展到至少 4,它可能仍然符合条件。扩展的子序列长度现在是 3
。
---1-------
扩展的子序列长度现在是 4
!这意味着我们可以在将最后一个序列长度传递给 function
之后将其添加到总和中。这也是另一个子序列的开始 - 因此子序列长度现在重置为 1
,但扩展的子序列长度在 4
时仍然有效。这意味着这个子序列已经足够长,不会被拒绝,但我们在这个阶段还没有计算完它的长度。
----1------
子序列长度
= 2
,扩展子序列长度
= 5
-----0-----
这标志着第二个子序列的结束,像以前一样处理它。等等
------0----
-------2--- <- expanded subsequence length gets reset here
--------1-- <- start of another subsequence
---------0- <- expanded length is 2
----------2 <- expanded length is not long enough for this to qualify, discard it
所以,相当简单。我们需要跟踪两个因素:子序列长度
和扩展子序列长度
。
一旦你开始工作,想想这个输入序列“1010101”会发生什么。
关于algorithm - 如何找到子序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20136681/
例如,我有一个父类Author: class Author { String name static hasMany = [ fiction: Book,
代码如下: dojo.query(subNav.navClass).forEach(function(node, index, arr){ if(dojo.style(node, 'd
我有一个带有 Id 和姓名的学生表和一个带有 Id 和 friend Id 的 Friends 表。我想加入这两个表并找到学生的 friend 。 例如,Ashley 的 friend 是 Saman
我通过互联网浏览,但仍未找到问题的答案。应该很容易: class Parent { String name Child child } 当我有一个 child 对象时,如何获得它的 paren
我正在尝试创建一个以 Firebase 作为我的后端的社交应用。现在我正面临如何(在哪里?)找到 friend 功能的问题。 我有每个用户的邮件地址。 我可以访问用户的电话也预订。 在传统的后端中,我
我主要想澄清以下几点: 1。有人告诉我,在 iOS 5 及以下版本中,如果您使用 Game Center 设置多人游戏,则“查找 Facebook 好友”(如与好友争夺战)的功能不是内置的,因此您需要
关于redis docker镜像ENTRYPOINT脚本 docker-entrypoint.sh : #!/bin/sh set -e # first arg is `-f` or `--some-
我是一名优秀的程序员,十分优秀!