随笔分类 - C/C++
摘要:给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target =
阅读全文
摘要:给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 示例 1: 输入: nums = [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最
阅读全文
摘要:如果一个年份是闰年要满足一下条件: 1、能被4整除,但不能被100整除; 2、能被400整除; 所以判断闰年的条件为 (year%4==0&&year%100!=0)||year%400==0) #include<bits/stdc++.h> using namespace std; int mai
阅读全文
摘要:queue不可以遍历,queue是先进后出的数据类型, 如果一定要遍历,只能不断读top()然后再pop()掉。把队首元素移除,然后push回去。 故意把遍历操作隐藏掉了,因为如果要遍历就不该用queue。 #include<iostream> #include<queue> using names
阅读全文
摘要:unique_ptr持有对对象的独有权——两个unique_ptr不能指向一个对象,即 unique_ptr 不共享它所管理的对象。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL)算法。只能移动 unique_ptr,即对资源管理权限可以实
阅读全文
摘要:一、概述 C++ 标准模板库 STL(Standard Template Library) 一共给我们提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,其中 auto_ptr 是 C++98 提出的,C++11 已将其摒弃,并提出了 unique
阅读全文
摘要:server.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/socket
阅读全文
摘要:子类继承父类的虚函数表的方式是复制一份。存在虚函数的类,都有自己的虚函数表,不与其他类共用。 只要祖先类的某个函数被声明位virtual, 则在后代中无论是否显式地添加virtual,该函数一直都是虚的。 如果子类重写了某个虚函数,则该类的虚函数表对应位置上的虚函数地址会被覆盖。如果完全不重写,则子
阅读全文
摘要:new和malloc的区别可以从以下几方面进行阐述: 最大的区别:new在申请空间的时候会调用构造函数,malloc不会调用 申请失败返回:new在申请空间失败后返回的是错误码bad_alloc,malloc在申请空间失败后会返回NULL 属性上:new/delete是C++关键字需要编译器支持,m
阅读全文
摘要:给你一个整数数组 nums 和一个正整数 k,请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。 如果可以,请返回 true;否则,返回 false。 示例 1: 输入:nums = [1,2,3,3,4,4,5,6], k = 4 输出:true 解释:数组可以分成 [1,2,3,
阅读全文
摘要:A 和 B 在一个 3 x 3 的网格上玩井字棋。 井字棋游戏的规则如下: 玩家轮流将棋子放在空方格 (" ") 上。 第一个玩家 A 总是用 "X" 作为棋子,而第二个玩家 B 总是用 "O" 作为棋子。 "X" 和 "O" 只能放在空方格中,而不能放在已经被占用的方格上。 只要有 3 个相同的(
阅读全文
摘要:给你一个字符串 s,它仅由字母 'a' 和 'b' 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。 返回删除给定字符串中所有字符(字符串为空)的最小删除次数。 「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。 「回
阅读全文
摘要:简述三次握手和四次挥手 (1)TCP三次握手 第一次握手:建立连接时,客户端发送syn包(syn=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。 第二次握手:服务器收到syn包,必须确认客户的SYN(ack
阅读全文
摘要:给你一个整数数组 arr ,请你将数组中的每个元素替换为它们排序后的序号。 序号代表了一个元素有多大。序号编号的规则如下: 序号从 1 开始编号。 一个元素越大,那么序号越大。如果两个元素相等,那么它们的序号相同。 每个数字的序号都应该尽可能地小。 示例 1: 输入:arr = [40,10,20,
阅读全文
摘要:C++17将文件系统的操作封装了进来,从而可以跨平台的操作文件系统: #include <iostream> #include <fstream> #include <cstdlib> #include <filesystem> using namespace std::filesystem; in
阅读全文
摘要:给你一个以行程长度编码压缩的整数列表 nums 。 考虑每对相邻的两个元素 [freq, val] = [nums[2i], nums[2i+1]] (其中 i >= 0 ),每一对都表示解压后子列表中有 freq 个值为 val 的元素,你需要从左到右连接所有子列表以生成解压后的列表。 请你返回解
阅读全文
摘要:传统上C++是通过拷贝构造函数完成通过一个对象初始化另一个对象: class A{ public: A() { m_i = new int(1); cout<<"Construct A, this addr:"<<this<<", m_i addr:"<<m_i<<endl; } A(const A
阅读全文
摘要:「无零整数」是十进制表示中 不含任何 0 的正整数。 给你一个整数 n,请你返回一个 由两个整数组成的列表 [A, B],满足: A 和 B 都是无零整数 A + B = n 题目数据保证至少有一个有效的解决方案。 如果存在多个有效解决方案,你可以返回其中任意一个。 示例 1: 输入:n = 2 输
阅读全文
摘要:C++中几乎可以重载全部的运算符,而且只能重载C++中已经有的。不能重载的运算符:“. ”、“.*”、“::”、“?.”; 重载之后运算符的优先级和结合性都不会改变; 运算符重载是针对新类型的实际需要,对原有运算符进行适当的改造; 例如:使用复数类的对象可以用“+”运算符实现加法,是时钟类对象可以用
阅读全文
摘要:动态分配就是用运算符new来创建一个类的对象,在堆上分配内存。 静态分配就是A a;这样来由编译器来创建一个对象,在栈 上分配内存。 (1)动态分配(在堆上分配内存) 将类的构造函数和析构函数设为protected属性,这样类对象不能够访问,但是派生类能够访问,能够正常的继承。同时创建另外两个cre
阅读全文