PROBLEM SET
题库
按难度与知识点筛选,找到适合的练习题。
题目列表
共 67434 题
A23757
线性筛关键是“每个合数只会被最小质因子筛到一次”,因此为 O(n)。( )
C-L5
困难
--
A23758
二分查找依赖数据的有序性,通过循环逐步缩减一半搜索区间来进行查找,且仅适用于数组或基于数组实现的数据结构。( )
C-L5
困难
--
A23759
链表通过更改指针实现高效的结点插入与删除,但结点访问效率低、占用内存较多,且对缓存利用不友好。( )
C-L5
困难
--
A23760
下面递归实现的斐波那契数列的时间复杂度为O(2n) 。( )long long fib_memo(int n, long long memo[]) { if (n <= 1) return n; if (memo[n] != -1) return memo[n]; memo[n] = fib_memo(n - 1, memo) + fib_memo(n - 2, memo); return me…
C-L5
困难
--
A23761
假设函数 gcd() 能正确求两个正整数的最大公约数,则下面的 findMusicalPattern(4,6) 函数返回2。( )void findMusicalPattern(int rhythm1, int rhythm2) { int commonDivisor = gcd(rhythm1, rhythm2); int patternLength = (rhythm1 * rhythm2)…
C-L5
困难
--
A23762
基于下面定义的函数,通过判断 isDivisibleBy9(n) == isDigitSumDivisibleBy9(n) 代码可验算如果一个数能被9整除,则它的各位数字之和能被9整除。( )bool isDivisibleBy9(int n) { return n % 9 == 0; } bool isDigitSumDivisibleBy9(int n) { int sum = 0; str…
C-L5
困难
--
A23763
给定一个由非负整数组成的数组 digits ,表示一个非负整数的各位数字,其中最高位在数组首位,且digits 不含前导0(除非是0本身)。下面代码对该整数执行 +1 操作,并返回结果数组,则横线上应填写( )。vector<int> plusOne(vector<int>& digits) { for (int i = (int)digits.size() - 1; i >= 0; --i) …
C-L5
困难
--
A23766
下述C++代码实现了归并排序算法,则横线上应填写( )。void merge(vector<int>& nums, int left, int mid, int right) { // 左子数组区间为 [left, mid],右子数组区间为 [mid+1, right] vector<int> tmp(right - left + 1); int i = left, j = mid + 1, k…
C-L5
困难
--
A23767
下述C++代码实现了快速排序算法,下面说法错误的是( )。int partition(vector<int>& arr, int low, int high) { int i = low, j = high; // 以首元素为基准 int pivot = arr[low]; while (i < j) { while (i < j && arr[j] >= pivot) j--; // 从右往左…
C-L5
困难
--
A23768
给定一个 n x n 的矩阵 matrix ,矩阵的每一行和每一列都按升序排列。函数 countLE 返回矩阵中第k 小的元素,则两处横线上应分别填写( )。// 统计矩阵中 <= x 的元素个数: 从左下角开始 int countLE(const vector<vector<int>>& matrix, int x) { int n = (int)matrix.size(); int i = …
C-L5
困难
--
A23769
唯一分解定理描述的是( )。
C-L5
困难
--
A23770
关于埃氏筛和线性筛的比较,下列说法错误的是( )。
C-L5
困难
--
A23773
以下代码计算两个正整数的最大公约数(GCD),横线上应填写( )。int gcd(int a, int b) { if (a < b) { swap(a, b); } while (b != 0) { int temp = a % b; a = b; b = temp; } return ______; }
C-L5
困难
--
A23774
isPerfectNumber 判断一个正整数是否为完全数(该数是否即等于它的真因子之和),则横线上应填写( )。一个正整数 n 的真因子包括所有小于 n 的正因子,如28的真因子为1, 2, 4, 7, 14。bool isPerfectNumber(int n) { if(n <= 1) return false; int sum = 1; for(int i = 2; ____; i++)…
C-L5
困难
--
A23775
函数 hasCycle 采用Floyd快慢指针法判断一个单链表中是否存在环,链表的头节点为 head ,即用两个指针在链表上前进: slow 每次走 1 步, fast 每次走 2 步,若存在环, fast 终会追上 slow (相遇);若无环,fast 会先到达 nullptr,则横线上应填写( )。struct Node { int val; Node *next; Node(int x) …
C-L5
困难
--
A23776
removeElements 删除单链表中所有结点值等于 val 的结点,并返回新的头结点,其中链表头结点为head ,则横线处填写( )。// 结点结构体 struct Node { int val; Node* next; Node() : val(0), next(nullptr) {} Node(int x) : val(x), next(nullptr) {} Node(int x, …
C-L5
困难
--
A23777
以下哪种情况使用链表比数组更合适?( )
C-L5
困难
--
A23778
货物运输A 国有n座城市,依次以1,2,...,n编号,其中 1 号城市为首都。这n座城市由n - 1条双向道路连接,第i条道路(1≤i< n)连接编号为ui,vi的两座城市,道路长度为li。任意两座城市间均可通过双向道路到达。现在 A 国需要从首都向各个城市运送货物。具体来说,满载货物的车队会从首都开出,经过一座城市时将对应的货物送出,因此车队需要经过所有城市。A 国希望你设计一条路线,在从首…
C-L6
困难
--
A23779
划分字符串
C-L6
困难
--
A23780
有一排香蕉,每个香蕉有不同的甜度值。小猴子想吃香蕉,但不能吃相邻的香蕉。以下代码能找到小猴子吃到最甜的香蕉组合。( )// bananas: 香蕉的甜度 void findSelectedBananas(vector<int>& bananas, vector<int>& dp) { vector<int> selected; int i = bananas.size() - 1; while …
C-L6
困难
--