测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

PROBLEM SET

题库

按难度与知识点筛选,找到适合的练习题。

共 67434 题
重置

题目列表

共 67434 题
A18408 数组的存储空间在物理上通常是连续的,而链表的结点可以存储在不连续的内存空间中。 C-L5 数组存储 内存空间 链表存储 困难 -- A18409 高精度减法中,假设两个高精度数按低位在前存储,且已经保证被减数不小于减数。下面处理借位逻辑代码中横线处应填入( )。if (a[i] < b[i]) { a[i + 1]--; ________________; } t = a[i] - b[i]; C-L5 数组模拟 高精度运算 借位处理 困难 -- A18410 小杨在学校义卖会上负责打包“零食盲盒”。每个盲盒重量不同,快递盒最多承重 limit 克,每个快递盒最多装两个盲盒。为了尽量少用快递盒,他采用如下策略:(1)每次把最轻的盲盒和最重的盲盒尝试放在一起;(2)如果两者重量之和不超过 limit ,就一起装;(3)否则,只能让最重的盲盒单独装一盒。下面代码用于计算最少需要多少个快递盒,则横线处应填入的是( )。int minBoxes(vector<… C-L5 双指针 贪心算法 排序 困难 -- A18411 在对长度为n(n≥1)的数组进行归并排序的过程中, mergeArray 函数(合并两个有序子数组的操作)被调用的次数是( )。const int MAXN = 100005; int a[MAXN]; int tempArr[MAXN]; void mergeArray(int left, int mid, int right) { int i = left; // 左半部分起点 int j … C-L5 递归 归并排序 时间复杂度 分治算法 困难 -- A18412 下面哪句话最符合归并排序的思想?( ) C-L5 递归 归并排序 分治算法 困难 -- A18413 下面代码段实现了快速排序的划分操作(以首元素为基准),横线处代码应填入( )。int partition(vector<int>& arr, int low, int high) { int pivot = arr[low]; int i = low, j = high; while (i < j) { while (i < j && arr[j] >= pivot) j--; while (i… C-L5 快速排序 双指针 划分操作 困难 -- A18414 有若干根木头,长度存于 wood 。每切一刀可以把一段木头分成两段。函数 check(wood, K, x) 返回:用不超过 K 刀,能否使所有木段长度都不超过 x 。下面代码使用二分答案查找最小可行的 x ,横线处应填( )。int binary_cut(vector<int>& wood, int K) { int l = 1; int r = 0; for (int len : wood)… C-L5 二分答案 循环结构 贪心算法 困难 -- A18415 在一个有序数组中查找第一个大于或等于 x 的元素位置,横线处应填写( )。int lowerBound(vector<int>& a, int x) { int l = 0, r = a.size(); while (l < r) { int mid = l + (r - l) / 2; if (a[mid] >= x) ________________; // 在此处填入代码 else l =… C-L5 二分查找 有序数组 边界查找 困难 -- A18416 下面代码用于统计 n 中因子 2 出现了多少次。若 n = 40 ,输出是( )。int n = 40; int cnt = 0; while (n % 2 == 0) { cnt++; n /= 2; } cout << cnt; C-L5 循环结构 整数除法 因子统计 困难 -- A18417 下面代码实现了计算 的快速幂算法,该算法体现的编程思想是( )。long long power(long long x, int n) { if (n == 0) return 1; long long res = power(x, n / 2); if (n % 2 == 0) return res * res; else return res * res * x; } C-L5 递归 分治 快速幂 困难 -- A18418 下面关于埃氏筛法的说法正确的是( )。 C-L5 时间复杂度 埃氏筛法 素数筛选 困难 -- A18419 下面代码实现线性筛(欧拉筛),以筛选出 以内的所有素数。横线处的代码应为( )。vector<int> sieve(int n) { vector<bool> is_prime(n + 1, true); vector<int> primes; if (n >= 0) is_prime[0] = false; if (n >= 1) is_prime[1] = false; for (int i… C-L5 循环结构 线性筛 素数筛法 困难 -- A18420 给定一棵二叉树,采用广度优先搜索 BFS 返回其右视图,其中右视图中的每个节点都是该层最右侧的节点。横线处应填写( )。vector<int> rightSideView(TreeNode* root) { vector<int> result; if (!root) return result; queue<TreeNode*> q; q.push(root); while (!q.empty… C-L6 队列 广度优先搜索 二叉树 层序遍历 困难 -- A18421 使用如下欧几里得算法求 gcd(105, 45) 时,函数 gcd(a, b) 的递归调用序列正确的是( )。int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); } C-L5 递归 最大公约数 欧几里得算法 困难 -- A18422 双链表结点定义如下,若要删除双链表中的中间结点(非首尾节点) p ,下面写法正确的是( )。struct Node { int val; Node* prev; Node* next; }; C-L5 指针操作 结点删除 双链表 困难 -- A18423 下面代码遍历并输出一个循环单链表,其中 head 指向链表的第一个节点,横线处应填入的是( )。struct Node { int val; Node* next; }; void printList(Node* head) { if (head == nullptr) return; Node* p = head; _______________________ // 在此处填入代码 cout… C-L5 指针操作 链表遍历 循环单链表 困难 -- A18424 假设 head != nullptr ,下面是实现单向循环链表在头节点后插入新节点的代码,横线处应填入( )。struct Node { int val; Node* next; }; void insertAfterHead(Node* head, int x) { Node* newNode = new Node; newNode->val = x; ____________________… C-L5 指针操作 链表插入 循环链表 困难 -- A18425 满二叉树 C-L6 深度优先搜索 递归 二叉树 树形结构 困难 -- A18427 动态规划问题通常要求具有最优子结构,并且常常存在重叠子问题。 C-L6 动态规划 最优子结构 重叠子问题 困难 -- A18428 使用栈非递归实现二叉树前序遍历时,若希望先访问左子树,通常应先将右孩子入栈,再将左孩子入栈。 C-L6 非递归遍历 二叉树前序遍历 困难 --