【寒假day3】leetcode刷题

news2024/11/15 20:45:53



🌈一、选择题

❤第1题:关于重载函数,( )说明是正确的。

A: 函数名相同,参数类型或个数不同  B: 函数名相同,返回值类型不同
C: 函数名相同,函数内部实现不同    D: 函数名称不同

答案:A 

 答案解析:

为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。

  • 必须不同点:参数列表不同(指参数的个数类型或者顺序)。
  • 必须相同点:函数名,函数的返回类型,函数内部实现。


❤第2题:关于引用以下说法错误的是( )。

A: 引用必须初始化,指针不必   
B: 引用初始化以后不能被改变,指针可以改变所指的对象
C: 不存在指向空值的引用,但是存在指向空值的指针
D: 一个引用可以看作是某个变量的一个“别名”
E: 引用传值,指针传地址 
F: 函数参数可以声明为引用或指针类型

答案:E

 答案解析:

A选项:引用是小名,你要先知道别人的大名才能起小名,而指针是这个人的身份证号,所以说引用必须初始化,指针不必。没毛病。

B选项:这个选项有歧义,引用不可以改变指向,但是可以改变初始化对象的内容。引用之所以不可以改变指向,就是因为引用的本质是常量指针

1.&a=b;  &a=c;这样就是不对的
2.x=2, &y=x, y=5 这样写就是对的

C选项:你给一个不存在的人起小名不是扯淡吗,但是空值也有地址,所以可以用指针。

E选项:引用也需要传地址,引用的两大作用做参数,做返回值。更关键的是引用的本质是常量指针,那必须用到地址。所以E选项是一定错误的。

 F选项:C语言时候指针就可以是形参类型,更何况引用类型的参数呢?F选项没一点问题。



 ❤第3题:以下程序输出的是( )。

#include <iostream>
using namespace std;
int main(void)
{
    const int a = 10;
    int * p = (int *)(&a);
    *p = 20;
    cout<<"a = "<<a<<", *p = "<<*p<<endl;
    return 0;
}

A: 编译阶段报错运行阶段报错      B: a = 10, *p = 10 
C: a = 20, *p = 20              D: a = 10, *p = 20 
E: a = 20, *p = 10

答案:D

 答案解析:

先定义了一个const整型常量a, 并且初始化为10,又创建一个指针变量p, 存放的是a的地址。

接下来解引用p并且并且赋值为20。 所以是a = 20, *p = 20。但是阿里的笔试题会这么简单吗?

  • 这个问题我们先不解释,先说一下另一个问题为啥要是(int*)(&a)这个不算解引用吗?

 其实前面那个int*可以理解为类型转换。&a是int const *类型的,a的值不能被更改,但是把他转化为int*类型就可以是p和a指向的对象可以改变了。


 之所以选D选项涉及到常量折叠

原来我们使用过#define PI 3.1415, 用到Π时就用3.1415代替掉,这个是一个意思。因为使用 const 编译器会优化,对于以后见到a,编译器立马用10替代,而 p 是新定义的一个指针变量,开始p通过 int p = (int )(&a),获得了栈区常量a的地址,即p指向这个地址,但是因为 const 导致编译器优化,直接在符号表中 用10代替a了,所以导致打印 a 还是10,但是原来a的地址还是原来那个没有改变的,所以通过p指向对象的改变,原来地址的值就变成20了。        

就比如林冲被发配到沧州之前脸上被烙了一个奸字,别人见到他脸上的奸字后不再喊他的名字,而是叫他凡人,但是它家还是在京城这一点没有变化。所以虽然p改变了这个地址代表的数字,但是a的身份已经改变了,不再受到地址的限制了。

所以a=10, *p=20。



❤第4题:

在 Windows 32 位操作系统中,假设字节对齐为 4 ,对于一个空的类 A , sizeof(A) 的值()。

A: 0 B: 1 C: 2 D: 4

答案:B 

