找到 34423 篇文章,关于编程

C++ 中成对加倍的数组

Arnab Chakraborty
更新于 2020年4月30日 13:29:46

213 次浏览

假设我们有一个偶数长度的整数数组 A,现在我们必须判断是否可以重新排序它,使得对于每个 0 ≤ i < n / 2,A[2 * i + 1] = 2 * A[2 * i]。如果存在这样的重新排序,则返回 true,否则返回 false。例如,如果输入为 [3, 1, 3, 6],则输出为 false,因为即使我们重新排列它,我们也无法满足条件。如果输入为 [2, 1, 2, 6],则输出为 false,因为我们无法获得满足条件的排序。如果输入为 [1, 2, 2, 4],则输出为 true,因为我们可以对它进行重新排序,例如 [1, 2, 2, 4]。为了解决这个问题,我们将遵循以下步骤:创建哈希映射 m 来存储数组 A 中每个数字的出现次数cnt := 0for 每个 kv 在 m 中,如果 kv 的键 = 0,则cnt := cnt + m[0]otherwise when key of kv != 0, thenif m[kv 的键] 不为 0 且 m[2* kv 的键] > 0x := m[kv 的键] 和 m[2* kv 的键] 的最小值cnt := cnt – (x * 2)将 m[2 * kv 的键] 减少 x将 m[kv 的键] 减少 x否则当 kv 的键 = 0 时,则cnt := cnt ... 阅读更多

C++ 中按升序揭示卡片

Arnab Chakraborty
更新于 2020年4月30日 13:25:09

372 次浏览

假设我们有一副牌;每张牌都有一个唯一的数字。我们可以按任何我们想要的顺序排列牌堆。因此,最初,所有卡片都正面朝下(未揭示)放在一副牌堆中。现在,我们多次执行以下步骤,直到所有卡片都被揭示:假设我们有一副牌;每张牌都有一个唯一的数字。我们可以按任何我们想要的顺序排列牌堆。因此,最初,所有卡片都正面朝下(未揭示)放在一副牌堆中。现在,我们多次执行以下步骤,直到所有卡片都被揭示 ... 阅读更多

C++ 中的代币包

Arnab Chakraborty
更新于 2020年4月30日 13:11:23

328 次浏览

假设我们有一个初始能量 P,一个初始得分 0 分,以及一个代币包。现在每个代币最多只能使用一次,有一个值 token[i],并且可能有两种使用方式,如下所示:如果我们至少有 token[i] 能量,那么我们可以正面向上玩代币,损失 token[i] 能量,并获得 1 分。否则,当我们至少有 1 分时,我们可以正面向下玩代币,获得 token[i] 能量,并损失 1 分。我们必须找到我们可以获得的最大点数 ... 阅读更多

C++ 中使数组唯一所需的最小增量

Arnab Chakraborty
更新于 2020年4月30日 13:08:33

288 次浏览

假设我们有一个整数数组 A,这里一个移动包括选择任何 A[i],并将其加 1。我们必须找到使 A 中每个值都唯一的最小移动次数。因此,如果输入类似于 [3, 2, 1, 2, 1, 7],则输出将为 6,因为在 6 次移动后,数组可以是 [3, 4, 1, 2, 5, 7],可以证明用 5 次或更少的移动使数组具有所有不同的值是不可能的。为了解决这个问题,我们将遵循以下步骤:ret:= 0对数组进行排序 ... 阅读更多

C++ 中的美丽数组

Arnab Chakraborty
更新于 2020年4月30日 13:05:06

779 次浏览

假设对于 N 的某个固定值,当数组 A 是整数 1、2、...、N 的排列,并且:对于每个 i < j,不存在这样的 k 使得 i < k < j 且 A[k] * 2 = A[i] + A[j]。假设我们有 N,我们必须找到任何美丽的数组 A。因此,如果输入类似于 5,则输出将为 [3, 1, 2, 5, 4]为了解决这个问题,我们将遵循以下步骤:创建一个名为 ret 的数组,将 1 插入 ret中while ret 的大小 < N创建一个 ... 阅读更多

