《每日一套题·提升你我能力》· 第二篇
大家好,我是安然无虞。
文章目录
- 每篇前言
- 一、选择填空题
-
- 1.简单指针问题
- 2.函数指针问题
- 3.操作符优先级问题
- 二、编程设计题
-
- 1.面试题:移除元素
-
- 思路一:
- 思路二:空间换时间
- 思路三:双指针算法
- 2.面试题:合并两个有序数组
-
- 思路一:归并思想
- 思路二:多指针方法
- 三、遇见安然遇见你,不负代码不负卿。
每篇前言
博客主页:安然无虞
作者认证:2021年博客新星Top2
咱的口号:🌹小比特,大梦想🌹
作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请铁汁批评斧正。
火爆专栏:蓝桥杯基础算法剖析
一、选择填空题
1.简单指针问题
一道简单的选择题:代码分析:
2.函数指针问题
分析下面两段代码:
首先,我们遇到这样的题目时,要学会的是断句,(也就是清楚哪两个括号相互对应),这点是非常重要的。
代码1:(* (void(*)() )0 )();
代码分析:代码2:
void (*signal(int, void(*)(int)))(int);
代码分析:
3.操作符优先级问题
看下面代码 :
代码分析:
二、编程设计题
1.面试题:移除元素
题目链接:移除元素
题目描述:
示例:
思路一:
思路二:空间换时间
思路三:双指针算法
代码执行:
int removeElement(int* nums, int numsSize, int val){ int src = 0; int dst = 0; while(src < numsSize) {//1.src位置不是val就将它放到dst位置,然后src++,dst++//2.src位置是val,src++if(nums[src] != val){ nums[dst++] = nums[src++];}else{ src++;} } return dst;}
完整代码:
2.面试题:合并两个有序数组
题目链接:合并两个有序数组
题目描述:
示例:
思路一:归并思想
思路:
思路二:多指针方法
代码执行:
void merge(int* nums1, int nums1Size, int m, int* nums2, int >nums2Size, int n){ int end1 = m - 1; int end2 = n - 1; int end = m + n - 1; while(end1 >= 0 && end2 >= 0)//注意哦,不能是|| {if(nums1[end1] > nums2[end2]) nums1[end--] = nums1[end1--];else nums1[end--] = nums2[end2--]; } //如果end1没完,不需要处理,因为就在nums1里面 while(end2 >= 0) {nums1[end--] = nums2[end2--]; }}
完整代码:
三、遇见安然遇见你,不负代码不负卿。
码字不易,求三连鸭