181 次浏览
问题陈述给定一个大小为 n 的数组“arr”和元素 x,任务是找到要添加到数组中的最小元素数量,以使中位数等于 x。在长度为 n 的数组中的中位数是在我们按非递减顺序对元素进行排序后占据位置号 (n-1)/2 的元素。例如,在下面的数组中,中位数是 20 −arr1[] = {10, 20, 30, 40}如果 arr[] = {1, 2, 3} 且 x = 4,则我们必须在数组中添加 4 个数字,即 {4, 5, 5, 5},以使中位数等于 4算法... 阅读更多
891 次浏览
问题陈述给定一个数组“arr”,任务是找到要删除的最小元素数量以使数组变好。如果对于每个元素 a[i],都存在一个元素 a[j](i 不等于 j)使得 a[i] + a[j] 是 2 的幂,则序列 a1、a2、a3…。an 被称为良好序列。arr1[] = {1, 1, 7, 1, 5}在上面的数组中,如果我们删除元素“5”,则数组变为良好数组。此后,任何 arr[i] + arr[j] 对都是 2 的幂 −arr[0] + arr[1] = (1 + 1) = 2,它是 2 的幂arr[0] ... 阅读更多
873 次浏览
问题陈述给定一个大小为“n”的字符串。任务是删除最少的字符以使字符串成为回文串。如果给定的字符串是“abcda”,则我们可以删除除第一个和最后一个字符之外的任何 2 个字符以使其成为回文串。如果我们删除字符“b”和“c”,则“ada”字符串是回文串如果我们删除字符“c”和“d”,则“aba”字符串是回文串如果我们删除字符“b”和“d”,则“aca”字符串是回文串算法1. 找到给定字符串的最长回文子序列。我们将其称为“lpsSize”。2. 要删除的最小字符数 =(字符串长度… 阅读更多
317 次浏览
描述给定两个字符串 str1 和 str2,大小分别为 m 和 n。任务是从 str1 中删除和插入最少的字符,以便将其转换为 str2。Str1 = “tutorialspoint” Str2 = “tutorials”要将 str1 转换为 str2,我们必须从 str1 中删除五个字符,即“point”。算法1. 查找 str1 和 str2 的最长公共子序列。我们将其称为“lcsSize”2. 要删除的字符数 =(str1 的长度 - lcsSize)3. 要插入的字符数 =(str2 的长度 - lcsSize)示例#include #include using namespace std; int lcs(string ... 阅读更多
530 次浏览
问题陈述给定一组按任意顺序排列的时间区间,将所有重叠区间合并为一个,并输出结果,结果中应只包含互斥区间给定区间集为 {{12, 14}, {11, 13}, {20, 22}, {21, 23}},则区间 {12, 14} 和 {11, 13} 彼此重叠,因此将它们合并为 {11, 14}区间 {20, 22} 和 {21, 23} 彼此重叠,因此将它们合并为 {20, 23}算法1. 根据起始时间的递增顺序对区间进行排序2. 将第一个区间压入堆栈3. 对于每个区间,执行以下步骤: 3.1. 如果... 阅读更多
488 次浏览
问题陈述给定一个双向链表。使用归并排序算法对其进行排序列表:10->20->8-17->5->13->4 排序列表:4->5->8->10->13->17->20算法1. 如果 head 为 NULL 或列表只包含一个元素,则返回列表2. 通过将原始列表分成 2 部分来创建两个列表3. 对列表的第一部分和第二部分进行排序4. 合并两个排序的列表示例#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; struct node { int data; struct node *next; struct node *prev; }; node *createList(int *arr, int n){ node *head, *p, *q; p = head = new node; head->data = arr[0]; ... 阅读更多
210 次浏览
问题陈述给定一个链表。使用归并排序算法对其进行排序列表:10->20->8-17->5->13->4 排序列表:4->5->8->10->13->17->20算法1. 如果 head 为 NULL 或列表只包含一个元素,则返回列表2. 通过将原始列表分成 2 部分来创建两个列表3. 对列表的第一部分和第二部分进行排序4. 合并两个排序的列表示例#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; struct node { int data; struct node *next; }; node *createList(int *arr, int n){ node *head, *p; p = head = new node; head->data = arr[0]; head->next = NULL; for ... 阅读更多
218 次浏览
问题陈述给定两个作为数组的二叉最大堆,将它们合并成单个最大堆。Heap1[] = {20, 17, 15, 10} Heap2[] = {19, 13, 7} Result[] = {20, 19, 15, 13, 17, 7, 10}算法1. 创建一个数组来存储结果2. 将两个给定数组逐个复制到结果数组3. 构建堆以构建完整的合并最大堆示例#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; void heapify(int *arr, int n, int idx){ if (idx >= n) { return; } int l = 2 * idx + 1; int r ... 阅读更多
3K+ 次浏览
问题陈述给定 2 个排序的数组列表。编写一个函数将给定的两个排序数组合并为一个Arr1[] = {10, 15, 17, 20} Arr2[] = {5, 9, 13, 19} Result[] = {5, 9, 10, 13, 15, 17, 19, 20}算法1. 遍历两个数组 1.1. 如果 arr1[i] < arr2[j] 1.1.1. 将 arr[i] 添加到新数组 1.1.2. 增加“i”和结果数组“k”的索引 1.2. 如果 arr2[i] < arr1[j] 1.2.1. 将 arr[j] 添加到新数组 1.2.2. 增加“j”和结果数组“k”的索引 2. 重复此过程,直到两个… 阅读更多
问题陈述给定 2 个排序的单链表。编写一个函数来合并给定的两个排序链表List1: 10->15->17->20 List2: 5->9->13->19 Result: 5->9->10->13->15->17->19->20算法1. 遍历两个列表 1.1. 如果 list1->data < list2->data 1.1.1. 将 list1->data 添加到新列表并增加 list1 指针 1.2. 如果 list2->data < list1->data 1.2.1. 将 list2->data 添加到新列表并增加 list2 指针 2. 重复此过程,直到两个列表都已遍历完 3. 返回结果列表示例#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) using namespace std; struct node { int data; struct node *next; }; node *createList(int *arr, ... 阅读更多