答案解析:

 C语言中空结构体的大小是0,但是C++中空类的大小不是0,而是1。

因为空类也能被实例化,但是他的大小是0的话,那如果一个空类实例化很多对象是,内存地址咋样分辨他的一个个实例呢?所以,为了实现每个实例在内存中都有一个独一无二的地址,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址,所以空类所占的内存大小是1个字节。



❤第5题:有如下类的定义:

int F1();
static int F2();
class TestClass
{
public:
int F3();
static int F4();
};

在所描述的函数中,具有隐含 this 指针的是哪个( )。
A: F1   B: F2
C: F3   D: F4

答案:C

 答案解析:

F1:全局变量,F2:静态全局变量,F3局部变量(类的成员函数),F4:静态局部变量(成员函数)。

隐藏的this指针只存在于类的非静态成员函数中。

所以F1, F2全部排除。

  • 有的说static函数属于类不属于对象(对象不分配内存),this是对象的指针(指向的是对象分配的内存)两种不是一个系统的管不到。(我最倾向与这种。)
  • 还有一种是:static成语是在实例没有创建前就存在的,而类的其他成员必须是在实例创建后才存在的。


接下来我们复习一下引用和指针的区别:

  1. 引用是一个变量的别名指针存放的是地址(引用是小名,指针是身份证号)。
  2. 引用在定义时必须初始化,指针不必初始化(要说清是谁的小名,有身份证就一定知道这人).
  3. 没有空引用,但是有空指针。【之所以有空指针就是因为我们设置一个指针后,这个指针里的内容是不可预知的,即不知道它指向内存中的哪个空间(即野指针),它有可能指向的是一个空白的内存区域,为了防止出现意外,所以设置了空指针。之所以没有空引用是因为引用必须被初始化】。
  4. 引用在初始化时引用一个实体后,就不能再引用其他实体,因为其本质是一个指针常量,无法改变指向。而指针可以在任何时候指向任何一个同类型实体。
  5. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是空地址空间所占字节个数(32位平台下占用4个字节,64位占用8字节)。
  6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小
  7. 访问实体方式不同,指针需要显示解引用,引用则由编译器自己处理。



 🌈编程题 

🍄第1题 :反转字符串中的单词|||

 解题思路:

这个题的思路很是简单,这个逆序不是全部逆序,而是把一个单词的顺序逆序,但是这个单词的位置顺序没有改变,所以我们以空格为界限,运用双指针以单个单词为单位进行左右交换逆序,重复循环直到交换完所有单词就完成了。

class Solution {
public:
    string reverseWords(string s) {
      int i = 0;
     
      while(i<s.length())
      {
           int start = i;   //记录头个字符, 必须是从i开始不是从0开始。
           while(i < s.length() && s[i] != ' ')
           { 
               i++;
           }
           int left = start;
           int right = i-1;  //此时i指向的是空格前面的字符
           while(left<right)
           {
               swap(s[left], s[right]);
               left++;
               right--;
           }
            while(i < s.length() && s[i] == ' ')
            {
                i++;
            }
      }
      return s;
    }
};

特别注意一点,这个start记录的是每一个单词的首字母,比如我们逆序完一个字符后,这个start就记录第二个字符的首字母,所以start不是从0开始的,而是跟着i走的。



🍄第2题:连续字符

解题思路: 

  1. 这个题属实很简单,找两个计数板就可以了,例如ans计数板记录在已经遍历的字符中,所出现的最长的连续字符个数。如果后面又出现更长的连续字母,就更新ans计数板。
  2. cnt计数板记录当前连续字母的个数。如果前后字母不一样,就更新cnt为1,重新记录后面那个字母。
