自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小鲨鱼的博客

IT小白成长记

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

原创 TinyHttp项目之网络基础知识(一)

1.socket函数,为了执行网络I/O,一个进程必须做的第一件事情就是调用socket函数,制定期望的通信协议类型#include<sys/socket.h>int socket(int family, int type, int protocol); /* 返回:若成功则为非负描述符,若出错则为-1 */family参数 : 指明协议族(AF_INET--Ipv4协...

2018-08-08 17:21:53 558

原创 KMP算法——LeetCode 28 Implement strStr()

Implement strStr().Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.Example 1:Input: haystack = "hello", needle = "ll"Output: 2Example...

2018-07-20 21:49:38 185

原创 剑指offer——滑动窗口中的最大值

题目描述:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入的数组为{2,3,4,2,6,2,5,1}即滑动窗口的大小为3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,5}数组中的滑动窗口滑动窗口中的最大值[2,3,4],2,6,2,5,142,[3,4,2],6,2,5,142,3,[4,2,6],2,5,162,3,4,[2,6,2],5,162,3,...

2018-03-22 19:59:28 254

原创 美团点评2016研发工程师编程题(二)题解

1.请设计一个算法,给一个字符串进行二进制编码,使得编码后字符串的长度最短。输入描述:每组数据一行,为待编码的字符串。保证字符串长度小于等于1000。输出描述:一行输出最短的编码后长度。示例1输入MT-TECH-TEAM输出33解析:哈夫曼编码。先统计各字符次数,按照从小到大排序。初始化每个字符编码长度为0,然后每次找到次数最少的两个结点,合并为一个结点,新结点的次数为两个结点的和,直到最后只剩下...

2018-03-19 22:12:20 369

转载 IP地址与MAC地址的渊源

作者:向往美链接:https://www.zhihu.com/question/21546408/answer/53576595来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。举例说明: 我们知道,出于历史的原因,世界上出现了很多的国家和民族,他们都使用不同的语言。 比如,要和法国人通信就要学会法语,和日本人通信就要学会日语,同理,要学会德语、意大利语、...

2018-03-18 21:22:59 1400

原创 美团点评2016研发工程师在线笔试题题解二

1.最大差值有一个长为n的数组A,求满足0<=a<=b<n的A[b]-A[a]的最大差值。思路(用贪心可以O(n)时间复杂度):首先设置差值dis=0,最小数组元素min=A[0],从下标为1的元素开始遍历,若A[i]-min>dis,则更新dis,若A[i]<min,则更新min为A[i];因为以后若有一数组元素A[k]-A[i]>dis,那么一定有A[k]-...

2018-03-11 21:04:12 665

原创 美团点评2016研发工程师在线笔试题解一

总共六道编程题,先从第5题写吧,因为比较有成就感,原题是在牛客网做的,刚开始不会做,不过看了讨论区的讨论,看不懂怎么做的,有用动态规划的,有用二进制的,各路大神都有,虽然通过了牛客的测试,但是我试了几个例子,居然输出负数,无奈只好自己做了,花了一整天按我自己的思路做了出来,自己还算比较才满意。题目描述:求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod1000007输入...

2018-03-11 16:23:13 380

原创 10种排序算法笔记总结(三)快速排序、归并排序、计数排序和基数排序

⑦快速排序:该算法采用了一种分治策略,基本思想是取待排序对象序列中某个对象为基准(比如第一个对象),按照该关键码的大小,将整个对象序列划分成左右两个部分:左侧子序列中所有元素关键码值都小于或等于基准元素关键码值,右侧子序列中所有元素关键码值均大于基准元素关键码值,基准对象排在这两个子序列的中间,然后分别对两个子序列重复上述方法,直到完成为止。可以归为4个步骤:假设有一个待排序数组array(1)如...

2018-03-07 17:48:09 985

原创 10种排序算法笔记总结(二)选择排序、堆排序和冒泡排序及冒泡排序的改进

