自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(140)
  • 资源 (1)
  • 收藏
  • 关注

原创 VS2015下如何配置修改并调试opencv源代码

1、配置opencv工程项目主要是介绍如何通过vs2015编译opencv2.4.9源代码,具体步骤可以参考浅墨大神的blog链接如下:OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译浅墨博客里用到的Cmake版本是2.8太低了,推荐下载3.4以上的。我之前就是下载的2.8版本导致我一直闹心因为2.8版本里根本没法在VS2015里配置,导致我一度以为我哪里错了,后来换了cmake3.15.5的版本立马就解决问题了把链接给出来有需要的自己去下载:

2020-05-13 20:24:21 877 2

原创 最长重复子串

牛客链接https://www.nowcoder.com/practice/4fe306a84f084c249e4afad5edf889cc?tpId=117&&tqId=36041&rp=1&ru=/ta/job-code-high&qru=/ta/job-code-high/question-rankingclass Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的

2021-06-27 21:07:57 157

原创 二叉树节点间的最大距离问题(笔试题)

这里写自定义目录标题二叉树节点间的最大距离问题思路二叉树节点间的最大距离问题思路求二叉树两节点间的最大距离(可能过根节点,也可能不过)1.有可能跨越了根节点 连接了左右子树,所以最大值为左右子树高度加12.有可能最大距离就在左子树内部 ,没有跨越根节点3.有可能最大距离就在右子树内部 ,没有跨越根节点链接:https://www.nowcoder.com/questionTerminal/88331be6da0d40749b068586dc0a2a8b?orderByHotValue=1&a

2021-06-27 20:27:03 201

原创 C++算法笔试ACM模式 常见输入输出练习

OJ在线编程常见输入输出练习场https://ac.nowcoder.com/acm/contest/view-submission?submissionId=48001549要面试的的小伙伴可以去这个品台联系下 ,提前适应下,不然会发蒙.

2021-06-18 10:26:29 1236

原创 共享内存和内存映射的区别

1.共享内存可以直接创建,内存映射需要磁盘文件(匿名映射除外)2.共享内存效果更高3.内存所有的进程操作的是同一块共享内存。内存映射,每个进程在自己的虚拟地址空间中有一个独立的内存。4.数据安全- 进程突然退出共享内存还存在内存映射区消失- 运行进程的电脑死机,宕机了数据存在在共享内存中,没有了内存映射区的数据 ,由于磁盘文件中的数据还在,所以内存映射区的数据还存在。5.生命周期- 内存映射区:进程退出,内存映射区销毁- 共享内存:进程退出,共享内存还在,标记删除(所有的关联的进

2021-05-29 09:36:48 3294

原创 使用内存映射实现文件拷贝的功能

思路1.对原始文件进行内存映射2 创建一个新文件3 把新文件的数据映射到内存中4 通过内存拷贝将第一个文件的内存数据拷贝到新的文件内存中5 释放资源#include<stdio.h>#include<sys/mman.h>#include<fcntl.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<wait.h>int

2021-05-28 13:40:38 424

原创 C++面试之手撕LRU

题目运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value)如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前

2021-05-09 23:50:40 311

原创 手写c++shared_ptr

思路shared_ptr将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数为减至0,则删除对象),并增加右操作数所指对象的引用计数;调用析构函数时,构造函数减少引用计数(如果引用计数减至0,则自动删除所指向的堆内存)。template<class T>

2021-05-09 21:50:27 350 2

原创 字节跳动高频题——排序奇升偶降链表

