自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(153)
  • 收藏
  • 关注

原创 C++11 线程库的使用

thread库 thread只是类库,thread对象可以与实际运行的线程产生联系,利用Thread对象对线程进行操作,但是实际线程的存亡与thread对象的存亡并无绝对的决定关联 初始化构造函数:传入一个函数和它对应参数 move构造函数:thread(thread&& x) noexcept,x所代表的线程的任务被交给thread对象 join():操作是在thread t(func)后“某个地方”调用,其作用就是回收对应创建的线程的资源,避免造成资源的泄露 deta.

2021-08-04 14:52:53 251

原创 Unity3D GUIStyle

GUIStyle描述GUI元素的样式信息。大多数GUI函数接受可选的GUIStyle参数来重写默认样式。这让您能够更改或根据不同状态(例如,当鼠标悬停在控件上时)切换颜色、字体及其他细节。当整个 GUI 设计需要一致的外观时,GUISkin 类为您提供了一种有用方法,可以收集一组 GUIStyle 设置并一次应用所有这些设置。构造函数// 空的构造函数public GUIStyle();// 构造与给定的其他 GUIStyle 相同的 GUIStylepublic GUIStyl

2021-05-18 16:23:19 524

原创 unity3D提供了自定义编辑器的接口

在Assets中新建一个C# 脚本,并让public类继承EditorWindow using UnityEngine;using UnityEditor; public class ResizablePanels : EditorWindow{ } 编辑器窗口需要初始化一个静态方法OpenWindow(),然后在这个窗口中获得一个窗口并添加标题, 仅靠静态方法是不够的,我们还需要添加一个按钮或类似的按钮,以使我们的用户在Unity中打开窗口。幸运的是,已经有一..

2021-05-12 11:34:56 422 6

原创 LeetCode5749. 邻位交换的最小次数(求原串到目标串通过交换相邻两个字符的最小交换次数)

题目描述:给你一个表示大整数的字符串 num ,和一个整数 k 。如果某个整数是 num 中各位数字的一个 排列 且它的 值大于 num ,则称这个整数为 妙数 。可能存在很多妙数,但是只需要关注 值最小 的那些。例如,num = "5489355142" :第 1 个最小妙数是 "5489355214"第 2 个最小妙数是 "5489355241"第 3 个最小妙数是 "5489355412"第 4 个最小妙数是 "5489355421"返回要得到第 k 个 最小妙数 需要对 num

2021-05-02 14:36:10 1629

原创 魔法权值(字符串排列+最小循环节)

[编程题]魔法权值时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M给出 n 个字符串,对于每个 n 个排列 p,按排列给出的顺序(p[0] , p[1] … p[n-1])依次连接这 n 个字符串都能得到一个长度为这些字符串长度之和的字符串。所以按照这个方法一共可以生成 n! 个字符串。一个字符串的权值等于把这个字符串循环左移 i 次后得到的字符串仍和原字符串全等的数量,i 的取值为 [1 , 字符串长度]。求这些字符串最后生成的 n! 个字符串中权值为

2021-03-12 19:51:31 386

原创 redis命令简介和hiredis的使用

1.数据库的类型 关系型数据库 操作数据库必须使用SQL语句 数据存储再磁盘上 非关系型数据库 操作数据库不使用SQL语句 数据默认存储在内存 关系型数据库和非关系型数据的联合使用 RDBMS:关系型数据库管理系统 所用数据默认存储在关系数据库里 客户端访问数据库,有一些数据需要频繁的查数据库 服务器首先将数据从关系型数据中读出来->第一次 再将数据写到redis里面 客户端第二次访问数据库时,直接从redis读

2020-12-02 20:12:31 600

原创 状态压缩DP总结

