213 次浏览
假设我们有一个偶数长度的整数数组A,现在我们必须判断是否可以重新排列它,使得对于每个0 ≤ i < A.length / 2,都有 A[2 * i + 1] = 2 * A[2 * i]。如果m[kv的键]不为0且m[2*kv的键]>0,则x := m[kv的键]和m[2*kv的键]的最小值,cnt := cnt – (x * 2),m[2 * kv的键]减去x,m[kv的键]减去x;否则,当kv的键=0时,cnt := cnt……阅读更多
372 次浏览
假设我们有一副牌;每张牌都有一个唯一的数字。我们可以按任何顺序排列这副牌。因此,最初所有牌都正面朝下(未显示)在一副牌中。现在,我们多次执行以下步骤,直到所有牌都显示出来——假设我们有一副牌;每张牌都有一个唯一的数字。我们可以按任何顺序排列这副牌。因此,最初所有牌都正面朝下(未显示)在一副牌中。现在,我们多次执行以下步骤,直到所有牌都显示出来……阅读更多
328 次浏览
假设我们有初始能量P、初始分数0分和一个代币包。现在每个代币最多只能使用一次,有一个值token[i],并且可能有两种使用方法,如下所示——如果我们至少有token[i]能量,那么我们可以正面向上玩代币,损失token[i]能量,获得1分。否则,如果我们至少有1分,我们可以反面向上玩代币,获得token[i]能量,损失1分。我们必须找到我们可以获得的最大分数……阅读更多
288 次浏览
假设我们有一个整数数组A,这里一次移动包括选择任何A[i]并将其加1。我们必须找到使A中每个值都唯一的最小移动次数。因此,如果输入类似于[3, 2, 1, 2, 1, 7],则输出将为6,因为在6次移动后,数组可以是[3, 4, 1, 2, 5, 7],可以证明用5次或更少的移动次数无法使数组具有所有不同的值。为了解决这个问题,我们将遵循以下步骤——ret:= 0,对数组进行排序……阅读更多
779 次浏览
假设对于某个固定的N值,当数组A是整数1, 2, ..., N的排列,并且——对于每个i < j,不存在这样的k使得i < k < j且A[k] * 2 = A[i] + A[j]时,数组A是漂亮的。假设我们有N,我们必须找到任何漂亮的数组A。因此,如果输入类似于5,则输出将为[3, 1, 2, 5, 4]。为了解决这个问题,我们将遵循以下步骤——创建一个名为ret的数组,将1插入ret中,while ret的大小< N,创建一个……阅读更多
445 次浏览
假设给定一个由0和1组成的数组A,我们必须找到有多少个非空子数组的和为S?因此,如果输入类似于[1, 0, 1, 0, 1],而S = 2,则结果将为4,因为子数组是[1, 0, 1],[1, 0, 1],[1, 0, 1],[1, 0, 1]。为了解决这个问题,我们将遵循以下步骤——定义一个名为atMost()的方法,这将采用数组A和整数x,如果x < 0,则返回0,设置j := 0并设置ret :=……阅读更多
314 次浏览
假设给定一个由'0'和'1'组成的字符串。如果该字符串由一些'0'(可能为0)组成,然后是一些'1'(也可能为0),则该字符串将是单调递增的。我们有一个由'0'和'1'组成的字符串S,我们可以将任何'0'翻转为'1',或将'1'翻转为'0'。找到使S单调递增的最小翻转次数。因此,如果输入类似于“010110”,则输出将为2。通过翻转,我们可以得到“011111”或“000111”。为了解决这个问题,我们将遵循以下步骤——n := 大小……阅读更多
358 次浏览
假设我们有一个数组A,我们必须将其划分为两个子数组left和right,使得——left子数组中的每个元素都小于或等于right子数组中的每个元素。left和right子数组是非空的。left子数组具有尽可能小的尺寸。我们必须找到这种划分后left的长度。保证存在这种划分。因此,如果输入类似于[5, 0, 3, 8, 6],则输出将为3,因为left数组将为[5, 0, 3],而right子数组将为[8, 6]。为了解决这个问题,我们将……阅读更多
209 次浏览
假设我们有一个整数数组;我们必须按升序对它们进行排序。因此,如果数组类似于[5, 2, 3, 1],则结果将为[1, 2, 3, 5]。为了解决这个问题,我们将遵循以下步骤——创建一个名为partition的方法,这将采用数组、low和high,设置pivot := low,对于范围从low到high – 1的i,如果nums[i] < nums[high],则交换(nums[i]和nums[pivot]),将pivot加1,交换nums[pivot]和nums[high],定义一个名为sortArr()的方法,这将采用数组、low和high,如果low >= high,则返回partitionIndex := partition(nums, low, high),sortArr(nums, low, partitionIndex……阅读更多
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,……阅读更多