字节跳动高频题——排序奇升偶降链表面经描述链表,奇数位置按序增长,偶数位置按序递减,如何能实现链表从小到大?(2020.10 字节跳动-后端)[2]奇偶生序倒序链表的重新排序组合,例如:18365472(2020.08 字节跳动-后端)[3]1->4->3->2->5 给定一个链表奇数部分递增,偶数部分递减,要求在O(n)时间复杂度内将链表变成递增,5分钟左右(2020.07 字节跳动-测试开发)[4]奇数位升序偶数位降序的链表要求时间O(n)空间O(1)的排序?(2020

2021-03-29 19:45:29 441

原创 将单向链表按某值划分成左边小、中间相等、右边大的形式

步骤1.遍历数组得到长度2 生成长度为N的链表数组,遍历链表将节点放入数组内3 针对链表数组进行快排partition4将调整过的链表数组再维护成一个链表即可#include"stdafx.h"#include<iostream>#include<vector>using namespace std;struct ListNode{ int val; ListNode*next; ListNode(int x) :val(x), next(NULL) {

2021-03-24 09:28:58 158

原创 打印两个链表的公共部分

#include"stdafx.h"#include<iostream>#include<vector>using namespace std;struct ListNode{ int val; ListNode*next; ListNode(int x) :val(x), next(NULL) {}};vector<int>printCommon(ListNode*l1, ListNode*l2){ vector<int>re.

2021-03-23 15:27:26 169

原创 反转双向链表 c++

和反转单向链表思路一样就是多反转一个方向代码#include<iostream>#include<vector>using namespace std;struct ListNode{ int val; ListNode*next; ListNode*last; ListNode(intx):val(x), next(NULL),last(NULL){}}void doublePerverse(LisNode*head){ ListNode*left

2021-03-23 15:00:25 584

原创 选择排序、冒泡排序、插入如排序、归并排序、C++代码

选择排序void selectsort(vector<int>&arr){ if (arr.size() < 2) return; for (int i = 0; i < arr.size() - 1; i++) { int MIN = i; for (int j = i + 1; j < arr.size(); j++) { MIN = arr[MIN] < arr[j] ? MIN : j; } swap(arr[MIN],

2021-03-23 10:13:01 80

原创 C++ 11新特性

1.Variadic TemplatesC++11的新特性–可变模板参数是c++新增的特性之一,它对参数实现了高度泛化,能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。变体现在两个方面:(1)参数个数:利用参数个数逐一递减的特性,实现递归调用;(2)参数类型:参数个数逐一递减导致参数类型也逐一递减;两个注意点(1)递归调用(2)递归终止:使用重载的办法终止递归调用;int maximun(int n){

2021-01-23 20:04:48 153

原创 文件操作

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

2021-01-20 15:59:24 80

原创 多态相关

4.7 多态4.7.1 多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址```C++class Animal{public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不

2021-01-20 15:32:21 96 1

原创 继承

4.6 继承继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码总结:继承的好处:可以减少重复的代码class A : public B;A 类称为子类 或 派生类B 类称为父类 或 基类派生类中的成员,包含两大部分:一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。4.6.2 继承方式继

2021-01-20 13:46:15 146

原创 STL之自己实现简单地空间配置器allocater

阅读《STL源码分析》第二章 仿照书上2.1.1节编写了一个自己的简易空间配置器1 储备知识size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_tptrdiff_t是signed类型,用于存放同一数组中两个指针之间的差距,它可以使负数,std::ptrdiff_t.size_type是unsigned类型,表示容器中元素长度或者下标,vector::size_type i = 0;difference_type是signed类型,表示迭代器差距,vec

2020-11-02 11:15:05 277

转载 c++ new 的几个用法

1.在 c++ 里 new 有三个用法。1) new xxx, 2) operator new( int size ), 3) placement new.2.最常用的是 new xxx 例如 pstr = new string(“xxx”); 这种会调用 string 的构造函数,并需要通过 delete pstr 来析构。 void* w = operator new(100); operator delete(w);1.void* operator new( size_t siz

2020-11-02 08:47:24 4098 1

转载 C++中explicit的作用及用法

仅含一个参数的构造函数和除了第一个参数外其余参数都有默认值的多参构造函数承担了两个角色。是个构造函数;2 .是个默认且隐含的类型转换操作符。explicit是个C++关键字,其作用是指定仅有一个参数或除第一个参数外其它参数均有默认值的类构造函数不能作为类型转化操作符被隐含的使用,防止该类的对象直接被对应内置类型隐式转化后赋值,从而规定这个构造函数必须被明确调用。我们通过例子来直观的说明#include <iostream>using namespace std; class A

2020-10-27 16:53:58 1113

原创 Linux 网络编程 学习01

1 分组交换通过标有分组进行路由选择·传送数据,使通信信道仅在传送期间被占用的一种交换方式。分组组成: 每个分组都有首部和数据段组成。下图是早期通过电路交换的建立电路连接的网络,假设左右两端是电话,那么一旦连接确立,就不能中途退出,直到通话结束信道才被释放,这样的连接和使用效率是很低下的,所以才有了分组交换,信道仅在传送的时期被占用其余时间他是自由的。报文又分为首部和数据,我个人是这么理解的:假设你要传输的是一整本书的内容,现在要把他拆分成很多段运行,那么接收端会受到很多小段的数据,如果他不知道

2020-08-11 10:08:30 200

转载 LeetCode 547. 朋友圈

547. 朋友圈班上有 N 名学生。其中有些人是朋友,有些则不是。他们的友谊具有是传递性。如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。所谓的朋友圈,是指所有朋友的集合。给定一个 N * N 的矩阵 M,表示班级中学生之间的朋友关系。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。你必须输出所有学生中的已知的朋友圈总数。示例 1:输入:[[1,1,0],[1,1,0],[0,0,1]]输出: 2说明:已知学

2020-08-04 16:39:08 315

原创 LeetCode 25. K 个一组翻转链表

25. K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的

2020-07-29 23:20:31 104

原创 LeetCode 92 反转链表2

反转链表2反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL思路·class Solution {public: ListNode* reverseBetween(ListNode* head, int m, int n) { List

2020-07-29 13:04:26 89

原创 LeetCode 875.爱吃香蕉的珂珂

爱吃香蕉的珂珂珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉的最小速度 K(K 为整数)。示例 1:输入: piles = [3,6,7,11], H =

2020-07-19 11:06:19 572

原创 LeetCode 11 盛水最多的容器

盛水最多的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。分析一开始想到的是用另个for循环遍历,奈何超时,后来看了题解采用双指针法,值得注意的是思考双指针一个放在队首,一个放在队尾,他们应该怎么移动,是同时向中间移动,还是按照什么规律,这是这道题的难点

2020-07-18 09:55:02 130

原创 设计RandomPool结构

设计RandomPool结构【题目】 设计一种结构, 在该结构中有如下三个功能:insert(key): 将某个key加入到该结构, 做到不重复加入。delete(key): 将原本在结构中的某个key移除。 getRandom():等概率随机返回结构中的任何一个key。【要求】 Insert、 delete和getRandom方法的时间复杂度都是O(1)// 设计RandomPool结构.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include&lt

2020-07-17 17:14:39 130

原创 LeetCode 447.回旋镖的数量

回旋镖的数量给定平面上 n 对不同的点,“回旋镖” 是由点表示的元组 (i, j, k) ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。找到所有回旋镖的数量。你可以假设 n 最大为 500,所有点的坐标在闭区间 [-10000, 10000] 中。示例:输入:[[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],[2,0],[0,0]]分析1.对于一个点我们设为i,倘若

2020-07-16 10:03:20 170

原创 LeetCode 104. 二叉树的最大深度 C++三种解法

104. 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。方法一 深度优先遍历 递归这个方法看一眼就懂了 不讲了class Solution {public: int maxDepth(TreeNode* root)

2020-06-14 13:34:15 709

原创 LeetCode 146 LRU缓存机制 C++版本

LRU缓存机制运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果关键字 (key) 存在于缓存中,则获取关键字的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字/值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为新的数据值留出空间。进阶:你是

2020-06-13 12:44:02 142

原创 LeetCode 109 有序链表转换二叉搜索树 C++

109 有序链表转换二叉搜索树给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / \-3 9/ /-10 5方法一首先要了解什么是高度平衡二叉搜索树题目已经告诉了一个高度平衡二叉树是

2020-06-10 12:47:44 265

原创 LeetCode 380. 常数时间插入、删除和获取随机元素

380. 常数时间插入、删除和获取随机元素设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。示例 :// 初始化一个空的集合。RandomizedSet randomSet = new RandomizedSet();// 向集合中插入 1 。返回 true 表示

2020-06-06 13:08:42 218

原创 LeetCode 394.字符串解码

394 字符串解码给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = “3[a]2[bc]”, 返回 “aaabcbc”.s = “3[

2020-06-04 14:13:48 199

原创 LeetCode 75. 颜色分类

75. 颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想出一个仅使用常

2020-06-02 11:32:35 151

原创 LeetCode 66. 加一

66 .加一给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/plus

2020-06-01 11:12:43 184

原创 opencv 32位申请内存不足突破2G方法

首先给出我的配置吧,win10 64位 + vs2015 + opencv2.4.9,这个问题的产生只与系统有关,1.X86程序与X64程序的区别X86程序的内存使用限制在Windows32位操作系统中,每个进程所能使用的最大空间(包含操作系统使用的内核模式地址空间)为4G,在通常情况下,操作系统会分配2GB内存给进程使用,另外2G内存,另外2G内存为操作系统保留。何谓大内存所谓“大内存”,就是指允许X86进程允许使用超过2G的内存空间。这里的内存空间不光是进程动态申请的,还包括操作系统自动为进程

2020-05-27 00:19:23 655

原创 opencv+SIFT+RANSAC+简单的图像拼接

OpenCV2.4.9+X64+VS2015测试通过需要的小伙伴配置好环境就可以用了,只是个最简单功能,初学者可以试试。#include <stdio.h> #include <opencv2/nonfree/features2d.hpp> #include <opencv2/imgproc/imgproc.hpp>#include <opencv2/nonfree/nonfree.hpp> #include <opencv2/open

2020-05-26 21:20:19 1674

转载 SIFT特征点的匹配正确率衡量标准与量化

原文链接:https://blog.csdn.net/cgwang_1580/article/details/68944319另外还有一篇文章写的也不错:http://bookshadow.com/weblog/2014/06/10/precision-recall-f-measure/目前图像匹配中,局部特征匹配占据了绝大部分,常用的局部特征匹配方法有Harris、SIFT、SURF、ORB等等,不同的特征点检测和匹配方法尤其独特的优势和不足;特征点匹配经过Ransac算法优化后仍存在错误匹配点对,

2020-05-19 18:10:04 7899 1

原创 将RGB图像转为YCbCr,并显各通道图片

转换公式按照如下转换公式利用opencv编写代码。运行环境win10+opencv2.4.9+VS2015#include "stdafx.h"#include<opencv2/opencv.hpp>#include<iostream>#include<math.h>#include<math.h>#include<complex>using namespace std;using namespace cv;Mat BGR

2020-05-12 10:34:01 3861 2

转载 图像学习-HOG特征

特征描述子(Feature Descriptor)特征描述子就是图像的表示,抽取了有用的信息丢掉了不相关的信息。通常特征描述子会把一个wh3(宽高3,3个channel)的图像转换成一个长度为n的向量/矩阵。比如一副641283的图像,经过转换后输出的图像向量长度可以是3780。什么样子的特征是有用的呢?假设我们想要预测一张图片里面衣服上面的扣子,扣子通常是圆的,而且上面有几个洞,那你就可以用边缘检测(edge detector),把图片变成只有边缘的图像,然后就可以很容易的分辨了,那么对于这张图边缘信

2020-05-11 11:29:06 640 1

职工管理系统.rar

基于VS2015 编写的基于多态的职工管理系统,适合新手巩固自己的基础知识。 本案例设计到的知识点为:面向对象中的封装、继承、多态以及文件IO流,在设计中有Worker职工的基类,以及分别派生类为普通员工、经理、以及总裁,基类中有纯虚函数子类分别作了实现。然后有个文件管理类,对用户做出不同的选择分别做不同的处理。可以对系统进行基本的增删改查功能。

2020-03-10

空空如也

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

TA关注的人

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