自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 C++后台开发面试总结(摘抄自牛客网)

C和C++语言基础extern关键字作用extern声明变量在在外部定义?extern修饰函数?extern C的作用?用法?static关键字作用static修饰局部变量?static全局变量?(限定变量在一个编译单元内,一个编译单元就是指一个cpp和它包含的头文件,这个回答可以结合编译需要经历的几个过程来答)st...

2019-08-21 11:03:00 293

转载 C++ 实现康拓展开(leetcode 60)

定义:康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的名次,因此是可逆的。原理介绍 X = A[0] * (n-1)! + A[1] * (n-2)! + … + A[n-1] * 0!A[i]指的是位于位置i后面的数小于A[i]值的个数,后面乘的就是后面还有多少个数的阶乘...

2019-07-23 20:18:00 402

转载 C++中基类的析构函数不是虚函数,会带来什么问题!!

如下例:#include <iostream>using namespace std;class Father{public: Father(){cout<<"contructor Father!"<<endl;}; ~Father(){cout<<"destructor Father!"&l...

2019-07-09 00:04:00 2104

转载 【C++】指针参数是如何传递内存的

参数策略如果函数的参数是一个指针,不要指望用该指针去动态申请内存。如下:void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void){ char *str = NULL; GetMemory(str, 100)...

2019-07-06 11:14:00 180

转载 floyd算法(C++解决leetcode 399)

原理:最短路径问题:推导公式题目:给出方程式A / B = k, 其中A 和B 均为代表字符串的变量,k 是一个浮点型数字。根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回-1.0。示例 :给定a / b = 2.0, b / c = 3.0问题: a / c = ?, b / a = ?, a / e = ?, a / a = ?, x...

2019-06-19 20:13:00 604

转载 C++使用socket实现进程通信

网络编程:我们都应该知道服务端和客户端C/S模式,下面我们遵循一个网络编程的规律:服务端:socket ——> bind ——> listen ——> accept客户端:socket ——> listen下面就是代码部分,遵循了上面的规律,大家不懂的函数可以百度查看含义服务端代码:// server.cpp : 此文件包含 "main" ...

2019-06-12 20:51:00 792

转载 C++智能指针

1.智能指针的作用C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存。理解智能指针需要从下面...

2019-06-11 18:56:00 103

转载 C++中lambda函数

转载自:https://www.cnblogs.com/DswCnblog/p/5629165.htmlC++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,“Lambda表达式”或“匿名函数”这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如C#,Python等。今...

2019-05-27 22:33:00 616

转载 负载均衡—几种常见算法

什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。第一...

2019-05-22 16:53:00 438

转载 名字服务

名字服务就是服务间“你寻我,我寻你”的爱情游戏,因为它总是为彼此找到最佳"伴侣",不是么?在之前的文章中多次提到名字服务这个概念,也很多人在问这是个什么东西?为什么我老是提起它?首先因为太重要了,直接决定着运维自动化平台的水平、简单与复杂;其次我做这么多年运维,对名字服务有着很深的情节(可能觉得它很酷),终于这次在自己负责的业务里面落地,也有了实践的经验,避免来虚的;最后,它能...

2019-05-22 09:44:00 1269

转载 C++中普通函数,虚函数,纯虚函数的区别

1.虚函数(impure virtual)  C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。  子类可以重写父类的虚函数实现子类的特殊化。  如下就是一个父类中的虚函数:class A{public: virtual void out2(string s) { cout&lt...

2019-05-20 17:13:00 364

转载 C++中的unique_lock函数及其参数案例详解

#include <iostream>using namespace std;#include <list>#include <thread>#include <mutex>class A{public: std::unique_lock<std::mutex> rtn_unique_lo...

2019-05-17 12:27:00 699

转载 C++的函数适配器

函数适配器分为四大类:绑定适配器,组合适配器,指针函数适配器,成员函数适配器。下例中包含了常用的四个:  bind1st(op, value); 绑定到二元函数对象的第一个参数  bind2nd(op, value);绑定到二元函数对象的第二个参数  not1(op); 翻转一元预定义函数对象的真值  not2(op);翻转二元预定义函数对象的真值#i...

2019-05-11 11:05:00 292

转载 C++ STL中map的四种插入形式

#include <iostream>using namespace std;#include "map"#include "string"void testInsert(map<int, string> &m){ //first insert method m.insert(pair<int, string&...

2019-05-09 15:46:00 496

转载 C++指针和引用的区别(面试关键题目)

C++中引用和指针的区别?参考答案:(1)当引用被创建时,它必须被初始化。而指针则可以在任何时候被初始化。(2)一旦一个引用被初始化为指向一个对象,它就不能被改变为对另一个对象的引用。而指针则可以在任何时候指向另一个对象。(3)不可能有NULL引用。必须确保引用是和一块合法的存储单元关联。进一步解析:指针和引用都是C++中的...

2019-05-08 09:52:00 586

转载 利用案例简要阐述C++的强制类型转换

C语言的风格: type b = (type) a;C++语言风格:type b = 转换形式 <type> (a);四种形式的介绍:static_cast 静态类型转化(让C++编译器在编译时进行类型检查)reinterpreter_cast重新解释类型dynamic_cast命名上理解是动态类型转换,如子类和父类之间的多态类型转换const_c...

2019-05-04 16:05:00 136

转载 C++模板函数中的友元函数的使用

友元函数注意点: 声明的位置和public,private没有关系; 函数modifyA()函数是类A的好朋友:friend void modifyA(A *pA, int _a); 在类的外部重写函数,定义函数的内容;我们在下面的例子中将重写复数的加法和输出(其中涉及到运算符重载):运算符重载的正规写法:运算符重载的正规写法:重载<< >...

2019-04-28 20:04:00 403

转载 C/C++函数指针详解

一 函数指针介绍函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下:intadd(intnLeft,intnRight);//函数定义该函数类型为int(int,int),要想声明一个指向该类函数的指针,只需用指针替换函数名即可:int(*pf)(int,int);//未初始化则pf可指向i...

2019-04-25 09:45:00 290

转载 C++中int和long的区别(leetcode 377 C++)

首先需要明白以下区别,我们才能更好地用C++做对leetcode 中的377题目。int和long区别如下:占内存长度不同和取值范围不同。32位系统:long是4字节32位,int是4字节32位。64位系统:long是8字节64位,int是4字节32位。注意事项:1、long类型的范围是:-9223372036854775808~92233720368547758...

2019-04-22 10:13:00 5499

转载 C++操作符重载

例子一:重写二元操作符+(复数对象的+操作符与普通整型变量的+操作不一样,所以需要重写+)实现代码一:通过友元函数来实现//在vc 6.0中有可能不能通过,换个编译器就好了 #include <iostream>using namespace std;class Complex //复数{ friend Complex &opera...

2019-04-19 12:45:00 160

转载 C++编译器对普通成员函数的内部处理

C++类对象中的成员变量和对象是分区存储的:成员变量:  普通成员变量:存储于对象中,与struct变量有相同的内存布局和字节对齐方式。  静态成员变量:存储于全局数据区成员函数:存储与代码段以下代码是C++编译器对其代码的处理:首先定义一个类,其次声明一个对象,并使用其成员函数和静态函数#include <iostream>using n...

2019-04-18 11:03:00 206

转载 C++中构造函数和析构函数的调用顺序

情况一:类B继承类A结论一:定义变量时:先调用父类的构造函数,再调用派生类的构造函数;变量销毁时:先调用派生类的析构函数,再调用父类的析构函数。#include <iostream>using namespace std;class A{public: A() { cout<< "AAAAAAAAAAAA"...

2019-04-17 21:05:00 462

转载 C++中深浅拷贝问题(构造函数)

构造函数主要分为:默认构造函数和有参构造函数;构造函数又分为:普通的构造函数和copy构造函数(需传入自身的对象)利用自己定义的构造函数解决浅拷贝所带来的潜在的析构过程中的bug。改程序中主要是利用重写copy构造函数,通过给对象在自由存储区(堆)重新分配自己的存储空间,来实现深copy,从而避免上述所提到的潜在bug。#include <iostream&g...

2019-04-17 15:45:00 141

转载 C++中的引用&详解

概念 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。使用方法引用的声明方法:类型标识符 &引用名=目标变量名;与指针的区别引用是C++对C语言的一个重要的扩展,与指针类似,但仍有一些不同点,主要分为以下几点:从内存上讲,系统为指针分配内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间(内容空间不是其自身空...

2019-04-10 19:35:00 282

转载 BFS广度优先搜索算法(leetcode 322 python)

题目给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。示例1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3...

2019-01-09 10:22:00 293

转载 数学题(leetcode 319 python)

题目初始时有n个灯泡关闭。 第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。第i轮,每i个灯泡切换一次开关。 对于第n轮,你只切换最后一个灯泡的开关。 找出n轮后有多少个亮着的灯泡。示例:输入: 3输出: 1 解释: 初始时, 灯泡状态 [关闭, 关闭, 关...

2019-01-07 16:24:00 255

转载 集合的优势(leetcode 318 python)

给定一个字符串数组words,找到length(word[i]) * length(word[j])的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。示例1:输入: ["abcw","baz","foo","bar","xtfn","abcdef"]输出: 16 解释: 这两个单词为 "abcw", "x...

2019-01-04 10:07:00 216

转载 超级丑数(leetcode 313 python)

编写一段程序来查找第n个超级丑数。超级丑数是指其所有质因数都是长度为k的质数列表primes中的正整数。示例:输入: n = 12, primes = [2,7,13,19]输出: 32 解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32]...

2019-01-03 10:43:00 317

转载 拓扑排序应用(leetcode 310 python)

最小高度树对于一个具有树特征的无向图,我们可选择任何一个节点作为根。图因此可以成为树,在所有可能的树中,具有最小高度的树被称为最小高度树。给出这样的一个图,写出一个函数找到所有的最小高度树并返回他们的根节点。格式该图包含n个节点,标记为0到n - 1。给定数字n和一个无向边edges列表(每一个边都是一对标签)。你可以假设没有重复的边会出现在edges...

2019-01-02 11:11:00 142

转载 分段树算法 (leetcode 307 python)

题目:给定一个整数数组 nums,求出数组从索引i到j(i≤j) 范围内元素的总和,包含i, j两点。update(i, val)函数可以通过将下标为i的数值更新为val,从而对数列进行修改。示例:Given nums = [1, 3, 5]sumRange(0, 2) -> 9update(1, 2)sumRange...

2018-12-26 11:08:00 362

转载 回溯算法(leetcode 306 python)

回溯算法:回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回...

2018-12-24 10:19:00 312

转载 原地算法 in-place(leetcode 289 python)

原地算法:在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转换资料的算法。当算法执行时,输入的资料通常会被要输出的部份覆盖掉。不是原地算法有时候称为非原地(not-in-place)或不得其所(out-of-place)。题目:生命游戏,简称为生命,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。给定一个包含...

2018-12-20 10:00:00 560

转载 双指针slow,fast(leetcode 287 python)

快慢指针的应用(1)判断单链表是否存在环(2)在有序链表中寻找中位数( 3 ) 输出链表中的倒数第K个节点(即正数第K-1个节点)( 4 ) 判断链表是否存在环,如果存在,找到环入口: 前三种比较容易理解,第四种找到环的入口(默认存在环),如果链表存在环,如果找到环的入口点?当fast若与slow相遇时,slow肯定没有走遍历完链表或者恰好遍...

2018-12-19 11:23:00 188

转载 迭代器(python)(leetcode 284 python)

概述:迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。延迟计算或惰性求值 (Lazy evaluation)  迭代器不要求你事先准备好整个迭代过程中所有的元素。仅仅是在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。可迭...

2018-12-19 10:15:00 231

转载 四平方数和定理(leetcode 279 python)

四平方数定理:(theorem on the sum of foursquares)亦称拉格朗日四平方数和定理。四平方数和问题是著名的数论问题.由拉格朗日(La-grange, J.-L.)最终解决,从而有上面的定理名字.该定理断言:每个正整数均可表为四个整数的平方和(其中有些整数可以为零)。推论:满足四数平方和定理的数n(四个整数的情况),必定满足 n=(4^ a) * (8b+7...

2018-12-18 10:36:00 1160

转载 分治算法 (leetcode 241 python)

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含+,-以及*。示例1:输入: "2-1...

2018-12-14 10:12:00 274

转载 LCA(最近公共祖先)(leetcode 236 python C++)

LCA(Lowest Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先。# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# ...

2018-12-12 11:14:00 219

转载 多数投票算法(附加leetcode 229 解题答案)

多数投票算法(Boyer-Moore Algorithm)详解问题描述给定一个无序数组,有n个元素,找出其中的一个多数元素,多数元素出现的次数大于⌊ n/2 ⌋,注意数组中也可能不存在多数元素。一般解法先对数组排序,然后取中间位置的元素,再对数据扫描一趟来判断此元素是否为多数元素。时间复杂度O(nlog(n)),空间复杂度O(1)。使用一个hash表,对数组进行一趟扫描统计每个元...

2018-12-11 10:28:00 316

转载 拓扑排序(附加leetcode 207 python解题答案)

拓扑排序,顾名思义,就是一种排序方法。这是一种什么排序?这种排序的作用?然后怎么去实现这种排序算法?现在就让我们仔细研究下。1、什么是拓扑排序,也就是拓扑排序的概念实际上,拓扑排序是一种图论算法,该算法在《数据结构与算法》一书中有涉猎。引用维基百科的定义:在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topologic...

2018-12-03 11:01:00 429

转载 Python heapq模块

这个模块(build-in)实现了一个堆的数据结构,完美的解决了Top-K问题,以后解决Top-K问题的时候,直接把这个模块拿来用就可以了注意,默认的heap是一个小顶堆!heapq模块提供了如下几个函数:heapq.heappush(heap, item) 把item添加到heap中(heap是一个列表)heapq.heappop(heap) 把堆顶元素弹出,返回的就是...

2018-10-17 19:33:00 132

空空如也

空空如也

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

TA关注的人

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