355 次浏览
假设我们有一个包含小写 ASCII 字符的字符串,我们必须找到其所有不同的连续回文子字符串。因此,如果输入类似于“bddaaa”,则输出将是 [a, aa, aaa, b, d, dd]。为了解决这个问题,我们将遵循以下步骤:m := 一个新的映射 n := s 的大小 matrix := 创建两行 n 个 0 的矩阵 s := "@" 连接 s 连接 "#" 对于 j 范围从 0 到 1,执行 temp := 0 matrix[j, 0] := 0 i := 1 当 i
142 次浏览
假设我们有一个数字 n;我们必须检查长度为 n+1 的小写字符串,以便任何位置的字符都按字典顺序大于其紧邻的下一个字符。因此,如果输入类似于 15,则输出将是 ponmlkjihgfedcba。为了解决这个问题,我们将遵循以下步骤:temp_str := 空字符串 extra := n mod 26 如果 extra >= 1,则 对于 i 范围从 26 -(extra + 1) 到 25,执行 temp_str := temp_str + str[i] count := n / 26(整数除法) 对于 i 范围从 1 到 count + 1,执行 对于 j 范围从 0 到 25,执行 temp_str := ... 阅读更多
127 次浏览
假设我们有一个包含 N 个数字的数组,我们必须检查是否存在 3 个元素,使得 b[i]< b[j] < b[k] 并且 i < j < k,时间复杂度为线性 (O(n))。如果存在多个这样的三元组,则打印其中任何一个。因此,如果输入类似于 [13, 12, 11, 6, 7, 3, 31],则输出将是 [6, 7, 31]。为了解决这个问题,我们将遵循以下步骤:n := A 的大小 maximum := n-1, minimum := 0 smaller := 一个大小为 1000 的数组,并用 0 填充 smaller[0] := -1 对于 i 范围从 1 到 n,执行 如果 ... 阅读更多
81 次浏览
假设我们有一个数字 N,我们必须找到一个正数 M,使得 gcd(N^M, N&M) 尽可能大,并且 m < n。我们还将返回由此获得的最大 gcd。因此,如果输入类似于 20,则输出将是 31。为了解决这个问题,我们将遵循以下步骤:如果 bit_count(n) 与 0 相同,则 对于 i 范围从 2 到 int(n 的平方根) + 1,执行 如果 n mod i 与 0 相同,则 返回 int(n / i) 否则,val := 0 p := dup n := n 当 n 非零时,执行 如果 (n AND 1) 相同 ... 阅读更多
249 次浏览
概念关于给定的一组元素,确定这些元素的哪种排列会导致归并排序的最坏情况?我们知道,渐近地,归并排序总是消耗 O(n log n) 时间,但是需要更多比较的情况通常在实践中消耗更多时间。现在我们基本上需要确定输入元素的排列,这将导致在实现典型的归并排序算法时进行最大次数的比较。示例考虑以下元素集作为已排序数组 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 结果输入数组将导致 ... 阅读更多
162 次浏览
概念关于给定的平衡二叉搜索树和目标和,我们编写一个函数,如果存在和等于目标和的配对,则返回 true,否则返回 false。在这种情况下,预期时间复杂度为 O(n),并且只能实现 O(Logn) 的额外空间。在这里,不允许对二叉搜索树进行任何修改。我们必须注意,平衡 BST 的高度始终为 O(Logn)。示例方法根据暴力解决方案,我们考虑 BST 中的每一对并验证总和是否等于 X。此解决方案的时间复杂度将为 O(n^2)。现在一个 ... 阅读更多
210 次浏览
概念关于给定的非负整数数组 Arr[],任务是确定一个整数 X,使得 (Arr[0] XOR X) + (Arr[1] XOR X) + … + Arr[n – 1] XOR X 尽可能小。输入 Arr[] = {3, 4, 5, 6, 7} 输出 X = 7, Sum = 10 方法因此,我们将验证数组中每个数字的二进制表示中的第 'i' 位,并考虑并计算那些将该第 'i' 位设置为 '1' 的数字,因为这些设置位将有助于最大化总和而不是最小化。因此,我们必须构建这个设置的第 'i' 位 ... 阅读更多
296 次浏览
假设我们有一个包含 n 个数字的数组;我们必须找到一个非空子集,使得子集的元素之和可以被 n 整除。因此,我们必须输出任何这样的子集,包括其大小和原始数组中元素的索引(如果存在)。因此,如果输入类似于 [3, 2, 7, 1, 9],则输出将是 [2],[1 2]。为了解决这个问题,我们将遵循以下步骤:定义一个映射 my_map add := 0 对于初始化 i := 0,当 i < N 时,更新(将 i 增加 1),执行:add := (add ... 阅读更多
107 次浏览
假设我们有一个字符串 S。长度为 n。这些 n 个盒子彼此相邻,位置 i 处的字符 R 表示第 i 个盒子被推向右侧。类似地,位置 i 处的 L 表示第 i 个盒子被推向左侧,点“.”表示空空间。从初始配置开始,在每个时间单位,一个被推向右侧的盒子能够将下一个盒子推向右侧,相同的动作也可以应用于左侧。我们必须找到所有盒子在不再 ... 阅读更多
524 次浏览
概念现在头文件 graphics.h 包含 fillpoly() 函数,该函数用于绘制和填充多边形,例如三角形、矩形、五边形、六边形等。因此,此函数需要与 drawpoly() 函数相同的参数。语法void fillpoly( int number, int *polypoints );在本例中,number 指示 (n + 1) 个点的数量,其中 n 是多边形顶点的数量,而 polypoints 指向一个包含 (n*2) 个整数的序列。输入 arr[] = {320, 150, 400, 250, 250, 350, 320, 150};输出 解释 因此,fillpoly() 的声明包含两个参数:number 指定 (n + 1) 个点的数量,其中 n 表示顶点的数量……阅读更多