> 文档中心 > 《每日一套题·提升你我能力》· 第二篇

《每日一套题·提升你我能力》· 第二篇


大家好,我是安然无虞。

文章目录

  • 每篇前言
  • 一、选择填空题
    • 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--];   }}

完整代码:
在这里插入图片描述

在这里插入图片描述

三、遇见安然遇见你,不负代码不负卿。

在这里插入图片描述

码字不易,求三连鸭

在这里插入图片描述