您好,欢迎来到九壹网。
搜索
您的当前位置:首页noc创新思维编程初赛试题

noc创新思维编程初赛试题

来源:九壹网
noc创新思维编程初赛试题

1. 请写出2个常见的数据结构,并简要介绍它们的特点。 答案:常见的数据结构包括数组和链表。数组是一种线性数据结构,它可以存储相同类型的元素,这些元素在内存中是连续的。数组具有O(1)的访问时间复杂度,但插入和删除的时间复杂度为O(n)。链表也是一种线性数据结构,不同于数组的是它的元素在内存中不是连续的,而是通过指针链接起来的。链表具有O(1)的插入和删除时间复杂度,但访问元素的时间复杂度为O(n)。

2. 给定一个长度为n的数组arr,请编写代码实现查找数组中第k大的元素。

答案:有不同的方法可以解决这个问题,以下是其中一种利用快速排序思想的方法: ```

#include using namespace std;

int partition(vector& nums, int low, int high){ int pivot = nums[high]; int i = low - 1;

for(int j = low; j < high; j++){ if(nums[j] > pivot){ i++;

swap(nums[i], nums[j]); } }

swap(nums[i+1], nums[high]);

return i+1; }

int findKthLargest(vector& nums, int k) { int n = nums.size();

int low = 0, high = n - 1; while(1){

int pivotIndex = partition(nums, low, high); if(pivotIndex == k-1) return nums[pivotIndex]; else if(pivotIndex > k-1) high = pivotIndex-1; else low = pivotIndex+1; } }

int main(){ int n,k;

cin >> n >> k; vector arr(n);

for(int i = 0; i < n; i++){ cin >> arr[i]; }

int kthLargest = findKthLargest(arr, k); cout << kthLargest; return 0; } ```

3. 给定一个字符串,编写一个函数判断它是否是回文字符串。 答案:回文字符串是指正向和反向读取都相同的字符串,可以通过比较正向和反向的字符串是否相等来判断一个字符串是否

是回文字符串。以下是普通的方法和利用栈的方法实现: ```

// 普通方法

bool isPalindrome(string s) { int n = s.length();

for(int i = 0; i < n/2; i++){

if(s[i] != s[n-i-1]) return false; }

return true; }

// 利用栈

bool isPalindrome(string s) { stack st; for(char c : s){

if(isalnum(c)) st.push(tolower(c)); }

for(int i = 0; i < s.length(); i++){ if(!isalnum(s[i])) continue;

char c = tolower(st.top()); st.pop(); if(c != tolower(s[i])) return false; }

return true; } ```

4. 给定两个整数m和n,编写一个函数计算它们的最大公约数。 答案:最大公约数可以用辗转相除法来计算,即先求出m除以n的余数r,然后用n去除r,将最后一个除数n作为结果

即可。这个过程可以用递归来实现,如下: ```

int (int m, int n){ if(n == 0) return m; return (n, m % n); } ```

5. 给定一个由整数组成的非空数组,编写一个函数计算它的平均数。

答案:平均数就是将数组中所有元素相加然后除以数组长度,可以用以下代码实现: ```

double getAverage(vector& nums){ int n = nums.size(); int sum = 0;

for(int num : nums){ sum += num; }

return sum / (double)n; } ```

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务