- 博客(36)
- 收藏
- 关注
原创 Java实现二叉树两个节点最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”来源:力扣(LeetCode)链接:https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree。
2022-09-29 16:34:08 804 1
原创 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和
c++实现给定两个字符串形式的非负整数num1和num2,计算它们的和要求:num1 和num2的长度都小于 5100num1 和num2 都只包含数字0-9num1 和num2 都不包含任何前导零你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式链接:https://leetcode-cn.com/problems/add-strings求和,我们需要从字符串中分离开这些数字,并且吧这些数字从个位到高位依次相加,并将和+=到一个字符串中,最后...
2021-03-30 18:49:03 1516
原创 计算字符串最后一个单词的长度,单词以空格隔开
c++实现计算字符串最后一个单词的长度,单词以空格隔开输入一行,代表要计算的字符串,非空,长度小于5000。输出描述:输出一个整数,表示输入字符串最后一个单词的长度。示例1 输入 hello nowcoder输出 81、首先我们需要输入一行字符串我们输入字符串时不能用cin ,如果字符串之间有空格,他会默认将其分割。我们需要使用getline(instream&cin ,string str),输入一行字符给str,直到遇见‘\n’我们需要找到一行字符...
2021-03-30 16:01:06 637
原创 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1
c++实现找字符串中第一个单身狗给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。s = "leetcode"返回 0s = "loveleetcode"返回 2我们只需要遍历一次字符串,统计每个字符出现的次数,在遍历一次找到第一个出现次数为1的字符,并返回他的下标。代码如下:class Solution {public: int firstUniqChar(string s) { int count[256]=
2021-03-30 15:07:11 1654
原创 给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转
c++实现字符串反转给定一个字符串S,返回“反转后的”字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:"ab-cd"输出:"dc-ba"示例 2:输入:"a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:"Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"链接:https://leetcode-cn.com/problems/reverse-only-letters...
2021-03-30 12:40:40 448
原创 初始c++ 中的模板
泛型编程定义:编写与类型无关的通用代码,是代码复用的一种手段。模板也是范型编程的一种当我们没有学习泛型编程之前,如果我们需要实现一个通用类型的交换函数,可以使用函数重载的方法代码如下:#include<iostream>using namespace std;void Swap(int& x, int& y){ int tmp = x; x = y; y = tmp;}void Swap(float& x, float& y){
2021-03-16 16:54:42 130
原创 牛客网:给出年分m和一年中的第n天,算出第n天是几月几号
给出年分m和一年中的第n天,算出第n天是几月几号测试用例:输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。可能有多组测试数据,对于每组数据,按 yyyy-mm-dd的格式将输入中对应的日期打印出来。输入2000 32000 312000 402000 602000 612001 60输出2000-01-032000-01-312000-02-092000-02-292000-03-012001-03-0
2021-03-11 17:11:54 643
原创 牛客网:根据输入的日期,计算是这一年的第几天
根据输入的日期,计算是这一年的第几天测试用例有多组,注意循环输入给定我们一日期,让我们计算是这年的第几天,我们可以写一个日期类,通过运算符重载,实现日期减日期得到天数,这样比较复杂现在用另一种方法实现代码如下:#include<iostream>using namespace std;int main(){//二月按28天算 int daymonth[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};..
2021-03-11 16:34:26 1016
原创 c++的友元
一、友元友元分为:友元函数和友元类友元提供了一种突破封装的方式,有时提供了便利。但是友元会增加耦合度,破坏了封装,所以尽量不要使用友元。1、友元函数之前我学了重载运算符,但是我尝试重载operator<<,发现我们不能将operator<<重载成成员函数,因为cout的输出流对象和隐含的this指针抢占第一个参数的位置。就是cout参数也需要在第一个位置作参数(operator的左参数),我们才能正常使用运算符<<,这样就与隐藏的this指针冲突.
2021-03-11 15:14:35 216 1
原创 求1+2+3+...+n,不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)当我们学习了static成员,友元函数,和内部类就可以用c++的两种方法解决这个问题:1、使用静态成员的特性和友元类(也可以不用友元类)class Sum{public: Sum()//构造函数实现1+2+3+ n { _ret+=_i; _i++; } st
2021-03-11 12:41:40 345 1
原创 c++ :类中的static成员
static 成员概念:声明为static的类成员称为类的静态成员:用static修饰的成员变量为,静态成员变量, 用static修饰的成员函数为,静态成员函数。静态成员变量一定要在类外进行初始化。特性:1、静态成员为所有类对象所共享,不属于某个具体的实例2、静态成员必须在类外定义3、类静态成员可以用 类名::静态成员或者对象.静态成员来访问...
2021-03-11 11:19:11 746
原创 C++中使用构造函数,析构函数,拷贝构造函数,运算符重载实现日期类
一、利用多文件实现日期类当我们了解了类中默认的6个成员函数,我们就可以利用这些函数实现一个简单的类完成日期之间的计算。比如,计算两个不同时间之间隔了多少天,n天之后是几年几月几号,等等首先创建一个头文件Date,h,包含头文件,命名空间,函数声明,和定义类。#pragma once#include<iostream>using namespace std;class Date {public: //获得每个月天数的函数 int GetMonthDay(int year
2021-03-07 21:40:12 712
原创 认识C++的类中默认生成的构造函数,析构函数拷贝构造函数和赋值运算符重载
类中默认的成员函数类的6个默认成员函数如果一个类中什么成员都没有,简称为空类,其实它并不是空的,它会默认生成6个成员函数。构造函数:主要完成初始化工作析构函数:主要完成清理工作拷贝构造:是使用同类对象初始化创建对象赋值重载主要把一个对象赋值给另一个对象还有两个很少自己实现,主要是普通对象和const 对象取地址。一、构造函数构造函数是一种特殊的成员函数,名字与类名相同,没有返回值,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期
2021-03-05 11:40:17 358 1
原创 C++引用的概念、性质以及使用场景
一、引用的概念1、 引用不是定义的一个变量,而是给已经存在的变量取了一个“别名”。编译器不会为应用变量开辟空间,它和它引用的变量用同一块内存空间(地址相同)。定义引用 :& 引用变量名(对象名)如下:#include<iostream>using namespace std;int main(){ int a = 10; int& b = a;//定义引用类型 printf("a :%p\n", &a); printf("b :%p\n".
2021-03-04 19:59:47 740 1
原创 初始c++中的缺省参数和函数重载
一、缺省参数 缺省参数是声明定义函数时为函数的参数指定一个默认值,在调用函数时,如果没有指定的实参则采用该默认值,否则使用指定实参。 举个例子:
2021-03-03 19:53:59 302 1
原创 c++的输入和输出
C++ 中的输入和输出C语言中的输入输出在c++中都可以使用,在c++程序中cout (输出),cin(输入)、printf,scanf混合使用,各有优劣。cout :标准输出(控制台) cin:标准输出(键盘)在程序中使用cout 和cin 必须包含<iosteam>头文件以及std 标准命名空间。举个例子理解c++如何实现输入输出。输出:#include<iostream>using namespace std;//标准命名空间int main()
2021-03-02 20:31:33 7321
原创 c++中的命名空间namespace
一、什么是C++ C++是基于c 语言提出的,在C语言的基础上引入并扩充了面向对象的概念。 C++既可以进行C语言的过程化程序设计。也可以支持面向对象的程序设计语言应运而生。二、命名空间(namespace) 在C语言中从来没有见过命名空间,而当我们首次接触c++的程序时会出现几个新的关键字,比如namespace、cout、cin 、等等。 下边将介绍一下命名空间(namespace)的用法。1、命名空间的作用 使用命名空间的目的是对标识符的名称...
2021-03-02 19:33:58 621
原创 认识C语言中自定义类型:结构体与内存对齐
一、结构体1、结构体的声明使用关键字struct 定义:struct tag { number_list//成员列表 }variable _list;//分号不能丢在声明的时候,可以不完全声明,(可以省略 tag 或者variable_list)2、结构体自引用struct Node { int date; struct Node*next; }3、结构体变量的定义和初始化(1)定义结构体变量 struct Point { i
2020-12-16 21:08:31 232 1
原创 Leetcode:迭代方法和头插方法反转链表
Leetcode:反转链表示列:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL一、迭代方法反转链表。迭代是通过将1->2->3->4->5->NULL,一个个反转得到NULL<-1<-2<-3<-4<-5;在进行迭代时我们需要定义三个结构体指针: n1 (表示要反转的前一个结点),n2(表示要反转的结点),n3(表示要反转的下一个结点
2020-12-16 10:55:30 1005 3
原创 C语言实现单链表的增删查改
一、什么是链表链表是一种再=在物理上存储是非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接依次实现的。链表有双链表和单链表。单链表如图所示:上一个结点保存自己的数据和下一个数据的地址,这就是单链表,通过这样的形式把所有结点链接起来。双链表如图所示:双链表可以通过指针访问后一个元素,也可以访问前一个元素。二、多文件实现单链表1、自己编写的头文件SList.h#pragma once#include<stdio.h>#include<stdlib.h&
2020-12-14 19:03:03 776 5
原创 c语言实现动态顺序表的增删查改
一、顺序表(1)、什么是顺序表在了解顺序表之前先,认识一下线性表。线性表:是n个具有相同特性的数据元素的有限序列。线性表是在应用中被广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队列,字符串等等。线性表在逻辑上是连续的(想象中是连续的),在物理上不一定连续(内存中存储不一定连续,比如链表)。顺序表:是线性表的一种,是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上进行增删查改。(2)、如何使用?顺序表分为:静态顺序表和动态顺序表。静态顺序表:使用
2020-12-08 19:56:29 433 1
原创 C语言动态内存使用多文件实现通讯录,并可以保存在文件中
一、使用多文件实现通讯录1、头文件“Contact.h”自己写的头文件:只要写包含库函数的头文件,和自己写的函数的声明,个人信息结构体,通讯录结构体,以及枚举,和宏定义。#pragma once//防止头文件被重复包含#include<stdio.h>#include<assert.h>#include<string.h>#include<stdlib.h>#pragma warning(disable:4996)//#define MAX
2020-12-06 22:30:13 1120
原创 C语言文件操作的函数使用fopen、fwrite、fread、fseek、ftell、rewind和feof
一、什么是文件,文件包含什么,文件类型有什么???答:文件:存储在磁盘上的文件是文件。C语言中我们谈的文件有两种**:程序文件和数据文件。**程序文件 :包括源文件(.c),目标文件(windows环境是.obj),可执行文件(windows环境是.exe)数据文件 :是程序运行时读写的数据,比如程序运行时需要从中读取数据的文件,或者输出内容的文件。文件包含文件的内容和文件的属性。C语言中的数据文件有二进制文件和文本文件。二进制文件:数据存储时以二进制的形式存储,不加转换的输出到内存,就是二进制
2020-12-01 11:39:05 937
原创 C语言程序判断大小端
一、大小端介绍大端(存储)模式:是指数据的低位保存在内存的高地址中,数据的高位,保存到内存的低地址中。小端(存储)模式:是指数据的低位保存在内存的低地址中,数据的高位,保存到内存的高地址中。。为了方便记忆记住小端模式就可以(小,小,小)比如 short x=0x1122 0x11就是x 的高位,0x22是x的低位。如果x的地址为0x0010,在大端模式下,则11就放在了低地址,22放在高位置。那如何判断你的你当前机器是大端模式,还是小端。只要定义一个整型变量,将它强转成char类型,就会发
2020-11-27 13:34:30 913
原创 表达式求值与整型提升
一、表达式求值(1)表达式求值的顺序一部分由操作符的优先级和结合性决定。举个例子 int a=10;int b=20; int c=a*b+b//c的值为220 int d=a*(b+b);//d的值为400,//优先级不同结果不一样。()优先级比乘法优先级高。例子2:int arr[5]={1,5,3,4,8,6,7};int *b=&arr[0];b=*++arr[0...
2020-11-27 13:07:56 159
原创 c语言整数在内存中的存储
一、整数在内存中的存储。 整型类型有: short (短整型 )、int(整型)、long(长整型)、char(字符)。 如果我们创建一个变量要在内存中开辟一段空间。空间的大小由变量的类型决定。 计算机中有符号数有三种:原码,反码,补码。三种码都是二进制码,最高位是符号位,其余是数值位。正数符号位是0,负数符号位是1 下边讲解一下三种码之间的转换:(1)首先将一个有符号数转换成二进制数(原码)int a=10 a的原码是:00...
2020-11-26 22:21:03 1397
原创 C语言中实现动态内存管理的函数:malloc/calloc/realloc
动态内存管理一、为什么要存在动态内存?1、申请的动态内存具有灵活性,比如在栈上申请一个数组必须要确定数组的大小,而是使用多少,开辟多少。节省空间2、申请的内存比栈上大的多。比如说你要在栈上申请一百万字节,可能就会越界,而申请动态内存可以申请上亿字节。二、申请的动态内存在哪里?答:申请的动态内存在堆上。三、如何申请动态内存?使用malloc 函数、calloc函数和realloc函数。(1)molloc 函数void *malloc(size_t size );mal.
2020-11-25 22:14:12 285
原创 C语言指针和指针数组的使用
一、指针。1、指针的概念:指针就是地址。2、指针的大小是固定的(32位平台下是4字节,64位平台下是8字节)3、指针(指针变量)也是一个变量,用来存储地址的变量,4、指针也有类型。有整形指针,字符指针,数组指针,结构体指针,函数指针等等。整形指针:int a=10;int *p=&a;*p=20;//则a的值,通过p指向a,通过a的地址改变了a的内容,此时a=20;*p(对指针解引用),解引用是指针指向其对应的内容字符指针:char ch='p';char*q
2020-11-15 19:07:54 971 1
原创 C语言多文件编写简单的扫雷游戏
使用C语言编写扫雷游戏1.多文件多文件包含自己写的头文件,和两个源文件。2.大概思路。作为新手编写扫雷游戏,只能利用数组,循环编写一个不太完善的扫雷游戏,下边是我写扫雷游戏的大致思路。1、首先需要画一个棋盘,需要创建两个二维字符类型数组且大小相同,一个显示给用户,一个隐藏起来。2、在隐藏的棋盘里边需要设置雷的个数,我设计的棋盘大小是10*10的,有100 个元素,其中雷的个数是20个。雷用字符‘1’,表示,3、进行扫雷,输入自己的坐标,并进行判断。如果输入坐标在隐藏的数组里对应的不是雷,我
2020-11-02 22:24:28 187
原创 C语言使用多文件编写简单三子棋代码
一、写三子棋的大概思路。多文件编写三子棋以及自己写的头文件T_Game.h主函数在main.c源文件里游戏代码在T_Game.c源文件里以上两个源文件必须包含头文件T_Game.h1、要话一个3*3的棋盘。2.接着是下棋下棋布置下一次,所以使用循环。一直下到有结果时退出循环。每下一次,需要判断一次。do{(1)首先人先下下完,(2)判断是否赢了、输了、还是和棋。如果棋盘已经下满,即已经有了结果,退出循环。(3)电脑下(4)判断是否赢了、输了、还是和棋。如果棋盘已经下满,即
2020-11-01 22:44:06 90
原创 C语言中内存与指针
一、什么是内存内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的。为了有效的使用内存,就把没存划分成一个个小的内存单元,每个内存单元的大小是1个单元。为了有效的访问内存的每个单元,就给内存单元进行了编号,这些编号就称为内存单元的地址。二、指针指针就是用来存储这些地址的。如果我们要存储这些地址,需要定义一个指针(指针变量)。指针既然是变量,只要被定义就会对该变量在内存中分配空间,并且存放内容,只不过放的内容是其他变量的地址。我们用int *来定义指针。用**号来解引用,//
2020-10-27 18:46:06 553
原创 C语言中的while循环语句的使用
一、为什么要使用循环结构? 在C语言中我们主要学习的循环语句有while循环、for循环和do循环。当一件事需要我们完成很多次,我们就可以通过循环来解决。1.while循环while(表达式){ 循环语句:}//当执行while循环时中,先判断表达式是否为真(非0),则会执行代码块里的循环语句,知道表达式最后为0,才跳出循环。如果我们要打印1~10;我们可以这样写:int main(){ int i = 1; wh...
2020-10-25 17:45:18 34307 1
原创 C语言中关键字typedef、enum的使用
前言关键字是C语言中编程中必不可少的,无论我们定义数据类型、修饰函数、变量还是用来循环等等都是必不可少的。一、常见的关键字有auto:自动,局部变量之前都有。break:停止 ,char ,const ,continue :继续 ,unsigned:无符号的 ,signed:有符号的 ,static;静态 ,struct:结构体 ,typedef:类型定义:union:联合体,void ,volatile,while,goto,if,下边主要讲解typedef和enum的 使用二、...
2020-10-22 23:59:36 8642 1
原创 了解C语言中操作符的简单使用
一、算术操作符+(加)、-(减)、*(乘)、/(除(取商))、%(取模)int main(){ int a = 22; int b = 10; int sum = a + b;//加 int mul = a * b;//乘 int div = a / b;//除 int sub = a - b;//减 int c = a % b;//取模 printf("sum= %d\n", sum); 运行结果: ...
2020-10-13 13:11:53 214
原创 关键字static在程序中的使用
关键字static在程序中的使用文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言static提示:以下是本篇文章正文内容,下面案例可供参考一、static是什么? 在C语言中关键字static是用来修饰变量和函数的,它可以改变函数和变量的生命周期和作用域。二、使用步骤1、使用方法在我们定义的变量或者函数前加static即可。如下 static int a=0;或者static int...
2020-10-13 12:30:03 266
原创 “hello Word”和C语言中常见的数据类型
C 语言是面向过程的计算机编程语言。编译就是将我们写的C语言程序编译成计算机可识别的二进制数。 如下是C语言课本上第一个C语言程序 #include<stdio.h> int main() { printf("hehe");...
2020-09-29 19:21:39 413
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人