实现一个高效的字符串压缩算法,要求如下:- 输入是一个字符数组 `char[] chars`,其中每个字符为一个英文字母(A-Z,大小写不敏感)。- 压缩规则:将连续相同字符的部分替换为“字符+出现次数”。例如 `"AAAAA"` 压缩为 `"A5"`,若连续出现次数为1则只保留字符本身。- 若压缩后的长度大于等于原字符串,返回原字符串。- 必须在原地修改输入数组,并返回压缩后的有效长度。例如:```输入: ["a","a","a","b","b",&qu……
实现一个高效的字符串压缩算法,要求如下:- 输入是一个字符数组 `char[] chars`,其中每个字符为一个英文字母(A-Z,大小写不敏感)。- 压缩规则:将连续相同字符的部分替换为“字符+出现次数”。例如 `"AAAAA"` 压缩为 `"A5"`,若连续出现次数为1则只保留字符本身。- 若压缩后的长度大于等于原字符串,返回原字符串。- 必须在原地修改输入数组,并返回压缩后的有效长度。例如:```输入: ["a","a","a","b","b",&qu……
编写一个C#程序,实现一个支持通配符匹配的函数,匹配规则如下:- 输入字符串只包含小写英文字母(a-z),而模式串可能包含小写英文字母和通配符,其中: - `'?'` 可以匹配任意单个小写字母; - `'*'` 可以匹配任意字符串(包括空字符串,即不匹配任何字符)。 例如:- `"ab"` 应该与模式 `"a?"` 匹配;- `"abcde"` 应该与模式 `"a*e"` 匹配;- `"acd"` 不应与模式 `"ab*c"` 匹配。请使……
编写一个C#程序,使用递归和动态规划两种方法实现计算第n个斐波那契数(Fibonacci number),并比较两种方法在时间复杂度和空间复杂度上的差异。要求:1. 使用递归方式实现时,不能使用任何循环结构。2. 使用动态规划方式实现时,必须优化空间复杂度至O(1)。3. 程序需处理n为负数的情况,抛出自定义异常“InvalidFibonacciIndexException”。4. 为两种方法编写单元测试,确保n在0到90范围内结果正确(注意C#中int的范围限制)。
实现一个高效的字符串压缩算法,要求如下:1. 压缩规则:连续相同的字符应被替换为该字符后跟一个方括号包裹的重复次数,例如 "aaabbb" 应压缩为 "a[3]b[3]"。2. 压缩后的字符串如果长度大于或等于原始字符串,则返回原始字符串。3. 输入字符串只包含英文字母,且长度不超过 10^5。4. 时间复杂度必须为 O(n),n 为输入字符串长度。5. 空间复杂度应为 O(1)(输出字符串所需空间不计入)。请编写函数实现上述逻辑,并通过以下测试用例验证:- 输入:"aabcccccaaa",输出应为 "a[2]b[1]c[……
编写一个C#程序,使用递归和LINQ实现对一个整数列表的分组排序。规则如下:1. 将列表中所有数字按 **个位数** 分组(例如,个位数为3的数字如13、23、3等归为一组)。2. 每组内部按数值升序排列。3. 所有组按 **组内元素个数从多到少排序** 输出。4. 若两组元素个数相同,则按该组 **个位数从小到大排序**。5. 要求整个操作通过一个递归函数和LINQ完成,不得使用任何循环语句(for、foreach、while等)。输入示例:```csharpList numbers = new List { 12, 23, 34, 45, 56, 67, 78, 89, 90, 13, 2……
有一个包含 100 个正整数的数组,其中每个数字都在 1 到 99 之间(包含)。已知其中有且仅有一个数字是重复的(可能重复多次),请设计一个算法在不修改原数组、不使用额外空间(即 O(1) 空间复杂度)的前提下,找出这个重复的数字。要求时间复杂度尽可能低。写出你的解决方案并解释其原理。
有一个包含100个元素的整数数组,其中每个元素的取值范围是1到99(包含),也就是说有且仅有1个数字是重复的(这个数字出现了两次,其余数字各出现一次)。请使用C#编写一个函数,找出这个重复的数字。要求:1. 不能使用LINQ;2. 不能使用额外的数据结构(如哈希表、字典、集合等);3. 时间复杂度尽量优化;4. 如果有多种实现方式,请说明并选择一种最优的实现方式。
有一个包含 100 个正整数的数组,其中所有元素的取值范围是 1 到 100,且每个数字恰好出现一次,唯有一个数字是重复的(即出现两次),导致另一个数字缺失。请在 O(n) 时间复杂度和 O(1) 空间复杂度内找出这个重复的数字以及缺失的数字,并返回这两个数字。
请实现一个高效的函数 `FindKthLargest`,用于在**未排序的整数数组**中查找**第 k 大的元素**(从 1 开始计数,k ≥ 1),并分析其时间复杂度。要求不使用系统内置排序函数或堆结构(如 `Sort()`、`SortedSet`、`PriorityQueue` 等),仅通过手动实现算法逻辑完成。函数签名如下:```csharpint FindKthLargest(int[] nums, int k)```**附加要求:**- 如果数组中有重复元素,应**合并处理**,即重复元素视为同一大小。- 若 k 超过数组中**不同元素的数量**,则返回 `-1` 表示无效输入。**……
编写一个C#程序,模拟一个任务调度系统,满足以下条件:1. 系统中有一组任务(Task),每个任务有唯一的ID(Guid)、名称(string)和执行时间(int,单位为毫秒)。2. 任务分为两类:**独立任务**和**依赖任务**。依赖任务必须在其所依赖的任务完成后才能执行。3. 系统支持并发执行多个独立任务,但同一时间最多运行3个并发任务。4. 所有任务一旦开始执行,必须完整运行完其执行时间,不可中断。5. 程序需输出每个任务的开始时间和结束时间(格式:任务ID - 开始时间(ms) - 结束时间(ms))。6. 实现一个调度器类 `TaskScheduler`,包含以下方法:```csh……