自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大洋深处

爱生活,爱算法,爱coding

  • 博客(335)
  • 资源 (1)
  • 收藏
  • 关注

原创 Leetcode 166. Fraction to Recurring Decimal

好久没做模拟题了,所以找个感觉,教训,写之前一定要理好逻辑。题目:166. Fraction to Recurring DecimalMedium401904FavoriteShareGiven two integers representing the numerator and denominator of a fraction, return the fraction in ...

2019-03-18 18:48:20 146

转载 muduo 日志库学习(二) 对大佬的博客进行一点点补充 代码部分使用最新的代码讲解

转发原博:添加链接描述上一篇文章讲到muduo日志库的基础部分,现在来讲muduo日志库的异步日志工作流程。除了异步,muduo日志库还具有自动把数据从FILE结构体缓冲区flush到硬盘功能和定期roll(回滚)日志文件的功能。异步:异步日志由LogFile{.h, .cc}、AsyncLogging{.h, .cc}中定义的类来配合工作的。主要是有两个类 LogFile 和AsyncL...

2019-03-18 12:34:12 272

转载 muduo 日志库学习(一)

muduo的日志库由LogStream{.h,.cc}、Logging{.h, .cc}、LogFile{.h, .cc}、AsyncLogging{.h, .cc}组成。这里主要说明一下,这些文件(主要是文件里面对应的类)之间是怎么关联,并协同工作的。LogStream类里面有一个Buffer成员(一个模板类,并非muduo::Buffer类)。该类主要负责将要记录的日志内容放到这个Buffe...

2019-03-17 23:42:39 483

原创 Leetcode Weekly Contest 128

做出来三个第一题:Leetcode 1012. Complement of Base 10 Integer题目:Every non-negative integer N has a binary representation. For example, 5 can be represented as “101” in binary, 11 as “1011” in binary, and...

2019-03-17 19:10:56 107

原创 memcpy实现内存重叠的拷贝