④选择排序:以升序排序为例:刷吗在一组数据对象v[0]v[1]v[2]........v[n-1]中选择最小关键码的对象,若他不是对象序列中的第一个对象,则将它与第一个对象对调,然后在这组对象中剔除具有最小关键码的对象,在剩下的对象v[i+1]........v[n-1]中重复执行上述步骤,直到剩余对象只有一个为止。显然在这个过程中,具有相同关键码的对象可能会颠倒次序,因此直接选择排序算法是一种不...

2018-03-07 08:48:08 776

原创 10种排序算法笔记总结(一)插入排序、二分插入排序和希尔排序

总结10总排序算法:①直接插入排序②二分插入排序 ③希尔排序 ④直接选择排序 ⑤ 堆排序 ⑥冒泡排序及其改进 ⑦快速排序⑧归并排序 ⑨计数排序 ⑩基数排序(PS)链表排序(插入排序,快速排序和归并排序)应用:当数据量不大时选择插入或选择排序,不要用冒泡排序。其次,当数据量达尔优注重空间复杂度时选择快速排序和堆排序。再次,当数据量大而又允许使用较多附加空间是选择桶排序。最后,当腰在已排序数据上加若干...

2018-03-06 23:00:30 250

原创 栈及其应用(后缀表达式)、将栈内元素升序排列以及用双栈实现队列