今天上午的leetcode周赛上有一次出现的状态压缩DP的题目(当然零神用匈牙利算法也AC了而且还是多项式时间复杂度orz,orz),我本来以为状压DP这种偏ACM竞赛的算法应该不会出现在笔试题上,没想到这已经是第三次在非ACM性质的比赛上遇到状压DP了(字节跳动的笔试题出现了两次),所以在这里对状态压缩DP做一下总结 (ps.笔试题的难度真的在逐年上升)1.何谓状态压缩​​​​​​​说白了就是利用二进制数来表示问题的每种状态,这就要求被表示的对象只能有两种状态0或者1(也可看做,在或者不.

2020-09-20 18:48:48 545 2

原创 数据结构笔记(5):线段树和树状数组模板

树状数组模板struct fenwick { int* data; int n; fenwick(int _n) : n(_n) { data = new int[n]; for (int i = 0; i < n; i++) data[i] = 0; } ~fenwick() { delete[] data; } void add(int x) { while (x < n) {

2020-09-13 21:55:52 155

原创 数据结构笔记(4):索引堆

索引堆:对于索引堆来说,我们将索引和数据分开存储,而真正表征堆的数组是由索引构成的。如图1所示,二叉树的每个结点上写的不是数字而是索引号。当我们将这个数组变成对以后,这个数组变成图2的样子,我们可以看出数组的data域没有发生改变,发生改变的只是index域,二叉树中的每个元素仍是索引,而每个索引对应的元素才是堆中原本的元素。所以当我们维护这个堆的时候,比较时用的仍然时data域的数据,而交换就要交换index域的数据。 ...

2020-09-07 22:43:41 150 1

原创 C++学习笔记5:C++类相关1

1.类的构造函数构造函数的概念:在类中一种的一种特殊的成员函数,他的名字和类的名字相同,在类创建对象的时候系统会自动调用,构造函数起初始化成员变量的作用,构造函数没有返回值,不能手动调用构造函数,正常情况下构造函数要声明为public。其中一个类可以有多个构造函数,就可以为对象提供多个初始化方法 拷贝构造函数:默认情况下类对象的拷贝是每个成员变量逐个拷贝,如果一个类的构造函数的第一个参数是所属类型的引用。如果还有其他额外的参数,且这些参数还有默认值,则这个函数称为拷贝构造函数2.explicit

2020-09-05 14:56:36 96

原创 数据结构笔记(3):堆和堆排序

堆的定义:堆首先必须是一棵完全二叉树,且这棵完全二叉树中的每个结点总是不大于(或不小于)其父结点。要想完成堆排序首先要建立一个堆,而建立一个堆的关键就是shiftUp和shiftDown操作:shiftUp:这里以大顶堆为例 假设一个堆一开始如下图所示 现在我们往堆中插入52这个元素,如下图所示 shiftUp的核心思想就是:就是将新插入的元素与它的父结点进行比较,若它的值比父结点的大,则交换他们两个的位置,直到该结点的值小于其父结点,或者已经到达根结...

2020-09-02 09:01:49 212

原创 C++学习笔记4:杂谈

1.函数的前置返回类型和后置返回类型函数的前置返回类型就是把函数的返回类型放在函数名的前面例如:void fun(int a, int b, int) {} 函数的后置返回类型就是在函数前面放auto 而把返回类型放在函数后面 例如:auto fun(int a, int b, int c)-> void {}2.内联函数在函数定义前面加一个inline,适用于函数体小,调用却很频繁,在使用内联函数需注意以下几点系统会在编译阶段对内联函数进行处理,系统尝试将调用该函数的动作替换为函数本体

2020-08-29 19:15:02 118

原创 数据结构笔记(2):高级排序

这里介绍两个O(nlogn)的算法,归并排序和快速排序归并排序:利用分治法的思想将数组一分为二,对分好的两段数组分别进行排序,再排好后的两段进行归并即可。下面我们说一下归并排序几个可以优化的点:当待排序的数组元素个数小于15个的时候我们采用插入排序,因为在数据量较大的时候,待排序列小于15个元素时我可以认为这些待排的元素近乎有序,而对于一个近乎有序的数组采用插入排序是接近O(n)的时间复杂度的 只有当arr[mid] > arr[mid + 1]时我们才进行归并这里还添加一种利用循环(

2020-08-28 19:18:28 226

原创 数据结构笔记(1):基础排序

这里介绍三个O(n^2)的排序算法即插入排序、选择排序和冒泡排序,这三个排序算法应该是所有排序中最简单的。插入排序:在已经排好序的序列中找一个合适的位置,将那个未被排序的数插入那个位置即可。选择排序:在未排序序列找到一个最小值放到已排序的序列后面即可。冒泡排序:每循环一次,通过逐位交换的方式将最大值往未排序的序列的最后一位推即可。下面的代码针对不同的测试数据对上面三种算法的时间性能进行了相应测试1.首先我们实现一个用于测试排序算法时间效率的类#ifndef SORTTESTHELP

2020-08-25 09:05:16 352

原创 C++学习笔记3:C++动态内存分配和nullptr简介

C++一般将内存分为5个区:栈:一般函数内的局部变量都会放在这里,由编译器自动分配和释放 堆:程序员用malloc/new 向操作系统申请的内存都放在这类,用free/delete释放 全局、静态存储区:放全局变量和静态变量的地方 常量区:放常量的地方 程序代码区:放我们运行的代码的地方由于栈空间中的变量的内存是由系统自动分配的所以分配的速度会很快,但栈空间有限。而在堆中的变量的内存是由程序员主动向操作系统申请的所以分配速度比较慢,但是只要不超过实际拥有的物理内存且操作系统允许的情况下堆空间可

2020-08-24 09:26:50 435

原创 C++学习笔记2:命名空间

命名空间:(1)命名空间就是为了防止名字冲突而引入的一种机制。系统我们可以定义多个命名空间,每个命名空间都可以有自己的名字,但不可以同名,可以把命名空间理解成一个作用域。namespace zhangsan { // 定义一个命名空间 void radius() { std::cout << "zhangsan" << "\n"; }}namespace lishi { void radius() { std::cout <<

2020-08-22 10:14:23 265

原创 C++学习笔记1:过程式、基于对象式、面向对象式 程序设计的区别

面向过程的程序设计:典型应用就是C语言,采用的是自顶向下、逐步求精、按照顺序一步一步把问题解决。基于对象的程序设计:我们把这种功能包在类里,需要的时候通过定义对象的方式来调用程序。这就叫基于对象的程序设计。例如:我们定义一个打工仔类struct dagongzai { void qichuang(); // 起床 void chuanyifu();// 穿衣服 void shuaya(); // 刷牙 void chizaofan();// 吃

2020-08-21 23:28:05 356

原创 搜狗2020校招【后端】笔试(第二场)

两道编程题的题解密码生成链接:https://www.nowcoder.com/questionTerminal/96bf0c548a094de7a05919e0b32b1a5a来源:牛客网小汪作为一个有数学天分的程序猿,设计了一套密码生成器来搞定自己的密码问题。密码生成器由N个槽位组成,槽位的下标为0~N-1,每个槽位存储一个数。起初每个槽位都是0。密码生成器会进行M轮计算,每轮计算,小汪会输入两个数L,R(L<=R),密码生成器会将这两个数作为下标,将两个下标之间(包含)的所.

2020-08-21 15:34:04 629

原创 搜狗2020校招(后端)笔试第一场

写了两道题第一题链接:https://www.nowcoder.com/questionTerminal/40223a1cd2a24b96aaff958e516c49fc来源:牛客网关联容器map保存<key, value>数据,能通过key快速存储或查找记录。请设计一个map,能够满足以下要求:1. map的容量size是一个固定值N,即map最多保存N个<key, value>记录;2.mapinsert一个<key, value>前,首...

2020-08-20 20:03:52 681

原创 最惨的一次leetcode周赛

昨天在牛客网上做了pony.ai的笔试题,结果就勉强的写出了一道,真的被打击到了,刚觉leetcode上的题都白刷了,是我太菜了还是题太难了,今天打leetcode的周赛后两道题都会写的,比赛时就是没写出来,????。5489.两球之间的磁力在代号为 C-137 的地球上,Rick 发现如果他将两个球放在他新发明的篮子里,它们之间会形成特殊形式的磁力。Rick 有n个空的篮子,第i个篮子的位置在position[i],Morty想把m个球放到这些篮子里,使得任意两球间最小磁力...

2020-08-16 12:32:47 396

原创 C++ bitset 用法

1.构造函数bitset 有3种常用的构造函数bitset<4> bitset1; // 无参构造,长度为4,默认为0bitset<8> bitset2(12); // 长度为8,以二进制的形式将12进行保存,前面用0补充string s = "100101";bitset<10> bitset3(s); // 长度为10前面用0补充,用字符串构造时字符串种只能包含0或1cout << bitset1 << endl;cou

2020-08-12 21:45:32 278

原创 Qt实现简单的两人udp聊天程序

1.设计一个简单的界面如下图所示<?xml version="1.0" encoding="UTF-8"?><ui version="4.0"> <class>Widget</class> <widget class="QWidget" name="Widget"> <property name="geometry"> <rect> <x>0</x> &l

2020-05-30 17:06:25 976

原创 一个简单的分词系统

一、基于枚举法的中文分词工具前向最大匹配 例子:我们经常有意见分歧 词典:["我们", “经常”,“有”, “有意见”, “意见”, “分歧”] 我们定义max_len = 5 开始执行前向匹配算法 (1) [我们经常有]意见分歧 (词典中没有, max_len缩小一位) [我们经常]有意见分歧(词典中没有, max_len缩小一位) [我们经]常有...

2020-04-20 21:10:18 485

原创 事务

事务:若干个指令的集合(DML)事务的特点:要么一起成功,要么一起失败(原子操作)commit/rollback事务开始的标志:DML语句开始事务结束的标志: 提交结束:1.显示提交 commit 2.隐式提交 执行DDL 3.正常退出(quit) 回滚结束:1.显示回滚rollback事务4大特性(ACID):原子性、一致性、...

2020-04-12 20:19:27 188

原创 腾讯2020校园招聘-后台 编程题

小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC],现在小Q的同学收到了小Q发送过来的字符串,你能帮助他进行解压缩么?输入描述:输入第一行包含一个字符...

2020-04-12 17:44:57 1187

原创 Orcale数据处理

SQL语言类型DML data manipulation language (数据操作语言)select insert update delete ........ DDL data definition language (数据定义语言)create,truncate.......... DCL data control language (数据控制语言)grant.......插...

2020-04-12 16:33:03 171

原创 socket实现客户端与服务器通信(tcp通信)

1.网络套接字函数int socket(int domain, int type, int protocol) 创建套接字 domain ipv4 af_inet type tcp-流式协议 udp-报式协议 protocol 0 返回值:文件描述符 int bind(int sockfd, const s...

2020-03-11 23:35:10 5496 1

原创 用条件变量实现生产者-消费者模型

首先介绍一下条件变量下面用条件变量来实现生产者-消费者模型大体思路如下:生产者为链表“生产”结点,消费者“消费”结点,如果链表中没有结点,则阻塞消费者线程#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#...

2020-03-08 21:52:52 1249 1

原创 互斥锁和读写锁

互斥锁的类型 pthread_mutex_t mutex 互斥锁的特点 多个线程访问资源的时候是串行的 互斥锁的使用步骤 创建一个互斥锁:pthread_mutex_t mutex 初始化这把锁:pthread_mutex_init(&mutex, NULL); 寻找共享资源: 操作共享代码之前加锁 操作完之后解锁 互斥锁的相关函数 初始化...

2020-03-07 15:07:48 185

原创 堆和栈的区别

1.首先从数据结构的角度说明一下堆栈的区别:栈:是一种后进先出的数据结构,是一端受限的线性表 堆:(1)堆是一棵完全二叉树。(2)这棵完全二叉树中的每一个结点的值都不大于(或不小于)其父结点的的值。2.C语言中内存分配中的堆和栈。下面是一个进程的虚拟地址空间的内存分布图可以看出内存中的栈地址是向下增长的,而堆是向上增长的。其中,栈是为分配局部变量分配内存空间,堆用于分配程序...

2020-03-03 13:22:23 267

原创 Linux基本命令

linux的目录结构就是树结构:顶级目录是根目录/bin目录:binary,存放一些二进制文件,即shell命令/dev目录:device,linux下面一切皆文件,硬盘,显卡,显示器都被抽象为文件/lib目录:动态库/mnt:手动挂载目录/media:外设自动挂载目录/root:linux超级用户的家目录/usr:unix的资源目录/etc:配置文件的目录/o...

2020-03-01 16:24:55 239

原创 LeetCode 1326. 灌溉花园的最少水龙头数目 (贪心 区间完全覆盖问题)

在 x 轴上有一个一维的花园。花园长度为n,从点0开始,到点n结束。花园里总共有n + 1 个水龙头,分别位于[0, 1, ..., n] 。给你一个整数n和一个长度为n + 1 的整数数组ranges,其中ranges[i] (下标从 0 开始)表示:如果打开点i处的水龙头,可以灌溉的区域为[i -ranges[i], i + ranges[i]]。...

2020-01-20 09:34:46 766

原创 LeetCode 2 两数相加 (记录一种将一组数链接成链表的方法)

给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...

2020-01-18 20:59:16 95

原创 乘积最大子序列

给定一个整数数组nums,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。输入: [2,3,-2,4]输出: 6解释:子数组 [2,3] 有最大乘积 6。题解:用imax记录当前的最大值,用imin记录当前的最小值,我们不难得出imin 一定小于等于imax,(即imin <= imax),当遇到一个负数时(nums[i] < 0)imax * nums...

2020-01-13 20:55:59 111 1

原创 蓝桥杯  算法提高 最大值路径

问题描述  刷微博,编程序。如下图所示,@北京发布 提出了如下“头脑震荡”问题。对此问题做一般化描述:  有n阶方阵,从矩阵的左下角元素为起点,从行或列(水平或垂直)两个方向上移动,直到右上角。求出有多少条路径可以使得经过的元素累加值最大,最大值是多少。输入格式  共有n+1行。  第一行整数n,表示矩阵的阶数,2<=n<=10。  第二行起,每行n个整数,以空格分隔...

2020-01-12 20:21:49 325

原创 蓝桥杯 算法提高 Island Hopping

问题描述  太平洋岛网公司(PLN)已经瞄向了太平洋中的一些群岛。这些群岛没有快捷的互联网连接。PLN计划向群岛提供互联网服务,以开发这个太平洋中潜在的市场。每组群岛的核心岛屿已经被深海电缆连入互联网。接下来需要做的事把其余岛屿和核心岛屿连接起来。  对于每个岛,将给出它的路由器的位置和居民数量。PIN将会在群岛中连接多条电缆,每条电缆连接两座岛的路由器,最后使得每座岛都通过一条电缆路径与核...

2019-12-18 10:25:03 619

原创 手动实现决策树(ID3算法)

rom math import logimport operator#计算熵def calcShannonEnt (dataSet): numEntries = len(dataSet) labelCounts = {} for featVec in dataSet: currentLabel = featVec[-1] if cur...

2019-12-08 19:59:21 573

原创 二进制中1的个数 (给面试官惊喜的解法)

把一个整数减1,那么该整数二进制表示中就是把最右边的1变成0,,如果右边还有0则都变成1,它左边所有位都保持不变,接下来我们把一个整数和它减去1的结果做与运算,就相当于把它最右边的1变成0.class Solution {public: int NumberOf1(int n) { int count = 0; while (n) { ...

2019-12-05 09:01:52 89

原创 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。class Solution {public: int minNumberInRotateArray...

2019-12-04 20:55:17 71

原创 替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if (str == nullptr || length <= 0) { ...

2019-12-03 15:21:40 73

空空如也

空空如也

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

TA关注的人

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