上周面试腾讯的时候,面试官问我内存的拷贝,当时答错了,因为没有用过内存拷贝函数。面试官叫我实现内存拷贝函数,同时问我出现了内存重叠怎么办?什么叫内存重叠呢?我画个图比如要拷贝src的4个字节到dest,那么就出现了内存重叠,如果从头开始拷贝,那么dest把src覆盖掉了。自己实现一款memcpy函数就是void* Memcpy1(void* dst,const void* src,int...

2019-03-17 16:18:40 2914

原创 2019/3/16 字节跳动笔试题

有n个人参加编程比赛,比赛结束后每个人都得到一个分数;现在所有人排成一圈(第一个和第n个相邻)领取奖品,要求;1:如果某个人的分数比左右的人高,那么奖品数量也要比左右的人多;2:每个人至少得到有个奖品。问最少应该准备多少奖品。输入描述:第一行是整数n,表示测试样例个数每个测试样例的第一行是一个正整数n,表示参加比赛的人数;(0<n<100000)第二行是n个正整数a[i]...

2019-03-17 02:35:26 1931 3

原创 2019/3/16网易笔试题 约瑟夫环 翻牌 充电桩充电

第一题:n个人围成一圈,第一个人从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。最后剩下的人为胜者。指定n和m,求胜利者编号。输入描述:第一行输入n和m,空格隔开,如10,2其实就是约瑟夫环代码:#include<iostream>#include<cstdio>#include<algorithm>#include<ass...

2019-03-17 02:08:16 685

原创 两个基础题:用栈实现队列和用队列实现栈

Leetcode 232. Implement Queue using Stacks 用队列实现栈Leetcode225. Implement Stack using Queues 用栈实现队列首先我们得知道队列和栈的性质。队列:先进先出。栈:先进后出。所以怎么用栈实现队列呢怎么实现先进先出呢?用一个栈肯定是无法实现的,因为栈只有一个开口,所以可以使用两个栈。一个作为数据存储,一个...

2019-03-14 17:15:33 172

原创 Muduo之Mutex、Condition、CountDownlatch解析及例子讲解

首先看看Mutex的源码namespace muduo{// Use as data member of a class, eg.//// class Foo// {// public:// int size() const;//// private:// mutable MutexLock mutex_;// std::vector<int>...

2019-03-11 17:09:18 569

原创 Muduo之单例模式pthread_once的使用

单例模式下对象只能有且仅有创建一次,所以适合那些只需要创建1次的对象,例如在一个项目下的日志线程对象,会一直伴随着,不会在中途销毁,也不会创建第二个对象。代码:#include<stdlib.h>#include<pthread.h>#include<iostream>#include<string>//#include<boost...

2019-03-11 09:43:36 321

原创 腾讯内推笔试题之_硬币,奇妙的数列,猜拳游戏

第一题:硬币题目:思路:贪心即可,优先使用大面值代码:#include<iostream>#include<cstdio>using namespace std;int main(){ int n,m; while(~scanf("%d %d",&n,&m)) { if(n>=m) return 1; int ans =...

2019-03-10 15:14:08 423

原创 腾讯内推笔试题之_气球颜色

题目:解析:其实维护一个m个大小的数组即可,然后每次进入的时候判断一下是否为一种新的颜色,如果是则总的颜色总数color_sum++,当达到m的时候去的最小坐标和最大坐标,随机更新答案,如果不是新的颜色,就用当前颜色的下标去覆盖即可,有种贪心的思想在里面,时间复杂度O(n*m)代码:#include<cstdio>#include<map>#include&lt...

2019-03-10 14:48:25 666

原创 C++11新特性std::function和std::bind

C++11提供了std::function和std::bind两个工具,用于引用可调用对象。这些可调用对象包括 普通函数,Lambda表达式,类的静态成员函数,非静态成员函数以及仿函数等。引用可调用对象,可以用于回调,抽象,以及延迟调用等多种场景。std::function1:介绍类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的...

2019-03-09 10:21:11 1838

原创 C++11新特性占位符-std::placehoders

std::placeholders这是C++的新特性,在名称空间std::placehoders,定义源码如下:namespace placeholders { extern /* unspecified */ _1; extern /* unspecified */ _2; extern /* unspecified */ _3; // ...}其中_1, _2, _3...

2019-03-09 09:45:10 4010

原创 互斥锁实现生产者消费者队列

在muduo里经常看到生产者消费者模型,所以用互斥锁和条件变量实现了一些。一些tips:如果使用循环的话,生产者和消费者线程个数应该相等,这样才能做到供需平衡。还有对于pthread_cond_wait这个函数的讲解,为什么要传递两个参数进去呢?比较好奇的是为什么传递互斥锁变量上去,因为在调用pthread_cond_wait的时候,会先对互斥锁变量mutex进行解锁,然后当前面的条件变量满足...

2019-03-08 22:45:32 343

原创 前序遍历(或后序遍历)和中序遍历还原二叉树

前序遍历+中序遍历构建二叉树1、前序遍历的第一个元素A,为根结点2、在中序遍历找到A,则在中序遍历中A左边是左子树,右边是右子树3、递归(左右子树同样如此)具体实现/* * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeN...

2019-03-08 20:29:24 422

原创 二叉树的遍历方式及实现

前序遍历若树为空,则空操作返回。否则,先访问根节点,然后前序遍历左子树,再前序遍历右子树。(中 左 右)实现(递归)void preOrder(Node *node){ if(node){ std::cout<<node->value; preOrder(node->left); preOrder(node-&...

2019-03-08 20:14:15 274

原创 linux常见压缩、解压操作(tar,zip,rar,gz,tar.gz)

.tar(是打包操作,不是压缩)解包:tar -xvf FileName.tar打包:tar -cvf FileName.tar DirName———————————————.zip解压:unzip FileName.zip压缩:zip FileName.zip DirName———————————————.rar解压:rar -x FileName.rar压缩:rar -a ...

2019-03-08 19:40:46 8513

原创 递归、回溯、DFS和BFS总结

递归和回溯递归递归是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象。运用递归的条件:1. 子问题须与原始问题为同样的事,且更为简单;2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。回溯回溯也称试探法,它的基本思想是:从问题的某一种状态(初始状态)出发,搜索从这种状态出发所能达到的所有“状态”,当一条路走到“尽头”的时候(不能再前进),再后退一步或若干...

2019-03-08 09:30:39 2881

原创 C++中Volatile关键词简析

**1.volatile作用**定义为volatile的变量是说这变量可能会被意想不到地改变,编译器在优化时,用到这个变量每次都从重新从RAM读取这个变量的值,而不是使用保存在寄存器里的备份。在单任务的环境中,一个函数体内部,如果在两次读取变量的值之间的语句没有对变量的值进行修改,那么编译器就会设法对可执行代码进行优化。由于访问寄存器的速度要快过RAM(从RAM中读取变量的值到寄存器),以...

2019-03-07 22:00:14 194

原创 Leetcode 994. Rotting Oranges

Rotting OrangesIn a given grid, each cell can have one of three values:the value 0 representing an empty cell;the value 1 representing a fresh orange;the value 2 representing a rotten orange.Ev...

2019-02-17 20:41:30 846

原创 Leetcode 993. Cousins in Binary Tree

Leetcode 993. Cousins in Binary TreeIn a binary tree, the root node is at depth 0, and children of each depth k node are at depth k+1.Two nodes of a binary tree are cousins if they have the same dep...

2019-02-17 20:29:13 531

原创 getopt的使用

提取命令行的参数使用getopt系统函数例子:#include<unistd.h>#include<iostream>#include<getopt.h>#include<stdlib.h>#include<string>using namespace std;int main(int argc,char *argv[]...

2019-02-16 19:29:44 277

原创 muduo中boost.Asio的聊天服务器解析

muduo的这个聊天服务器达到的基本要求为:聊天服务本文实现的聊天服务非常简单,由服务端程序和客户端程序组成,协议如下:(1)服务端程序中某个端口侦听 (listen) 新的连接;(2) 客户端向服务端发起连接;(3)连接建立之后,客户端随时准备接收服务端的消息并在屏幕上显示出来;(4)客户端接受键盘输入,以回车为界,把消息发送给服务端;(5)服务端接收到消息之后,依次发送给每个连接...

2018-12-19 15:14:59 356

原创 11月29日 剑指offer 平衡二叉树 && Leetcode

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解析:首先得明白平衡二叉树的定义,就是左右子树高度差的绝对值不超过1。所以用递归可以解决,对二叉树进行左右遍历,然后得到左右子树的高度,判断绝对值的值是否大于1,然后一个节点的高度取决于return max(left_depth, right_depth);代码:int tryTree(TreeNode* curNode, int ...

2018-12-02 21:24:31 773

原创 11月28日 剑指offer 二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解析:二叉树的遍历 想法是递归分第三种情况1)当遇到空节点的时候 则更新max_depth的值2)递归遍历左节点3)递归遍历右节点注意事项 max_depth 记得传引用或者使用全局变量代码:/*struct TreeNode { int val; ...

2018-11-28 21:36:44 109

原创 11月27日 剑指offer 数字在排序数组中出现的次数 && Leetcode Valid Parentheses

题目描述统计一个数字在排序数组中出现的次数。解析:其实就是实现下lower_bound 和 upper_bound 。我们只要找到第一个出现的k然后找到最后一个出现的k即可。我们拿找到第一个k举例子。因为是有序的,所以肯定使用二分。那么首先得到mid值。然后分三种情况1)如果data[mid] == k ,那么里面分2种情况,(1)如果(mid>0&&da...

2018-11-27 23:10:09 238

原创 11月26日 每日一题 leetcode 8. String to Integer (atoi) && 剑指offer 两个链表的第一个公共结点

String to Integer (atoi) 题目:Implement atoi which converts a string to an integer.The function first discards as many whitespace characters as necessary until the first non-whitespace character is fo...

2018-11-26 21:03:22 148

原创 for_each一探

最近在看到for_each的时候我就挺好奇的,这个东西到底怎么实现的,然后我就配合仿函数实现了一个小例子。#include "stdafx.h"#include<iostream>#include<vector>#include<stack>#include<map>#include<memory>#include<c..

2018-11-05 10:42:07 1377

原创 设计模式之策略模式

窝在看<stl源码剖析>的时候,看到了策略模式,我觉得挺有意思的,策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。在这里我设计了两个具体的动作,一个是唱歌,一个是跳舞。 然后将其的动作函数**Sing()和Dance()**设置成纯虚函数。然后具体的动作分别去继承他们class WithSing :public RobotSi...

2018-09-25 21:59:41 474

原创 剑指offer 把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解析:此题的精髓在与那个排序函数,可以得到较小的组合,最后从前往后加就是答案。代码:/*这个题目思路:可以将这个数组的元素看成每个字符串,然后对其进行排序,从小到大,所以最重要的是排序规则,所以排序规则为A ...

2018-09-21 13:05:11 169

原创 二叉搜索树的相关操作

二叉搜索树是一些AVL,RB-tree等的基础,所以了解二叉搜索树的基本操作很重要。定义:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。这里给出自己画的一个二叉树,不知道有啥好的画图软件首先我们得知道如何验证是否是一颗标准的二叉树,中序遍历,中序遍历的二叉搜索树肯定死有序的...

2018-09-19 20:14:49 194

转载 Linux写时拷贝技术(copy-on-write)

转载自 这位博主 不经意间看到这篇帖子,想起实习面试的时候再讨论fork时,谈到了这个问题。做一个记录吧。原帖见:Linux写时拷贝技术(copy-on-write) COW技术初窥在linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制”技术,也就是只有进程空间的各段的内容要发生变化时,才将父进...

2018-09-16 15:55:56 226

原创 剑指offer&&Leetcode 动态规划专题

1:连续子数组的最大和题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个...

2018-09-13 22:45:43 237

原创 剑指offer&&Leetcode 数据结构专题

最小的K个数题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。法1:每次选一个最小的数,然后和前面的交换,那么时间复杂度就是O(K*N)代码:class Solution {public: vector<int> GetLeastNumbers_Solution(vector&...

2018-09-12 21:34:56 489

原创 剑指offer 字符串的排列

题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解析:这是一个字符串的全排列,所以使用回溯法解决。代码:#include "stdafx.h"#includ...

2018-09-11 22:24:10 198

原创 Linux中netstat和ps命令的使用

Linux查看端口号占用命令netstat -pan | grep 12345通过进程ID查找程序 ps -aux | grep 12345

2018-09-08 16:16:06 1368

原创 美团面试题 区间统计

文巨做的,思路很好解析:这道题可以直接枚举区间,然后从一个区间[L,R]到[L+1,R+1]的时候,把a[L]的个数剪1,a[r+1]的个数加1,如果sum[a[L]]变为t-1,那么说明a[L]是那个满足区间内大于等于t的,所以总数-1,如果新加入的a[R+1]的sum等于t,说明是新加入的,那么总数+1。代码:#include<cstdio>#include&...

2018-09-07 10:41:49 294

原创 条款28:避免返回handles指向对象内部成分

首先通过一份代码分析:#include<iostream>#include<vector>#include<algorithm>#include<memory>using namespace std;#define MAX_SIZE 40000class Point{public: Point(int xx,int y...

2018-09-04 16:17:14 143

原创 拼多多笔试题 找字典序最小的不同的字符串

解析看代码注释:#include<iostream>#include<algorithm>#include<vector>#include<unordered_set>#include<string>using namespace std;bool permutation(vector<string>&...

2018-08-31 16:23:39 1060

邮件收发系统

是基于web的邮件收发系统

2016-04-04

空空如也

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

TA关注的人

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