0
点赞
收藏
分享

微信扫一扫

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



大家好,我是安然无虞。




文章目录

  • 每篇前言
  • ​​一、选择填空题​​
  • ​​1.简单指针问题​​
  • ​​2.函数指针问题​​
  • ​​3.操作符优先级问题​​
  • ​​二、编程设计题​​
  • ​​1.面试题:移除元素​​
  • ​​思路一:​​
  • ​​思路二:空间换时间​​
  • ​​思路三:双指针算法​​
  • ​​2.面试题:合并两个有序数组​​
  • ​​思路一:归并思想​​
  • ​​思路二:多指针方法​​
  • ​​三、遇见安然遇见你,不负代码不负卿。​​

每篇前言

作者:安然无虞

作者请求:由于博主水平有限,难免会有错误和不准之处,我也非常渴望知道这些错误,恳请铁汁批评斧正。

《每日一套题·提升你我能力》· 第二篇_代码分析


一、选择填空题

1.简单指针问题


一道简单的选择题:《每日一套题·提升你我能力》· 第二篇_c语言_02代码分析:《每日一套题·提升你我能力》· 第二篇_算法_03


2.函数指针问题


分析下面两段代码:
《每日一套题·提升你我能力》· 第二篇_c++_04首先,我们遇到这样的题目时,要学会的是断句,(也就是清楚哪两个括号相互对应),这点是非常重要的。
代码1:

(* (void(*)() )0 )();

代码分析:《每日一套题·提升你我能力》· 第二篇_c语言_05代码2:

void (*signal(int, void(*)(int)))(int);

代码分析:《每日一套题·提升你我能力》· 第二篇_c语言_06


3.操作符优先级问题


看下面代码 :
《每日一套题·提升你我能力》· 第二篇_c++_07代码分析:《每日一套题·提升你我能力》· 第二篇_代码分析_08



二、编程设计题

1.面试题:移除元素


题目链接:​​移除元素​​ 题目描述:
《每日一套题·提升你我能力》· 第二篇_c语言_09示例:
《每日一套题·提升你我能力》· 第二篇_有序数组_10

思路一:

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

思路二:空间换时间

《每日一套题·提升你我能力》· 第二篇_代码分析_12

思路三:双指针算法

代码执行:

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;
}

完整代码:
《每日一套题·提升你我能力》· 第二篇_有序数组_13


2.面试题:合并两个有序数组


题目链接:​​合并两个有序数组​​ 题目描述:
《每日一套题·提升你我能力》· 第二篇_算法_14示例:
《每日一套题·提升你我能力》· 第二篇_代码分析_15

思路一:归并思想

《每日一套题·提升你我能力》· 第二篇_c语言_16思路:
《每日一套题·提升你我能力》· 第二篇_c语言_17

思路二:多指针方法

《每日一套题·提升你我能力》· 第二篇_算法_18代码执行:

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--];
}
}

完整代码:
《每日一套题·提升你我能力》· 第二篇_c++_19



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


码字不易,求三连鸭

《每日一套题·提升你我能力》· 第二篇_有序数组_20



举报

相关推荐

0 条评论