class Solution {
public:
    int maxPower(string s) {
        int ans = 1;   //记录的是当前最大重复字符数
        int cnt = 1; //记录重复字符的个数,记录完后归1
        for (int i = 1; i < s.length(); ++i) {
            if (s[i] == s[i - 1])
             {
                ++cnt;
                ans = max(ans, cnt);
             }
            else 
             {
                cnt = 1;  //前后出现的数不一样,重新记录
             }
        }

        return ans;
    }
};



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据挖掘-特征选择方法:方差过滤,相关性过滤

目录特征选择1、Filter过滤法方差过滤1&#xff0c;消除方差为0的特征2&#xff0c;只留下一半的特征3&#xff0c;特征是二分类时2、相关性过滤法2.1 卡方过滤2.2 F检验2.3 互信息法3、 Embedded嵌入法4、Wrapper包装法5、总结特征选择 数据预处理完成后&#xff0c;就进入特…

常见网络报文数据包格式

当我们应用程序用TCP传输数据的时候&#xff0c;数据被送入协议栈中&#xff0c;然后逐个通过每一层&#xff0c;知道最后到物理层数据转换成比特流&#xff0c;送入网络。而再这个过程中&#xff0c;每一层都会对要发送的数据加一些首部信息。整个过程如下图。以太网帧格式以太…

Mybatis框架(二)再遇Mybatis之Mybatis配置文件与映射文件

本文是本人专栏【Java开发后端系列框架】里的文章&#xff0c;文章根据各框架官网与网上资料加上本人工作经验&#xff0c;进行修改总结发布在这个专栏&#xff0c;主要目的是用于自我提升&#xff0c;不用于获取利益。如果系列文章能到帮到您本人将感到荣幸&#xff0c;如果有…

2023年3月5日DAMA-CDGA/CDGP数据治理认证考试报名入口

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

【每日阅读】前端进阶知识点(一)

如何更改网页中语言属性值 声明当前语言类 html标签更改属性值 lang属性中不区分大小写 en-us en-US 一致 具体可使用 window,document.querySelector(“html”)?.setAttribute(“lang”,newValue); qs库 qs是一个流行的查询参数序列化和解析库。可以将一个普通的object序列…

OpenPPL PPQ量化(2):离线静态量化源码剖析

目录 模型支持 量化onnx原生模型&#xff1a;quantize_onnx_model 输入输出 执行流程 ONNX格式解析 后记 模型支持 openppl支持了三种模型&#xff1a;onnx、caffe、pytorch&#xff0c;其中pytorch和caffe是通过quantize_torch_model和quantize_caffe_model&#xff0c…

Elasticsearch:Terms set 查询

什么是 terms set 查询&#xff1f; Terms set 查询根据匹配给定字段的精确术语的最少数量返回文档。 terms set 查询与 term 查询有何不同&#xff1f; Terms set query 和 Terms query 之间的唯一区别是你可以提供必须匹配的最少数量的术语才能检索特定文档。 什么是 minim…

【Ansys Meshing】Fluent Meshing和Ansys Meshing在划分边界层网格能力上的对比

一、几何模型展示 如下图所示&#xff0c;一端的圆柱是流体入口&#xff0c;另一端的圆柱是流体出口&#xff0c;中间都是导热管。 二、在spaceclaim中进行切割实体 2.1 切割手段 切割平面的位置如图两根线所示&#xff0c;最终得到左右两边两个有圆柱的大块&#xff0c;以…

【SAP Abap】X档案:SAP 快速提供基础数据给第三方系统访问的几种方法(附常用基础数据)

SAP 快速提供基础数据给第三方系统访问的几种方法1、数据封装2、开放RFC访问3、开放接口服务4、开放DB访问5、常用基础数据1、数据封装 在企业信息系统建设过程中&#xff0c;少不了的就是系统集成数据对接。 尤其是SAP系统中大量的基础数据集成&#xff0c;如各种字段值域&am…

C语言:操作符详解

往期文章 C语言&#xff1a;初识C语言C语言&#xff1a;分支语句和循环语句C语言&#xff1a;函数C语言&#xff1a;数组 目录往期文章前言1. 操作符分类2. 算术操作符3. 移位操作符4. 位操作符5. 赋值操作符6. 符合赋值符7. 单目操作符8. 关系操作符9. 逻辑操作符10. 条件操作…

