【C语言】初阶算法相关习题(二)

【C语言】初阶算法相关习题(二)


个人主页:夜晚中的人海

在这里插入图片描述

文章目录

⭐一、两数之和

题目描述:两数之和

在这里插入图片描述

解题思路:
1.先创建一个动态分配的数组ret,用于存储结果,其大小为numbersLen

2.使用一个外层循环遍历数组numbers,循环变量i从0到numbersLen - 1。如果当前值大于目标值,则跳过当前循环

3.对于每个i,使用一个内层循环从i + 1到numbersLen - 1,循环变量j用于查找与numbers[i]相加等于target的另一个数字

4.若sum等于目标值target,则找到了满足条件的两个数字。将下标i和下标j分别+1存储到ret数组中*(题目要求下标从1开始)

5.设置returnSize为2,表示返回数组的大小,最后返回目标数组ret。若遍历完数组都没找到满足条件的两个数字,则返回0

代码实现:

int*twoSum(int* numbers,int numbersLen,int target,int* returnSize ){// write code hereint* ret =(int*)malloc(sizeof(int)* numbersLen);for(int i =0;i<numbersLen;i++){if(numbers[i]>target){continue;}for(int j = i +1;j<numbersLen;j++){int sum = numbers[i]+ numbers[j];if(sum == target){ ret[0]= i +1; ret[1]= j +1;*returnSize =2;return ret;}}}return0;}

🏠二、珠玑妙算

题目描述:珠玑妙算

在这里插入图片描述

解题思路:
1.创建一个动态分配的数组ret,大小为2,用于存储完全匹配的数量(ret[0])和部分匹配的数量(ret[1])。初始值都设为0

2.使用一个循环遍历字符串solution和guess,若两者在某一位置时字符都相等,说明当前字符完全匹配,增加ret[0]的值。然后将该位置的值分别都修改成一个特殊的字符‘0’,表示这些字符已经被匹过,避免在后续计算部分匹配时重复计算。

3.再次遍历solution和guess,对于solution中的每个字符(未被修改为’0’的字符),检查guess中是否有相同的字符。如果找到匹配的字符,则增加ret[1]的值

4.然后将solution[i]和guess[j]都修改为’0’,表示这些字符已经被匹配过,避免重复计算。

5.跳出循环后,说明部分匹配结束。返回ret数组即可

代码实现:

int*masterMind(char* solution,char* guess,int* returnSize){int* ret =(int*)malloc(sizeof(int)*2); ret[0]=0; ret[1]=0;int len =strlen(solution);for(int i =0;i < len;i++){//猜中了if(solution[i]== guess[i]){ ret[0]++; solution[i]= guess[i]='0';}}for(int i =0;i<len;i++){for(int j =0;j<len;j++){if(solution[i]== guess[j]&& solution[i]!='0'){ ret[1]++; solution[i]= guess[j]='0';*returnSize =2;}}}return ret;}

🎡三、寻找奇数

题目描述:寻找奇数

在这里插入图片描述

解题思路:根据异或运算符的性质(1.任何数字与自身异或的结果为0。2.任何数字与0异或的结果为自身。3.异或运算满足交换律和结合律)因此,如果将数组中的所有数字依次进行异或运算,成对出现的数字会相互抵消,最终剩下的就是那个唯一不重复的数字。

代码实现:

#include<stdio.h>intmain(){int n;scanf("%d",&n);int ret =0;int m =0;for(int i =0;i < n;i++){scanf("%d",&m); ret ^= m;}printf("%d\n",ret);return0;}

🚀四、截取字符串

题目描述:截取字符串

在这里插入图片描述

解题思路:
有两种解题方法:一是使用strncpy函数,二是将要截断的下标位置设置为‘\0’,这题过于简单,就不过多赘述了。

代码实现:

//方法一:使用strncpy方法intmain(){char str[100];scanf("%s",str);int n;scanf("%d",&n);char ret[100];strncpy(ret, str, n); ret[n]='\0';printf("%s\n",ret);return0;}
//方法二:将下标n变为结束标志的方法intmain(){char str[1000];scanf("%s",str);int n =0;scanf("%d",&n); str[n]='\0';printf("%s\n",str);return0;}

🎉五、寻找峰值

题目描述:寻找峰值

在这里插入图片描述

解题思路:
1.处理边界情况:检查第一个元素,如果nums[0] > nums[1],则直接返回0,因为nums[0]是峰值;
检查最后一个元素,如果nums[numsLen-1] > nums[numsLen-2],则直接返回numsLen - 1,因为nums[numsLen-1]是峰值。

2.使用一个循环从0到numsLen,对于每个索引i,检查是否满足nums[i] > nums[i-1]且nums[i] > nums[i+1]。

3.如果找到满足条件的元素,则返回其索引i。

4.如果遍历完整个数组都没有找到峰值元素,则返回-1。

代码实现:

intfindPeakElement(int* nums,int numsLen ){// write code here//找两端的峰值if(nums[0]>nums[1]){return0;}if(nums[numsLen-1]>nums[numsLen -2]){return numsLen -1;}for(int i =0;i<numsLen;i++){if(nums[i]> nums[i-1]&&nums[i]> nums[i+1]){return i;}}//没有峰值return-1;}

今天的分享就到这里啦,如果感到不错,希望能给博主一键三连,感谢大家的支持!希望这篇文章可以帮到大家,我们下期再见!

Read more

【2026 最新】Python 与 PyCharm 详细下载安装教程 带图展示(Windows 版)

【2026 最新】Python 与 PyCharm 详细下载安装教程 带图展示(Windows 版)

前言 Python 是当今最流行的编程语言之一,广泛应用于 Web 开发、数据分析、人工智能、自动化脚本等领域。而 PyCharm 作为 JetBrains 公司推出的 Python 专业集成开发环境(IDE),凭借智能代码补全、调试器、虚拟环境管理、版本控制集成等强大功能,成为众多开发者首选工具。 本教程专为 Windows 系统用户 编写,将手把手指导你完成 Python 解释器 和 PyCharm IDE 的下载、安装与基础配置,助你快速搭建本地 Python 开发环境。 一、Python 下载与安装 1.1 访问 Python 官网 打开浏览器,访问 Python 官方网站:Download

By Ne0inhk
《C++进阶之STL》【红黑树】

《C++进阶之STL》【红黑树】

【红黑树】目录 * 前言: * ------------概念介绍------------ * 1. 什么是红黑树? * 2. 红黑树的基本特性是什么? * 3. 红黑树的效率怎么样? * 4. 红黑树如何确保最长路径不超过最短路径的2倍? * ------------基本操作------------ * 一、查找操作 * 二、插入操作 * 1. 本质 * 2. 步骤 * 情况1:变色 * 情况2:变色 + 单旋 * 情况3:变色 + 双旋 * 三、验证操作 * ------------代码实现------------ * 红黑树的存储结构是什么样的? * 一、节点的存储结构 * 二、树的存储结构 * 实现文件:RBTree.h * 测试文件:Test.cpp * 运行结果: * ------------终极对决------------ * 一、选手登场 * AVL树的源代码 * 红黑树的源代码 * 二、

By Ne0inhk

C++内核启动太慢?这4种静态配置优化方法你必须掌握

第一章:C++内核配置静态优化与启动加速概述 在现代高性能系统开发中,C++常被用于构建对启动速度和运行效率要求极高的内核级组件。通过对编译期配置的精细控制与静态优化策略的应用,可显著减少初始化开销,提升程序冷启动性能。这一过程不仅涉及编译器优化选项的合理选择,还包括对模板实例化、静态构造函数以及链接时优化(LTO)等机制的深度利用。 静态优化的核心技术手段 * 启用链接时优化以消除未使用的代码段 * 使用 -fvisibility=hidden 减少符号导出开销 * 通过 constexpr 和模板元编程将计算前移至编译期 * 禁用异常与RTTI以降低运行时支持成本 关键编译选项配置示例 # 启用全面优化与链接时优化 g++ -O3 -flto -fwhole-program \ -fvisibility=hidden -DNDEBUG \ -fno-exceptions -fno-rtti \ -o kernel core.cpp runtime.cpp 上述指令组合通过开启LTO(-flto)实现跨编译单元优化,同时关闭异常处理和类型信息以精简二进制体积,适

By Ne0inhk
CCF-GESP 等级考试 2025年9月认证C++一级真题解析

CCF-GESP 等级考试 2025年9月认证C++一级真题解析

2025年9月真题 一、单选题(每题2分,共30分) 正确答案:D 考察知识点:计算机相关知识 解析:在人工智能领域,“大模型” 最贴切的通常是指大语言模型。大语言模型是基于大规模文本数据训练的,能够理解和生成自然语言等内容,像常见的 ChatGPT 等就属于大语言模型范畴。而选项 A “大电脑模型” 表述不准确;选项 B “大规模智能” 不是对 “大模型” 的准确指代;选项 C “智能的单位” 也不符合 “大模型” 的定义。答案为D。 正确答案:C 考察知识点:流程控制语句 解析:计算 1 到 10001 之间的所有偶数和,需要重复累加操作(循环结构),且需判断是否为偶数(分支结构)。仅用顺序结构无法实现重复操作和条件判断,

By Ne0inhk