- 博客(13)
- 收藏
- 关注
原创 力扣面试经典 150 题(下)
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。public:// 收缩右侧,尝试寻找更左侧的target} else {// 检查是否找到了合法的答案if (left!// 返回左边界的索引return -1;// 如果未找到目标值,返回-1。
2025-02-08 22:56:26
888
原创 力扣面试经典 150 题(中)
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。public:// 收缩右侧,尝试寻找更左侧的target} else {// 检查是否找到了合法的答案if (left!// 返回左边界的索引return -1;// 如果未找到目标值,返回-1。
2025-02-06 23:00:40
634
原创 C++ 语言特性相关
可以表示左值引用或右值引用,具体取决于初始化的值。可以将左值强制转换为右值引用,从而允许资源转移。万能引用类型:在模板参数推导中,
2025-02-05 17:24:50
248
原创 C++ 面向对象
从存储空间的角度考虑:构造函数是在实例化对象的时候进行调用,如果此时将构造函数定义成虚函数,需要通过访问该对象所在的内存空间才能进行虚函数的调用(因为需要通过指向虚函数表的指针调用虚函数表,虽然虚函数表在编译时就有了,但是没有虚函数的指针,虚函数的指针只有在创建了对象才有),但是此时该对象还未创建,便无法进行虚函数的调用。所以构造函数不能定义成虚函数。从使用的角度考虑:虚函数是基类的指针指向派生类的对象时,通过该指针实现对派生类的虚函数的调用,构造函数是在创建对象时自动调用的。
2025-02-04 21:08:31
1310
原创 C++设计模式
应用场景:表示文件系统的类,一个操作系统一定是只有一个文件系统,因此文件系统的类的实例有且仅有一个。打印机打印程序的实例,一台计算机可以连接好几台打印机,但是计算机上的打印程序只有一个,就可以通过单例模式来避免两个打印作业同时输出到打印机。不安全的实现方式: 考虑当两个线程同时调用 getInstance 方法,并且同时检测到 instance 是NULL,两个线程会同时实例化对象,不符合单例模式的要求。单例模式:保证类的实例化对象仅有一个,并且提供一个访问他的全局访问点。饿汉模式:类定义的时候就实例化。
2025-02-04 17:27:06
308
原创 C++ I/O 与进程同步
在 C 语言中我们使用函数作为条件变量,它是由操作系统实现的条件变量,需要详细了解它的运行机制就可以了解 C++ 中条件变量的实现。在 C++11以后,我们可以使用条件变量()实现多个线程间的同步操作;当条件不满足时,相关线程被一直阻塞,直到某种条件出现,这些线程才会被唤醒。C++中包含的头文件在中。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起;通常情况下这个锁是std::mutex,并且管理这个锁只能是等 RAII 模板类。
2025-02-04 16:42:59
747
原创 C++ 关键字与关键库函数
sizeof的参数可以是类型,也可以是变量,且必须是完整类型;sizeof接受的参数可以是对象也可以是表达式,但是 sizeof(expression)在编译时不会对接受的表达式进行计算,编译器只会推导表达式的类型从而计算占用的字节大小;这意味着在函数内部使用sizeof 会得到指向字符类型的指针的大小,而不是原数组的大小,从下述程序的运行结果中就可以看出。strlen测量的是字符串的实际长度(其源代码如下),以 \0 结束,而 sizeof 测量的是对象或者表达式类型占用的字节大小。
2025-02-03 17:43:14
518
原创 C++ 语言对比
自动类型推导,编译器会在编译期间通过初始值或者函数返回值推导出变量的类型。使用auto定义的变量必须有初始值。使用autoconstvolatileautoconstvolatile初始化表达式为数组时,auto关键字推导的类型为指针。数组名在初始化表达式中自动隐式转换为首元素地址的右值。注意:编译器推导出来的类型和初始值的类型并不完全一样,编译器会适当地改变结果类型使其更符合初始化规则。decltype是 “declare type” 的缩写,译为“声明类型”。和auto。
2025-02-03 11:49:07
1143
原创 C++ 编译与内存相关
C/C++ 变量有两个非常重要的属性:作用域与生命周期,这两个属性代表从时间和空间两个不同的维度来描述一个变量。作用域:作用域即一个变量可以被引用的范围,常见的作用域可分为以下几种:全局作用域、局部作用域、语句作用域、类作用域、命名空间作用域和文件作用域。全局变量:具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。其他不包含全局变量定义的源文件需要用extern关键字声明这个全局变量。静态全局变量:具有文件作用域。
2025-02-02 17:29:39
788
原创 力扣面试经典 150 题(上)
27. 移除元素26. 删除有序数组中的重复项121. 买卖股票的最佳时机14. 最长公共前缀28. 找出字符串中第一个匹配项的下标169. 多数元素58. 最后一个单词的长度151. 反转字符串中的单词189. 轮转数组238. 除自身以外数组的乘积122. 买卖股票的最佳时机 II55. 跳跃游戏80. 删除有序数组中的重复项 II13. 罗马数字转整数45. 跳跃游戏 II274. H 指数380. O(1
2025-02-01 11:32:42
621
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人