当前位置: 首页 > news >正文

C语言leetcode集训一:数组

         为了进一步巩固C语言基础,同时进一步了解leetcode刷题的流程,开始进行C语言的集训,今天是第一天,看看我都做了哪些题,因为周末,有点颓废,所以基本上都是简单题,现在只想睡觉......

          有关数组的知识想必应该不用多说,主要是了解数组的存储结构,长度索引和函数传参,下面看看都有哪些题型

1.搜索旋转排序数组

 int search(vector<int>& nums, int target) {for(int i=0;i<nums.size();i++){if(nums[i]==target){return i;break;}}return -1;

           这里给出的代码都是核心代码模式,都是具有该功能的函数实现,但其实在以后的公司面试中,ACM模式是很重要的,ACM模式就是让你直接赋值,自己输入输出实现功能,相比核心代码模式要难一点。

           这道题我不明白为什么是中等难度,不就是在数组中寻找目标值的下标索引吗,没什么难度啊。

2.搜索旋转排序数组中的最小值

 int findMin(vector<int>& nums) {int min=1000;for(int i=0;i<nums.size();i++){if(nums[i]<min){min=nums[i];}}return min;}

         这道题就是寻找最小值,更没有难度了,先定义一个最小值,一般需要比较大,然后遍历数组,如果找到比这个最小值min还小的值,更新最小值min,最后返回最小值min

3.斐波那契数

int fn[1000];int fib(int n) {fn[0]=0,fn[1]=1;for(int i=2;i<=n;i++){fn[i]=fn[i-1]+fn[i-2];}return fn[n];}

            这道题也算是数组的经典题目了,求斐波那契数列的第n项,解题思路是:先定义一个全局的辅助函数,然后定义斐波那契数列的前两项,循环通项公式即可。

4.爬楼梯

 int f[1000];int climbStairs(int n) {f[0]=f[1]=1;for(int i=2;i<=n;i++){f[i]=f[i-1]+f[i-2];}return f[n];}

      看到这你可能就会有疑问,这不是跟上一题的代码一样吗,你耍我呢,我知道你急,但你先别急,这道题其实就是在求斐波那契的第n项,怎么分析出来呢?听我细细道来

      在没有思路时,我们可以看示例来列举,在距离楼顶只有0阶时,有1种办法;在距离楼顶只有1阶时,有1种方法;在距离楼顶有2阶时,有2种方法,因为我们可以从距离楼顶只有1阶上来,这样和距离楼顶只有1阶时一样,也可以从距楼顶有2阶上来,这样一次走2阶,加起来就是2种方法;在距离楼顶有3阶时,可以先上1阶,从距离楼顶只有2阶上来,这样就和前面一样的方法了,是2种,也可以上2阶,然后就和距离楼顶只有1阶一样了;同理在距离楼顶4阶时,可以先上1阶,后面和距离3阶一样,或者先上2阶,后面和距离2阶一样,这样就很容易想到是斐波那契额问题啦!

5.猜数字

int game(vector<int>& guess, vector<int>& answer) {int cnt=0;for(int i=0;i<3;i++){cnt+=(answer[i]==guess[i])?1:0;}return cnt;}

      这道题也是简单题,就是遍历两个数组,看相同索引下两个数组的值是否相同,相同计数器就加1,不相同加0。

6.拿硬币

int minCount(vector<int>& coins) {int cnt=0;for(int i=0;i<coins.size();i++){cnt+=(coins[i]+1)/2;}return cnt;}

      这道题其实就是看硬币数是奇数还是偶数的问题,如果coins[i]为奇数的话,求最少的次数肯定是先拿2枚,最后肯定要拿1枚,次数就是(coins[i]+1)/2;如果为偶数的话,次数本来应该写成coins[i]/2的,但C语言有向下取整的规则,所以我们可以统一写成(coins[i]+1)/2了。

       今天属实有点不想学,水了一篇博客,大家见谅。

相关文章:

  • Centos7、Mysql8.0 load_file函数返回为空的终极解决方法--暨selinux的深入理解
  • AI工具导航网站(包含写作、翻译、设计、论文润色去重的AI工具集)
  • Command ‘npm‘ not found, but can be installed with:sudo apt install npm 解决方案
  • Ubuntu22.04中用户的全名
  • RabbitMQ使用指南
  • C++学习笔记—— C++内存管理方式:new和delete操作符进行动态内存管理
  • Java解决二进制矩阵中特殊位置问题
  • 101基于matlab的极限学习机ELM算法进行遥感图像分类
  • YOLO_embedded: YOLO算法快速嵌入式部署
  • QT 重定向qdebug输出到自绘界面
  • Docker资源控制
  • Theamleaf导出pdf模版编写(原始th/td编写表格)
  • vue3 引入Element Plus 组件库
  • WPS Office JS宏实现批量处理Word中的标题和正文的样式
  • Altair推出 Altair RapidMiner 2023 平台,提供生成式 AI 功能
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • es6(二):字符串的扩展
  • flask接收请求并推入栈
  • Gradle 5.0 正式版发布
  • JSDuck 与 AngularJS 融合技巧
  • js递归,无限分级树形折叠菜单
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • js学习笔记
  • Linux各目录及每个目录的详细介绍
  • opencv python Meanshift 和 Camshift
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python爬虫--- 1.3 BS4库的解析器
  • 给初学者:JavaScript 中数组操作注意点
  • 漂亮刷新控件-iOS
  • 前端攻城师
  • 使用docker-compose进行多节点部署
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​插件化DPI在商用WIFI中的价值
  • #QT(一种朴素的计算器实现方法)
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (1) caustics\
  • (16)Reactor的测试——响应式Spring的道法术器
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (Python) SOAP Web Service (HTTP POST)
  • (四)Linux Shell编程——输入输出重定向
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (一)kafka实战——kafka源码编译启动
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • (转)EOS中账户、钱包和密钥的关系
  • (转)大型网站架构演变和知识体系
  • ***利用Ms05002溢出找“肉鸡
  • .NET 8.0 发布到 IIS
  • .NET 8.0 中有哪些新的变化?
  • .NET Standard 的管理策略
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net6 webapi log4net完整配置使用流程
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET设计模式(2):单件模式(Singleton Pattern)