- 博客(230)
- 资源 (1)
- 收藏
- 关注
原创 lambda表达式
lambda表达式(匿名函数),实际上就是提供了一个类似匿名函数的特性,而匿名函数则是在需要一个函数,但是又不想去命名一个函数下去使用的。
2022-09-26 09:57:00
254
原创 蔚来-软件开发工程师一面记录
死锁出现的场景:当代码中有2个锁,锁A和锁B,也有2个线程,线程1和线程2,线程1执行时,先抢到锁A,然后要去抢占B,同时线程2先抢到了锁B,然后要去抢占锁A,此时就出现死锁情况,互相等待资源,又不释放自身的资源。由于多个线程获取多个锁资源的时候,顺序不一致导致的死锁问题,那么保证它们获取锁的顺序是一致的,问题就可以解决。池子内为了保证在任意时刻只允许一个线程访问共享数据的互斥锁(互斥量),结合互斥锁一起使用的条件变量,以达到满足某个条件时阻塞的要求,是否关闭的标志,还定义了保存任务信息的队列。...
2022-08-09 21:43:46
732
原创 mysql出现:ERROR 1524 (HY000): Plugin ‘123‘ is not loaded
mysql出现:ERROR 1524 (HY000): Plugin '123' is not loaded
2022-08-09 09:35:47
981
原创 网络编程--出现bind error: Address already in use问题
网络编程--出现bind error: Address already in use问题
2022-06-12 15:31:59
4808
1
原创 详细易懂--C++中的STL
目录标题1. STL的背景2. STL基本概念3. STL中的组件4. STL中容器、算法、迭代器1. STL的背景C++面向对象和泛型编程思想,目的就是复用性的提升。为了建立数据结构和算法的一套流程,诞生了STL2. STL基本概念STL(Standard Template Library,标准模板库),可以从广义上分为:容器、算法和迭代器。容器和算法通过迭代器无缝连接,STL几乎所有的代码都采用了模板类或者模板函数。3. STL中的组件分别为:1)容器:各种数据结构,如:vector、li
2022-05-17 19:45:14
536
原创 C++实现数独游戏
问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏。玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行、每一列、每一个3X3粗线宫内的数字均含1-9,并且不重复。例如:输入输出:数据范围:输入一个 9*9 的矩阵输入描述:包含已知数字的9X9盘面数组[空缺位以数字0表示]输出描述:完整的9X9盘面数组示例1输入:0 9 2 4 8 1 7 6 34 1 3 7 6 2 9 8 58 6 7 3 5 9 4 1 26 2 4 1 9 5 3
2022-05-12 20:55:35
4726
原创 C++模板
目录标题1.模板的概念2.函数模板2.1 函数模板语法2.2 函数模板的注意事项2.31.模板的概念模板就是建立通用的摸具,大大提高复用性。其特点:1)模板不可以直接使用,它只是一个框架。2)模板的通用并不是万能的2.函数模板C++另一种编程思想称为泛型编程,主要利用的技术就是模板。C++提供两种给模板机制:函数模板和类模板2.1 函数模板语法函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法:templatetemplate:声明创
2022-05-10 21:33:19
243
原创 C++文件操作
目录1.文本文件1.1 写文件1.2 读文件2.二进制文件2.1 写文件2.2 读文件程序运行时,产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化,C++对文件操作需要包含头文件<fstream><fstream><fstream>。文本类型分为两种:1)文本文件:文件以文本的ASCII码的形式存储在计算机中2)二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们。操作文件三大类:1)ofstream:写2)
2022-04-29 15:56:30
3064
原创 内存分区模型
目录1.程序运行前1.1 代码区1.2 全局区1.3 总结2. 程序运行后2.1 栈区2.2 堆区3. new操作符C++程序在执行时,将内存主要划分为四个区域:1)代码区:存放函数体的二进制代码,有操作系统进行管理的。2)全局区:存放全局变量和静态变量以及常量。可分为BSS 段:存放程序中未初始化的全局变量和静态变量的一块内存区域和数据段:存放程序中已初始化的全局变量和静态变量的一块内存区域。3)栈区:存储局部变量、函数参数值。栈从高地址向低地址增长。是一块连续的空间,由编译器自动分配释放。4)
2022-04-27 15:08:09
447
原创 C++中的类和对象
C++面向对象的三大特性为:封装、继承、多态。C++认为万事万物都皆为对象,对象上有其属性和行为。如人可以作为对象,属性有姓名、年龄、身高、体重等,行为有吃、喝、走、跑等。1.封装1.1 封装的意义封装是C++面向对象的三大特性之一。其意义为:1)将属性和行为作为一个整体:在设计类的时候,属性和行为写在一起,表现事务语法class 类名{ 访问权限 : 属性 / 行为 };#include<iostream>using namespace std;const double PI =
2022-04-27 12:59:06
1547
原创 求职后端--美团一面记录
1.自我介绍2.项目项目的介绍,其中包含那个项目比较难,说一说其中的细节,你干了啥。针对其中的一个项目,某一个功能进行解释。3.基础问题3.1 HTTP的交互方法GET 的语义是从服务器获取指定的资源,这个资源可以是静态的文本、页面、图片视频等。GET 请求的参数位置一般是写在 URL 中,URL 规定只能支持 ASCII,所以 GET 请求的参数只允许 ASCII 字符 ,而且浏览器会对 URL 的长度有限制(HTTP协议本身对 URL长度并没有做任何规定)。POST 的语义是根据请求负荷(报
2022-04-07 20:04:22
1269
原创 内部排序--数据结构
一、基本概念排序:将一个数据元素的任意序列重新排列成一个按关键词有序的序列。稳定的排序:相等的数据元素在排序后相对的位置不变。内部排序的分类:插入排序:将无序子序列中的一个或几个记录插入到有序序列中,从而增加记录的有序子序列的长度。如直插排序、二分插入排序、希尔排序交换排序:通过交换无序序列中的记录从而得到关键词最小或最大的记录,并将它加入到有序子序列中,以此方法增加记录的有序子序列的长度。如冒泡排序、快速排序。选择排序:从记录的无序子序列中选择关键字最小或最大的记录,并将它加入到有序子序列中,
2022-03-27 15:29:30
1312
原创 BM3 链表中的节点每k个一组翻转
描述将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表。如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样。你不能更改节点中的值,只能更改节点本身。数据范围: 0≤n≤2000 , 1≤k≤2000 ,链表中每个元素都满足 0≤val≤1000要求空间复杂度 O(1),时间复杂度 O(n)例如:给定的链表是1→2→3→4→5对于 k = 2 , 你应该返回2→1→4→3→5对于 k = 3 , 你应该返回3→2→1→4→5示例1输入:{1,2,3,4,5},2返回值:{2
2022-03-25 19:27:00
143
原创 NC2 重排链
描述将给定的单链表 L:L0→L1→…→Ln−1→Ln\ L : L_0→L_1→…→L_{n-1}→L_ n L:L0→L1→…→Ln−1→Ln重新排序为:L0→Ln→L1→Ln−1→L2→Ln−2→…L_0→L_n →L_1→L_{n-1}→L_2→L_{n-2}→…L0→Ln→L1→Ln−1→L2→Ln−2→…要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。数据范围:链表长度0≤n≤20000 ,链表中每个节点的值满足0≤val≤10
2022-03-22 21:48:59
469
原创 BM95 分糖果问题
描述一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下:每个孩子不管得分多少,起码分到一个糖果。任意两个相邻的孩子之间,得分较多的孩子必须拿多一些糖果。(若相同则无此限制)给定一个数组 arrarr 代表得分数组,请返回最少需要多少糖果。要求: 时间复杂度为 O(n)空间复杂度为 O(n)数据范围:1≤n≤100000 ,1≤ai≤10001 \le a_i \le 10001≤ai≤1000示例1输入:[1,1,2]返回值:4说明:最优分配方案为1,1,2示例2输入:[1
2022-03-20 16:21:12
5398
原创 BM93 盛水最多的容器
描述给定一个数组height,长度为n,每个数代表坐标轴中的一个点的高度,height[i]是在第i点的高度,请问,从中选2个高度与x轴组成的容器最多能容纳多少水1.你不能倾斜容器2.当n小于2时,视为不能形成容器,请返回03.数据保证能容纳最多的水不会超过整形范围,即不会超过231-1数据范围:0<=height.length<=1050<=height.length<=10^50<=height.length<=105,0<=height[i]<
2022-03-20 15:58:02
468
原创 BM85 验证IP地址
描述编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(".")分割。比如,172.16.254.1;同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (":")分割。比如, 2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有
2022-03-17 16:29:38
187
原创 BM83 字符串变形
描述对于一个长度为 n 字符串,我们需要对它做一些变形。首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。数据范围: 1≤n≤1061\le n \le 10^61≤n≤106 , 字符串中包括大写英文字母、小写英文字母、空格。进阶:空间复杂度 O(n) , 时间复杂度 O(n)输入描述:给定一个字符串s以及它的长度n(1 ≤
2022-03-17 15:42:13
503
原创 BM82 买卖股票的最好时机(三)
描述假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益你最多可以对该股票有两笔交易操作,一笔交易代表着一次买入与一次卖出,但是再次购买前必须卖出之前的股票如果不能获取收益,请返回0假设买入卖出均无手续费数据范围:1≤n≤1051 \le n \le 10^51≤n≤105 ,股票的价格满足 1≤val≤1041 \le val\le 10^41≤val≤104要求: 空间复杂度 O(n),时间复杂度 O(n)
2022-03-17 15:17:09
363
原创 BM81 买卖股票的最好时机(二)
描述假设你有一个数组prices,长度为n,其中prices[i]是某只股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益你可以多次买卖该只股票,但是再次购买前必须卖出之前的股票如果不能获取收益,请返回0假设买入卖出均无手续费数据范围: 1≤n≤1×1051 \le n \le 1 \times 10^51≤n≤1×105 ,1≤prices[i]≤1041 \le prices[i] \le 10^41≤prices[i]≤104要求:空间复杂度 O(n),时间复杂度
2022-03-16 21:55:10
309
原创 BM80 买卖股票的最好时机(一)
描述假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益1.你可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天2.如果不能获取到任何利润,请返回03.假设买入卖出均无手续费数据范围: 0≤n≤1050 \le n \le 10^50≤n≤105 ,0≤val≤1040 \le val \le 10^40≤val≤104要求:空间复杂度 O(1),时间
2022-03-16 20:56:39
96
原创 BM79 打家劫舍(二)
描述你是一个经验丰富的小偷,准备偷沿湖的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家,如果偷了第二家,那么就不能偷第一家和第三家。沿湖的房间组成一个闭合的圆形,即第一个房间和最后一个房间视为相邻。给定一个长度为n的整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。数据范围:数组长度满足 1≤n≤2×1051 \le n \le 2\times10^51≤n≤2×105 ,数组中每个值满足1
2022-03-16 20:47:27
383
原创 BM78 打家劫舍(一)
描述你是一个经验丰富的小偷,准备偷沿街的一排房间,每个房间都存有一定的现金,为了防止被发现,你不能偷相邻的两家,即,如果偷了第一家,就不能再偷第二家;如果偷了第二家,那么就不能偷第一家和第三家。给定一个整数数组nums,数组中的元素表示每个房间存有的现金数额,请你计算在不被发现的前提下最多的偷窃金额。数据范围:数组长度满足 1≤n≤2×1051 \le n \le 2\times 10^51≤n≤2×105 ,数组中每个值满足 1≤num[i]≤50001 \le num[i] \le 50001≤
2022-03-16 20:31:29
140
原创 BM75 编辑距离(一)
描述给定两个字符串 str1 和 str2 ,请你算出将 str1 转为 str2 的最少操作数。你可以对字符串进行3种操作:1.插入一个字符2.删除一个字符3.修改一个字符。字符串长度满足1≤n≤1000 ,保证字符串中只出现小写英文字母。示例1输入:“nowcoder”,“new”返回值:6说明:“nowcoder”=>“newcoder”(将’o’替换为’e’),修改操作1次。“nowcoder”=>“new”(删除"coder"),删除操作5次示例2输入:“in
2022-03-16 17:56:29
808
原创 BM71 最长上升子序列(一)
描述给定一个长度为 n 的数组 arr,求它的最长严格上升子序列的长度。所谓子序列,指一个数组删掉一些数(也可以不删)之后,形成的新数组。例如 [1,5,3,7,3] 数组,其子序列有:[1,3,3]、[7] 等。但 [1,6]、[1,3,5] 则不是它的子序列。我们定义一个序列是 严格上升 的,当且仅当该序列不存在两个下标 ii 和 jj 满足 i<ji<j 且 arri≥arrjarr_i \geq arr_jarri≥arrj数据范围: 0≤n≤1000要求:时间复杂度 O(n2
2022-03-15 21:02:32
445
原创 BM69 把数字翻译成字符串
描述有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。现在给一串数字,返回有多少种可能的译码结果数据范围:字符串长度满足 0<n≤90进阶:空间复杂度 O(n),时间复杂度 O(n)示例1输入:“12”返回值:2说明:2种可能的译码结果(”ab” 或”l”)示例2输入:“31717126241541717”返回值:192说明:192种可能的译码结果代码class Solution {public: /**
2022-03-15 18:51:50
168
原创 BM68 矩阵的最小路径和
描述给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。数据范围:1≤n,m≤500,矩阵中任意值都满足 0≤ai,j≤1000 \le a_{i,j} \le 1000≤ai,j≤100要求:时间复杂度 O(nm)例如:当输入[[1,3,5,9],[8,1,3,4],[5,0,6,1],[8,8,4,0]]时,对应的返回值为12,所选择的最小累加和路径如下图所示:示例1输入:[[1,
2022-03-15 14:02:44
273
原创 BM67 不同路径的数目(一)
描述一个机器人在m×n大小的地图的左上角(起点)。机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点走到终点?备注:m和n小于等于100,并保证计算结果在int范围内数据范围:0<n,m≤100,保证计算结果在32位整型范围内要求:空间复杂度 O(nm),时间复杂度 O(nm)进阶:空间复杂度 O(1),时间复杂度 O(min(n,m))示例1输入:2,1返回值:1示例2输入:2,2返回值:2代码class Solution {
2022-03-14 21:40:37
385
ipfs的官方文档,手动翻译
2021-10-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人