1.栈介绍栈(stack)又称堆栈,其限制是仅允许在表的一端进行插入和删除操作。人们把此段成为栈顶,栈顶的第一个元素被称为栈顶元素,相对的,把另一端称为栈底元素。向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素上面,使之成为新的栈顶元素;从一个栈删除元素又称为出栈或退栈,它是把栈顶元素删除掉,使其下面相邻的元素成为新的栈顶元素。由于堆栈数据结构只允许在一端进行操作,因而按照后进先出(L...

2018-03-03 23:00:03 343

原创 美团点评2013研发笔试题

9道问答题(7,8,9分别为ios开发、android开发和运维开发选做题)1.有ABCD四个人要在夜里过一座桥,他们通过这座桥分别需要耗时1,2,5,10分钟,现在只有一支手电,过桥时必须带有手电,并且 同时最多只能两人一起过桥。请问如何安排能够让四人尽快过桥。2.25匹马赛跑,每次只能跑5匹马,最快能赛几次能找出跑得最快的3匹马?赛跑不能计时,并且假设每匹马的速度是恒定不变的。请给出答案并描述...

2018-03-03 21:15:12 236

原创 美团点评2012研发工程师笔试卷

问答题7道1.k链表翻转。给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,则翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,用程序实现。2.有一个随机数发生器,以概率P产生0,概率(1-P)产生1,请问能否利用这个随机数发生器,构造出新的发生器,以1/2的概率产生0和1。请写明结论及推理过程。3.4个足球队打小组单循环,...

2018-03-03 19:25:57 147

原创 美团点评2013湖南研发工程师笔试卷题解

问答题(6道)1.一堆硬币,一个机器人,如果是反的就翻正,如果是正的就抛掷一次,求正反的比例。2.一个汽车公司的产品,甲厂占40%,乙厂占60%,甲的次品率是1%,乙的次品率是2%,现在抽出一件汽车是次品,问是甲生产的可能性是多少?3.一个栈的入栈顺序是ABCDE,则不可能出栈序列()A.EDCBAB.DECBAC.DCEABD.ABCDE4.用两个栈模拟队列先进先出,模拟其add和remove操...

2018-03-01 00:32:37 220

原创 并查集

并查集是一种树形数据结构,用于处理一些不相交的集合元素的合并以及查询。并就是合并,查就是查找。常常在使用中以森林表示。例如:有四个元素A、B、C、D,其中A和B相连,B和C相连,C和D相连,判断A和D,A和C,B和D是否相连。使用并查集解决方法:首先合并,将四个元素按规则合并,每个元素都设置一个父亲节点,如果父亲节点又有父亲,则更新父亲节点为父亲节点的父节点,如果父亲节点的父亲节点又有父节点,则再...

2018-02-09 14:59:34 171

原创 给出MyString 函数原型,自己写出构造函数,复制构造函数,析构函数和赋值函数

函数原型class MyString{ public:     MyString (const char *str=NULL);     MyString (const MyString &other);     ~ MyString(void);     MyString & operator = (const MyString & other); private:     

2018-01-23 15:58:48 407

原创 操作系统内核特征(清华大学向勇)

并发:计算机中存在多个运行的程序,需要OS管理和调度。多个应用程序交替执行,需要知道所有运行的程序当前的执行的位置,当前正在执行的是哪一个应用,如果应用之间有切换的时候,切换到下一个应用的时候,它上次执行到什么位置,这次就从什么时候开始。当时的状态是什么样子,都需要操作系统来维护。共享: “同时”共享 和 互斥共享多个应用并发执行的时候,宏观上要体现出它们在同时访问资源的情

2018-01-23 09:51:28 908

原创 计算从整数1到n之间,所有1的个数的和

整数中1的个数(计算从整数1到n之间,所有1的个数的和)C++代码#include<iostream>using namespace std;int NumberOf1Between1AndN_Solution(int n){ int ones = 0; int a = 0; int b = 0; for (long long m = 1; m <= n; m

2017-09-01 19:08:53 2681

原创 二叉树打印

题目:按层打印二叉树给定一棵二叉树,按照从上到下,从左到右的顺序打印二叉树,每打印一层要换行 需要定义三个变量:last,nlast,tmp。 需要建一个队列 queue。 首先令last和nlast都等于头结点head。将头结点入队,弹出并打印,nlast等于head的左孩子,左孩子入队,nlast等于head右孩子,并把右孩子入队,此时nlast为last的右孩子。令last等于nlast

2017-08-08 09:09:39 743

转载 左移右移运算符(2)

先看如下一段左移右移的代码及其结果:代码#include "stdio.h"char leftshift(char i, int n){ if(n < 0) return -1; return i<<n;}char rightshift(char i, int n){ if(n < 0) return -1;

2017-03-01 19:18:19 640

转载 左移右移运算符(1)

先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用int i = 1;i = i 也就是说,1的2进制是000...0001(这里1前面0的个数和int的位数有关,32位机器,gcc里有31个0),左移2位之后变成000...0100,也就是10进制的4,所以说左移1位相当于乘以2,那么左移n位就是乘以2的n次方了(有符号数不完全适用,因为左移有可能导致符号变化,下面

2017-03-01 19:10:39 2017

转载 int 、 long 、 longlong 取值范围

unsigned   int   0~4294967295   int   -2147483648~2147483647 unsigned long 0~4294967295long   -2147483648~2147483647long long的最大值:9223372036854775807long long的最

2017-02-19 15:53:21 880

原创 C++ Primer 第一章 if 语句应用输入两个数,打印出这两个数之间的整数

练习1.1 编写程序,提示用户输入两个整数,打印出这两个整数所指定的范围内的所有整数出题思路:编写一个简单但完整的依据用户输入进行处理的实例。让读者体会:用户的输入可能有各种各样的情况,我们编写的程序必须全面地考虑各种情况,避免由于考虑不周使得程序在某些用户输入下产生错误结果甚至更严重的后果。#includeint main(){ std::cout << "请输入两个数" <<

2017-02-18 23:34:10 3080

原创 C++ primer 第一章的两个 if 语句例题

与大多数语言一样,C++也提供了 if 语句 来支持条件执行。我们可以用 if 语句写一个程序,来统计在输入中每个值连续出现了多少次:#include int main(){ //currVal 是我们正在统计的数;我们将读入的新值存入val int val = 0, curral = 0; //读取第一个数,并确保确实有数据可以处理 if (std::cin >> curral)

2017-02-18 12:40:03 1511

原创 C++ Primer 第一章学习(1.1)

1.1 编写一个简单的C++程序每个C++ 程序都包含一个或多个函数(function),其中一个必须命名为main。操作系统通过调用main来运行C++程序。下面是一个非常简单的main函数,它什么也不干,只是返回给操作系统一个值:int main(){ return 0;}一个函数的定义包含四个部分:返回类型(return type)、函数名(function name)、一

2017-02-17 10:49:22 368 1

空空如也

空空如也

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

TA关注的人

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