Java 中的基本设计模式

设计模式是针对常见软件设计问题的可重用解决方案。它们提供了一种以一致且高效的方式组织和构建代码的方法。一些常见的设计模式包括&#xff1a;工厂模式是一种创建型设计模式&#xff0c;它提供用于在超类中创建对象的接口&#xff0c;但允许子类更改将要创建的对象的类型。…

【数据结构趣味多】优先级队列——堆

1. 优先级队列 概念&#xff1a; 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然不合适&#xff0c;比…

前端打包后生成的dist 或 build目录,如何在本地启动服务运行

前端打包后生成的dist/build目录&#xff0c;如何在本地启动服务运行 运行npn run build&#xff0c;会打包后会产生 dist 或 build 目录 一般情况下&#xff0c;直接打开dist 或 build 目录下的 index.html会在浏览器看到内容。 然而发现网页一片空白&#xff0c;打开了控制台…

C++基础入门(引用补充)

1、使用场景做参数void Swap(int& left, int& right) {int temp left;left right;right temp; }做返回值int& Count() {static int n 0;n;// ...return n; }c语言内&#xff0c;出了count函数&#xff0c;n被销毁&#xff0c;会创建临时变量存储其值&#xff0…

DETR——使用Transformer进行端到端目标检测的开端之作

深度学习知识点总结 专栏链接: https://blog.csdn.net/qq_39707285/article/details/124005405 此专栏主要总结深度学习中的知识点&#xff0c;从各大数据集比赛开始&#xff0c;介绍历年冠军算法&#xff1b;同时总结深度学习中重要的知识点&#xff0c;包括损失函数、优化器…

寻根究底,为什么Docker中的Alpine Linux镜像能这么小

去年我发表了文章对Docker基础镜像的思考&#xff0c;该不该选择alpine&#xff0c;其中对于Alpine Linux镜像如此之小的原因我解释为它使用了musl而不是glibc 有人发现并指出了我的这个错误&#xff0c;说musl与glibc的大小差别不足以造成如此大的差距&#xff0c;应该别有原…

C++-静态局部变量

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 特征&#xff1a; 1.需添加关键字static。 2.在静态存储区分配内存&#xff0c;始终存在直到程序结束。 3.作用域为局部&#…

阿⾥云Apsara Clouder云计算专项技能认证:云服务器ECS⼊门【 个⼈所得税年度应纳税额抵扣 3600(0成本)】

文章目录 引言I 云服务器ECS⼊门II 考试III 个⼈所得税app填写专项附加扣除引言 适合⼈群:需要交个⼈所得税的上班族,有⼀定计算机基础结果:⼯资年收⼊10-20万的,能省下360元(3600*10%)I 云服务器ECS⼊门 云服务器(Elastic Compute Service, 简称ECS),是一种简单高效,…

PDPS教程:机器人气动点焊焊枪大开与小开运动状态自动切换设置

目录 概述 气动点焊焊枪运动状态设置 机器人气动点焊焊枪工具类型定义 气动点焊焊枪运动状态切换原理 气动点焊焊枪大开与小开状态切换设置 机器人仿真运行 概述 工业机器人点焊焊接过程中&#xff0c;为了提高焊接效率、优化焊接节拍、降低能源消耗&#xff0c;通常会在…

2022尚硅谷SSM框架跟学(八)Spring MVC基础三

2022尚硅谷SSM框架跟学 八 Spring MVC基础三8.RESTful案例8.1准备工作8.2功能清单8.3.具体功能&#xff1a;访问首页(1).配置view-controller(2).创建页面8.4具体功能&#xff1a;查询所有员工数据(1).控制器方法(2).创建employee_list.html8.5具体功能&#xff1a;删除(1).创建…