自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NewsomTech

知之非艰,行之惟艰。

  • 博客(65)
  • 资源 (2)
  • 收藏
  • 关注

原创 【Leetcode-020】有效的括号(Java && C++实现)

题解1 栈-括号匹配(Java实现)2 栈-括号匹配(C++实现)-待更新1 栈-括号匹配(Java实现)/* 方法:栈-括号匹配 难度:简单 思路:使用栈对各类型括号进行匹配 当前字符为左括号:入栈 当前字符为右括号:判断当前栈是否为空,且当前右括号是否与栈顶元素括号匹配 时间复杂度:O(n) 空间复杂度:O(n)*/import java.util.Scanner;import java.util.St

2021-02-14 21:14:20 199

原创 【Leetcode-018】四数之和(Java && C++实现)

题解1 数组排序+双指针+递归(Java实现)2 拓展:N数之和1 数组排序+双指针+递归(Java实现)/* 方法:数组排序 + 双指针 + 递归调用 难度:中等 思路:从二数之和扩展到三数之和,再扩展到四数之和 对排序后的数组进行遍历时(第1个数),第2、3、4个数调用已有的三数之和API 遍历过程需保证第1个数不能出现重复(第2、3、4个数已控制不会出现重复结果) 时间复杂度:O(n^3) 数组排序O(

2021-02-14 21:09:46 403 4

原创 【Leetcode-017】电话号码的字母组合(Java && C++实现)

题解1 回溯算法(Java实现)2 回溯算法(C++实现)-待更新1 回溯算法(Java实现)/* 方法:回溯搜索算法 + HashMap/一维数组 映射 难度:中等 思路:使用回溯算法遍历决策树,穷举所有解,决策树的每个节点维护当前已选路径track/path和选择列表等信息。 本题中,电话号码digits确定了各个数字的出现顺序(每个数字对应不同字母)。对电话号码每个数字的可能字母进行穷举组合。 使用HashMap或一维数组,存储数字

2021-02-14 21:04:52 239 3

原创 【Leetcode-015】三数之和(Java && C++实现)

题解1 数组排序+双指针+递归调用(Java实现)1 数组排序+双指针+递归调用(Java实现)/* 方法:数组排序 + 双指针 + 递归调用 难度:中等 思路:从二数之和扩展到三数之和 对排序后的数组进行遍历时(第1个数),第2个数和第3个数调用已有的二数之和API 遍历过程需保证第1个数不能出现重复(第2、3个数已控制不会出现重复结果) 时间复杂度:O(n * n) 数组排序O(n logn)

2021-02-14 20:59:45 200

原创 【Leetcode-005】最长回文子串(Java && C++实现)

题解1 双指针(Java实现)2 动态规划(Java实现)3 双指针(C++实现)-待更新4 动态规划(C++实现)-待更新1 双指针(Java实现)解法1:双指针-左右指针(Java实现)/* 方法2:双指针-左右指针 思路:使用双指针(左右指针)的方法判断回文字符串,可同时解决回文串长度为奇数和偶数的情况 通过遍历原字符串的各个索引(作为回文串的中心节点-向两边扩散),调用回文字符串函数,求解最大值 时间复杂度:O(n * n) 空间复杂度:O

2021-02-14 20:56:25 262

原创 【Leetcode-003】无重复字符的最长子串(Java && C++实现)

/* 方法1:滑动窗口-HashMap实现 难度:中等 思路:维护一个滑动窗口及窗口中的字符技计数器window(HashMap或数组) (1)初始化:窗口的左右指针left和right,以及记录最大长度的变量maxLen (2)移动right指针、不断扩大窗口 → 更新window计数器 (3)(当移入窗口的字符的出现次数大于1时,收缩窗口) 移动left指针、不断缩小窗口,直至当前移入窗口的

2021-02-14 20:49:34 195

原创 C++文件I/O操作(文本文件、二进制文件)

文章目录5.1文本文件5.1.1写文件5.1.2读文件5.2 二进制文件5.2.1 写文件5.2.2 读文件程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream:

2021-02-14 20:40:19 874

原创 C++类和对象(七):多态(多态原理、纯虚函数与抽象类、虚析构与纯虚析构)

文章目录4.7 多态4.7.1 多态的基本概念4.7.2 多态案例一-计算器类4.7.3 纯虚函数和抽象类4.7.4 多态案例二-制作饮品4.7.5 虚析构和纯虚析构4.7.6 多态案例三-电脑组装4.7 多态4.7.1 多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定

2021-02-14 00:18:23 500

原创 C++类和对象(六):继承

文章目录4.6 继承4.6.1 继承的基本语法4.6.2 继承方式4.6.3 继承中的对象模型4.6.4 继承中构造和析构顺序4.6.5 继承同名成员处理方式4.6.6 继承同名静态成员处理方式4.6.7 多继承语法4.6.8 菱形继承4.6 继承继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WY2VmVws-1612893021684)(assets/1544861202252.png)]我

2021-02-13 02:33:56 1308 2

原创 C++类和对象(五):运算符重载

文章目录4.5.1 加号运算符重载4.5.2 左移运算符重载4.5.3 递增运算符重载4.5.4 赋值运算符重载4.5.5 关系运算符重载4.5.6 函数调用运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型4.5.1 加号运算符重载作用:实现两个自定义数据类型相加的运算class Person {public: Person() {}; Person(int a, int b) { this->m_A = a; this->m

2021-02-10 02:30:11 796

原创 C++类和对象(四):友元(全局函数、类、成员函数作友元)

文章目录4.4.1 全局函数做友元4.4.2 类做友元4.4.3 成员函数做友元生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元4.4.1

2021-02-06 00:17:27 1001

原创 C++类和对象(三):C++对象模型和this指针

文章目录1 成员变量和成员函数分开存储2 this指针3 空指针访问成员函数4 const修饰成员函数(常函数与常对象)1 成员变量和成员函数分开存储C++中,类的成员变量和成员函数分开存储。只有非静态成员变量属于类的对象,占用对象的内存空间。注1:非静态成员函数和静态成员(包括静态成员变量与静态成员函数)均不属于类的对象,不占用对象的内存空间。注2:非静态成员函数并非某个对象独有,内存中仅存在一份数据(一份函数实例)。不同对象的某个非静态成员函数共享同一个函数实例,即多个同类型的对象会共用一块

2021-02-05 00:14:21 413

原创 C++类和对象(二):对象的初始化和清理

文章目录1 构造函数和析构函数1.1 对象初始化和清理的背景1.2 构造函数和析构函数的特点1.3 构造函数(可重载)1.4 析构函数(不可重载)2 构造函数的分类及调用3 拷贝构造函数调用时机4 构造函数调用规则5 深拷贝与浅拷贝6 初始化列表7 类对象作为类成员8 静态成员1 构造函数和析构函数1.1 对象初始化和清理的背景背景:对象的初始化和清理涉及程序安全。①对象或变量使用前若未初始化,则程序运行结果存在不确定性;②对象或变量使用完毕后若未及时清理,则会导致内存泄露。1.2 构造函数

2021-02-04 00:02:06 793 9

原创 C++类和对象(一):封装

文章目录0 类和对象1 封装的意义2 结构体struct和类class区别3 成员属性设置为私有0 类和对象C++面向对象的三大特性:封装、继承、多态。C++中==“万物皆对象”==,对象包含属性(成员变量)和行为(成员函数)。1 封装的意义封装的意义:(1)将属性和行为作为一个整体,表征现实的事物;(2)对属性和行为进行权限控制。实例化:通过类创建一个对象封装意义一:​ 在设计类的时候,属性和行为写在一起,表现事物语法: class 类名{ 访问权限: 属性 / 行为 };

2021-01-24 22:00:38 514

原创 C++函数进阶(内联函数、默认参数、占位参数、函数重载、extern “C“)

文章目录1 内联函数(inline function)1.0 内联函数的引出2 函数默认参数3 函数占位参数4 函数重载4.1 函数重载概述4.2 函数重载注意事项1 内联函数(inline function)1.0 内联函数的引出宏函数:优点:以空间换时间,消耗内存空间以节省普通函数入栈与出栈的时间开销2 函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名 (参数= 默认值){}示例:int func(int a, int b = 10, int

2021-01-22 23:01:58 518

原创 C++引用(变量引用、数组引用与数组指针、引用本质-指针常量、常量引用)

文章目录1 引用的基本用法2 引用注意事项3 引用做函数参数4 引用做函数返回值5 引用的本质6 常量引用1 引用的基本用法作用:为变量起别名。语法:数据类型 &别名 = 原名;示例:int main() { int a = 5; int &b = a; //引用:为变量起别名 cout << "a = " << a << endl; //5 cout << "b = " << b << endl;

2021-01-16 12:26:02 6505

原创 C++内存分区模型(代码区、全局区、栈区、堆区、new & delete)

文章目录0 内存分区模型1 程序运行前2 程序运行后3 new操作符0 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1 程序运行前​ 在程序编译后,生成了exe可执行程序,未执行该程

2021-01-13 17:09:41 1249 2

原创 C++结构体

文章目录1 结构体的基本概念2 结构体定义和使用3 结构体数组4 结构体指针5 结构体嵌套结构体6 结构体做函数参数7 结构体中 const使用场景8 结构体案例8.1 案例18.2 案例21 结构体的基本概念结构体是用户自定义的数据类型(内置数据类型的集合),可存储不同的数据类型。2 结构体定义和使用定义结构体类型:struct 结构体类型名 { 结构体成员列表 };例:struct Person { string name, int age};创建结构体变量的3种方式:(1)先创建结构

2021-01-08 22:04:46 4480 8

原创 C++指针

文章目录1 指针的基本概念2 指针变量的定义和使用3 指针所占内存空间4 空指针和野指针5 const修饰指针6 指针和数组7 指针和函数8 指针、数组、函数1 指针的基本概念指针的作用 :通过指针间接地访问内存(1)内存编号从0开始记录,一般使用十六进制数字表示;(2)利用指针变量保存地址。2 指针变量的定义和使用指针变量定义语法: 数据类型 * 变量名;示例:int main() { //1、指针的定义 int a = 10; //定义整型变量a //指针定义语法: 数据

2021-01-04 18:28:39 620 1

原创 C++函数

文章目录

2020-12-27 22:12:27 444

原创 C++数组(数组定义方式、数组名作用、数组地址)

文章目录1 数组概述2 一维数组2.1 一维数组定义方式2.2 一维数组数组名2.3 冒泡排序3 二维数组3.1 二维数组定义方式3.2 二维数组数组名3.3 二维数组应用案例1 数组概述数组是一个集合,用于存放相同类型的数据元素。特点1:数组中的每个数据元素具有相同的数据类型。特点2:数组占用一段连续的内存空间。2 一维数组2.1 一维数组定义方式注1:数组名的命名规范与变量名命名一致,且数组名不能与变量重名。注2:数组的下标/索引从0开始。一维数组定义的3种方式:(1)数据类

2020-12-26 18:31:41 99500 7

原创 C++程序流程结构(选择语句、循环语句、跳转语句)

文章目录1 选择结构1.1 if语句1.2 三目运算符1.3 switch语句4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句4.2.3 for循环语句4.2.4 嵌套循环4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 goto语句C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择地执行相应功能循环结构:依据条件是否满足,循环多次执行某

2020-11-20 20:30:30 1248

原创 C++运算符(算术、赋值、比较、逻辑运算符)

文章目录1 算术运算符2 赋值运算符3 比较运算符4 逻辑运算符运算符的作用:执行代码的运算。运算符类型作用算术运算符处理四则运算赋值运算符将表达式的值赋给变量比较运算符表达式的比较,并返回一个真值(1)或假值(0)逻辑运算符根据表达式的值返回真值(1)或假值(0)1 算术运算符作用:用于处理四则运算算术运算符的种类:运算符术语示例结果+正号+33-负号-3-3+加10 + 515-

2020-11-19 17:31:17 1131

原创 C++数据类型(整型、浮点型、字符型、字符串型、布尔型)

文章目录1 整型2 sizeof关键字3 浮点型(实型)4 字符型5 转义字符6 字符串型7 布尔类型 bool8 数据的输入C++创建变量或常量时,必须指定数据类型,否则无法为变量分配内存。数据类型的意义:为变量分配合适的内存空间,避免浪费内存资源。1 整型作用:整型变量表示整数类型的数据。C++中共有4种表示整型的类型,区别在于所占内存空间和可表示的取值范围不同。注:实际开发中,较多使用int类型表示整型数据,占用空间大小为4字节。数据类型占用空间取值范围sh

2020-11-14 11:25:59 66669 4

原创 C++基础概念——Hello Cpp!

1 C++程序编写步骤编写C++程序主要分为4个步骤,IDE以Microsoft Visual Studio 2019(Community版本)为例:创建项目:创建新项目-空项目-配置项目名称和路径;创建文件:右键源文件-添加-新建项;编写代码:在创建的.cpp源文件中编写C++代码;运行程序:标签栏-点击“本地Windows调试器”,编译运行编写的C++源程序。2 注释作用:在代码中添加解释和说明的文字,便于阅读和理解代码。注释的两种格式(1)单行注释:// 注释内容通常使用在某行

2020-11-13 14:35:19 1086

Visual Studio 2019常用快捷键【重点标注版】.pdf

Visual Studio 2019常用快捷键,2021年2月自定义版,适合VS用户

2021-02-16

Visual Studio 2019常用快捷键【打印版】.pdf

Visual Studio 2019常用快捷键(PDF版),可打印熟悉常用快捷键。

2021-02-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除