找到 34423 篇文章,关于编程

C++ 中的随机选择索引

Arnab Chakraborty
更新于 2020年5月2日 08:36:35

641 次查看

假设我们有一个整数数组,可能包含重复的数字,我们需要随机选择给定目标数字的索引。我们可以假设给定的目标数字一定存在于数组中。例如,如果数组是 [1, 2, 3, 3, 3],那么 pick(3) 可能随机返回 2、3 或 4。为了解决这个问题,我们将遵循以下步骤:ret := -1, cnt := 1 for i in range 0 to size of v: if v[i] = target: if random number mod cnt = 0: then ret = i cnt := cnt + 1 return ret 示例 (C++)让我们看看下面的… 阅读更多

C++ 中的整数替换

Arnab Chakraborty
更新于 2020年5月2日 08:31:38

582 次查看

假设我们有一个正整数 n,我们可以执行以下操作:如果 n 是偶数,则将 n 替换为 n/2。如果 n 是奇数,则可以将 n 替换为 n + 1 或 n - 1。我们需要找到将 n 转换为 1 所需的最小替换次数?例如,如果数字是 7,则答案将是 4,因为 7 → 8 → 4 → 2 → 1 或 7 → 6 → 3 → 2 → 1。为了解决这个问题,我们将遵循以下步骤:ret := 0, n := x while n > 1: if… 阅读更多

C++ 中的旋转函数

Arnab Chakraborty
更新于 2020年5月2日 08:29:25

266 次查看

假设我们给定一个整数数组 A,令 n 为数组 A 的长度。现在假设 Bk 是通过将数组 A 顺时针旋转 k 个位置获得的数组。旋转可以定义为:F(k) = 0 * Bk[0] + 1 * Bk[1] + ... + (n-1) * Bk[n-1]。现在找到 F(0), F(1), ..., F(n-1) 的最大值。例如,如果输入是 A = [4, 3, 2, 6],那么:F(0) = (0 * 4) + (1 * 3) + (2 * 2) + (3 * 6) = 0 + 3 + 4… 阅读更多

C++ 中的 UTF-8 验证

Arnab Chakraborty
更新于 2020年5月2日 08:26:28

2K+ 次查看

假设我们有一系列表示数据的整数。我们需要检查它是否是有效的 UTF-8 编码。一个 UTF-8 字符可以是 1 到 4 个字节长。有一些属性:对于 1 字节字符,第一个位是 0,后面是其 Unicode 代码。对于 n 字节字符,前 n 位都是 1,第 n+1 位是 0,后面是 n-1 个字节,其最重要的 2 位是 10。所以编码技术如下:字符数量范围 UTF-8 八位字节序列 0000 0000 0000 007F 0xxxxxxx 0000 0080 0000 07FF 110xxxxx 10xxxxxx 0000 0800 0000 FFFF 1110xxxx 10xxxxxx 10xxxxxx 0001 0000 0010 FFFF 11110xxx 10xxxxxx 10xxxxxx… 阅读更多

C++ 中的淘汰游戏

Arnab Chakraborty
更新于 2020年5月2日 08:19:56

758 次查看

假设我们有一组从 1 到 n 的排序整数。也就是说,从左到右开始,我们需要删除第一个数字以及之后每个隔一个的数字,直到到达列表的末尾。我们将再次重复之前的步骤,但这次是从右到左,删除最右边的数字以及剩余数字中每个隔一个的数字。我们将再次重复这些步骤,交替地从左到右和从右到左,直到只剩下一个数字。我们需要找到从列表开始时剩余的最后一个数字… 阅读更多

C++ 中的链表随机节点

Arnab Chakraborty
更新于 2020年5月2日 08:17:15

320 次查看

假设我们有一个单链表,我们需要找到链表中一个随机节点的值。这里每个节点被选择的概率必须相同。例如,如果列表是 [1, 2, 3],那么它可以返回 1、2 和 3 范围内的随机节点。为了解决这个问题,我们将遵循以下步骤:在 getRandom() 方法中,执行以下操作:ret := -1, len := 1, v := x while v is not null: if rand() is divisible by len: then ret := val of v increase len by 1 v := next of v return ret 示例 (C++)让我们看看… 阅读更多

C++ 中的摆动子序列

Arnab Chakraborty
更新于 2020年5月2日 08:14:05

248 次查看

假设我们有一系列数字,如果连续数字之间的差严格地在正数和负数之间交替,则称其为摆动序列。第一个差可以是正数或负数。少于两个元素的序列微不足道地是一个摆动序列。例如,[1, 7, 4, 9, 2, 5] 是一个摆动序列,因为如果看到,差 (6, -3, 5, -7, 3) 是交替的正数和负数。但是,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个是因为它的前两个差是… 阅读更多

C++ 中的超级幂

Arnab Chakraborty
更新于 2020年5月2日 08:11:59

414 次查看

假设我们需要计算 a^b mod 1337,其中 a 是一个正整数,b 是一个以数组形式给出的极大的正整数。例如,如果 a = 2 且 b = [1, 0],则输出将是 1024。为了解决这个问题,我们将遵循以下步骤:定义 powerMod() 方法,它接收 base 和 powerm := 1337, ret := 1 while power is not 0: if power is odd: then ret := ret * base mod m base := base^2 mod m power := power / 2 return ret 定义 superPower(),它接收 a 和 b if size of b = 0:… 阅读更多

C++ 中的最大可整除子集

Arnab Chakraborty
更新于 2020年5月2日 08:08:35

77 次查看

假设我们有一组不同的正整数,我们需要找到最大的子集,使得该子集中的每一对 (Si, Sj) 元素都满足:Si mod Sj = 0 或 Sj mod Si = 0。例如,如果输入是 [1, 2, 3],则可能的结果可能是 [1, 2] 或 [1, 3]。为了解决这个问题,我们将遵循以下步骤:创建一个数组 ret,设置 endpoint := 0,retLen := 1,n := num 的大小 if n is 0: then return empty set sort nums array create two arrays len and par of size n, initialize… 阅读更多

C++ 中的水壶问题

Arnab Chakraborty
更新于 2020年5月2日 08:04:37

2K+ 次查看

假设我们有两个容量分别为 x 和 y 升的水壶。我们有无限量的可用水。现在我们需要确定是否可以使用这两个水壶精确测量 z 升水。如果 z 升水是可测量的,那么到最后我们必须在一个或两个水桶中都含有 z 升水。我们可以执行以下几个操作:用水将任何一个水壶装满。清空任何一个水壶。将水从一个水壶倒入另一个水壶,直到另一个水壶完全装满或第一个水壶本身为空。所以… 阅读更多

广告
© . All rights reserved.