C++ 中和为 S 的二进制子数组

Arnab Chakraborty
更新于 2020年4月30日 13:01:18

445 次浏览

假设给定一个由 0 和 1 组成的数组 A,我们必须找到有多少个非空子数组的和为 S?因此,如果输入类似于 [1, 0, 1, 0, 1],而 S = 2,则结果将为 4,因为子数组为 [1, 0, 1, 0, 1]、[1, 0, 1, 0, 1]、[1, 0, 1, 0, 1]、[1, 0, 1, 0, 1]。为了解决这个问题,我们将遵循以下步骤:定义一个名为 atMost() 的方法,它将采用数组 A 和整数 xif x < 0,则返回 0,设置 j := 0 并设置 ret := ... 阅读更多

C++ 中将字符串翻转为单调递增

Arnab Chakraborty
更新于 2020年4月30日 12:55:51

314 次浏览

假设给定一个由 '0' 和 '1' 组成的字符串。如果该字符串由一定数量的 '0'(可能为 0)组成,然后后跟一定数量的 '1'(也可能为 0),则该字符串将是单调递增的。我们有一个由 '0' 和 '1' 组成的字符串 S,我们可以将任何 '0' 翻转为 '1' 或将 '1' 翻转为 '0'。找到使 S 单调递增所需的最小翻转次数。因此,如果输入类似于“010110”,则输出将为 2。通过翻转,我们可以得到“011111”或“000111”。为了解决这个问题,我们将遵循以下步骤:n := 大小 ... 阅读更多

C++ 中将数组划分为不相交的区间

Arnab Chakraborty
更新于 2020年4月30日 12:52:20

358 次浏览

假设我们有一个数组 A,我们必须将其划分为两个子数组 left 和 right,使得:left 子数组中的每个元素都小于或等于 right 子数组中的每个元素。left 和 right 子数组是非空的。left 子数组具有尽可能小的尺寸。我们必须找到这种划分后 left 的长度。保证存在这样的划分。因此,如果输入类似于 [5, 0, 3, 8, 6],则输出将为 3,因为 left 数组将为 [5, 0, 3],而 right 数组将为 [8, 6]。为了解决这个问题,我们将 ... 阅读更多

C++ 中对数组进行排序

Arnab Chakraborty
更新于 2020年4月30日 12:48:57

209 次浏览

假设我们有一个整数数组;我们必须按升序对它们进行排序。因此,如果数组类似于 [5, 2, 3, 1],则结果将为 [1, 2, 3, 5]为了解决这个问题,我们将遵循以下步骤:创建一个名为 partition 的方法,它将采用数组、low 和 highset pivot := lowfor i in range low to high – 1if nums[i] < nums[high],则 swap(nums[i] 和 nums[pivot]),将 pivot 增加 1swap nums[pivot] 和 nums[high]定义一个名为 sortArr() 的方法,它将采用数组、low 和 highif low >= high,则返回partitionIndex := partition(nums, low, high)sortArr(nums, low, partitionIndex ... 阅读更多

C++ 中的在线选举

Arnab Chakraborty
更新于 2020年4月30日 12:44:30

503 次浏览

假设在一次选举中,第 i 票是在 times[i] 时投给 persons[i] 的。现在,我们必须实现以下查询函数:TopVotedCandidate.q(int t) 这将找到在时间 t 领导选举的人员编号。在时间 t 投出的选票将计入我们的查询。如果有平局,则最近的投票(在平局候选人中)获胜。因此,如果我们用 TopVotedCandidate([0, 1, 1, 0, 0, 1, 0],[0, 5, 10, 15, 20, 25, 30]) 初始化它,然后像这样调用 q():q(3)、q(12)、q(25)、q(15)、q(24)、q(8),则结果将为 [0, 1, ... 阅读更多

广告

© . All rights reserved.