自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hebtu666

少说,多做。

  • 博客(36)
  • 论坛 (1)
  • 收藏
  • 关注

原创 【精品计划 附录2】- 算法分析

数学模型1. 近似2. 增长数量级3. 内循环4. 成本模型注意事项1. 大常数2. 缓存3. 对最坏情况下的性能的保证4. 随机化算法5. 均摊分析ThreeSum1. ThreeSumSlow2. ThreeSumBinarySearch3. ThreeSumTwoPointer倍率实验数学模型1. 近似N3/6-N2/2+N/3 ~ N3/6。使用 ~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数。2. 增长..

2020-05-31 17:06:26 11057 78

原创 cpp知识汇总(1) 指针vs引用、static、const

引用和指针的区别?指针是一个实体,需要分配内存空间。引用只是变量的别名,不需要分配内存空间。 引用在定义的时候必须进行初始化,并且不能够改变。指针在定义的时候不一定要初始化,并且指向的空间可变。(注:不能有引用的值不能为NULL) 有多级指针,但是没有多级引用,只能有一级引用。 指针和引用的自增运算结果不一样。(指针是指向下一个空间,引用时引用的变量值加1) sizeof 引用得到的是所指向的变量(对象)的大小,而sizeof 指针得到的是指针本身的大小。 引用访问一个变量是直接访问,而指针访

2020-05-31 15:05:34 2288 43

转载 互联网30年,泡沫如梦

人人都说互联网改变世界,这话没错。但我认为互联网改变的方式,是泡沫。资金,资源,人才因为一堆概念聚在一起,形成一个又一个的泡沫,然后泡沫破裂,大部分人失败,少数能够留下来的,会成为下一个世界的基石。然后再有新的泡沫产生。互联网的历史,就是泡沫浮起和破灭的历史。11993年,美国白宫宣布开始提供“在线服务”,在场的记者面面相觑,不知 “在线服务”和“电话服务”有什么区别。不久,联合国也宣布提供“在线服务”,后知后觉的新闻媒体猛然意识到这或许...

2020-05-31 13:48:46 3142 39

转载 【中国互联网江湖30年历史】再无风清扬,再有少年郎

0马云退了。在萧山奥体中心,无数阿里人的祝福中,流着眼泪,结束了自己在阿里的最后一天。从此互联网江湖再无风清扬,反而多了一个叫做马云的乡村教师。他临别一挥手,似乎带走了中国互联网的一个时代。20年浮沉,都付笑谈中。30年的中国互联网发展史,或许到了一个需要回头看的节点。1一切的开始,是在80年代。1987年9月14日21时07分,中国第一封电子邮件发出。内容为:Across the Great Wall we...

2020-05-31 12:04:02 7799 50

原创 leetcode359. 日志速率限制器

请你设计一个日志系统,可以流式接收日志以及它的时间戳。该日志会被打印出来,需要满足一个条件:当且仅当日志内容在过去的 10 秒钟内没有被打印过。给你一条日志的内容和它的时间戳(粒度为秒级),如果这条日志在给定的时间戳应该被打印出来,则返回true,否则请返回false。要注意的是,可能会有多条日志在同一时间被系统接收。示例:Logger logger = new Logger();// 日志内容 "foo" 在时刻 1 到达系统logger.shouldPrintMessag...

2020-05-30 17:44:57 9066 84

原创 leetcode412. Fizz Buzz

写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果n是3的倍数,输出“Fizz”;2. 如果n是5的倍数,输出“Buzz”;3.如果n同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz",...

2020-05-30 17:33:43 8562 53

转载 leetcode258. 各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?时间复杂度为O(1)的解法:除个位外,每一位上的值都是通过(9+1)进位的过程得到的,想一下拨算盘进位把整数n看成n样物品,原本是以10个1份打包的,现在从这些10个1份打包好的里面,拿出1个,让它们以9..

2020-05-30 17:13:03 1841 6

原创 leetcode193. 有效电话号码 正则了解一下

给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或xxx-xxx-xxxx。(x 表示一个数字)你也可以假设每行前后没有多余的空格字符。示例:假设file.txt内容如下:987-123-4567123 456 7890(123) 456-7890你的脚本应当输出下列有效的电话号码:987-123-4567(123) ...

2020-05-30 17:11:00 489

原创 leetcode369. 给单链表加一

用一个 非空 单链表来表示一个非负整数,然后将这个整数加一。你可以假设这个整数除了 0 本身,没有任何前导的 0。这个整数的各个数位按照 高位在链表头部、低位在链表尾部的顺序排列。示例:输入: [1,2,3]输出: [1,2,4]思路:help():计算本位的数字,然后返回进位(0或1)plusOne():因为help方法无法判断自己是否是最高位,所以在本方法中做一下处理。如果有进位,就再加一位最高的1即可。/** * Definition for singly-li.

2020-05-30 14:21:50 547

原创 leetcode557. 反转字符串中的单词 III python,处理字符串的神!

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。思路:python处理,先split分割为列表,再用列表生成式把每一项翻转,再用join拼起来即可。class Solution: def reverseWords(self,..

2020-05-28 23:43:26 10163 97

原创 【精品计划 附录1】那些必须知道的神级算法大盘点
原力计划

第一节1.1bogo排序Bogo排序(Bogo-sort),又被称为猴子排序,是一种恶搞排序算法。将元素随机打乱,然后检查其是否符合排列顺序,若否,则继续进行随机打乱,继续检查结果,直到符合排列顺序。Bogo排序的最坏时间复杂度为O(∞),一辈子也不能输出排序结果,平均时间复杂度为O(n·n!)。这让我想到了另一个理论:猴子理论,只要让一只猴子一直敲打计算机,理论上会有一天,它能敲出一本圣经出来,但是这个概率小到宇宙毁灭也很难敲出来。。真的不知道这个排序应该叫做天才还是垃圾哈哈哈,但是

2020-05-25 08:48:38 19761 174

原创 c++ STL迭代器实例

1、vector#include <iostream>#include <vector>using namespace std;int main(int argc, char* argv[]){ // Create and populate the vector vector<int> vecTemp; for (int i = 0; i<6; i++) { vecTemp.push_back(i); } // Dis

2020-05-22 09:58:01 1852 33

原创 go语言快速刷《程序员面试金典》(3)

编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。示例:输入: head = 3->5->8->5->10->2->1, x = 5输出: 3->1->2->10->5->5->8一趟分离,然后连起来即可。/** * Definition f

2020-05-18 22:44:17 5849 53

原创 go语言快速刷《程序员面试金典》(2)

字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1输入:s1 = "waterbottle", s2 = "erbottlewat"输出:True示例2输入:s1 = "aa", "aba"输出:Falsefunc isFlipedString(s1 string, s2 string) bool { return len(s1) == len(s2) &&amp.

2020-05-18 20:02:44 9819 75

原创 go语言快速刷《程序员面试金典》(1)

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。一个数组统计是否有func isUnique(astr string) bool { var arr[26] int; for _,ch:=range astr{ num:=ch-'a' if(arr[num]==1){ return false } arr[num]++ } return true}给定两个字符串

2020-05-18 19:21:33 5389 42

原创 go语言一天入门(下)

结构体和c一样package mainimport "fmt"type Books struct { title string author string subject string book_id int}func main() { // 创建一个新的结构体 fmt.Println(Books{"Go 语言", "www.runoob.com", "Go 语言教程", 6495407}) // 也可以使用 key =>

2020-05-18 17:02:04 8872 42

原创 go语言一天入门(上)

Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。声明变量的一般形式是使用 var 关键字:var name typeGo和许多编程语言不同,它在声明变量时将变量的类型放名称后。这样做的好处就是可以避免像C语言中那样含糊不清的声明形式,例如:int* a, b;。其中只有 a 是指针而 b 不是。如果你想要这两个变量都是指针,则需要将它们分开书写。而在 Go 中,则可以和轻松地将它们都声明为指针类型:var a, b *intGo语言的基..

2020-05-18 16:08:55 12018 56

原创 C++ 多态和虚函数

虚函数实现多态#include <iostream>using namespace std;//基类Peopleclass People{public: virtual void display(); //声明为虚函数};void People::display(){ cout<<"无业游民。"<<endl;}//派生类Teacherclass Teacher: public People{public: virtu

2020-05-09 12:53:37 1064 1

转载 Kafka深度解析

原创文章,转载请务必将下面这段话置于文章开头处(保留超链接)。本文转发自技术世界,原文链接 http://www.jasongj.com/2015/01/02/Kafka深度解析背景介绍Kafka简介  Kafka是一种分布式的,基于发布/订阅的消息系统。主要设计目标如下:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输 支持Kafka Server间的消息分.

2020-05-09 11:05:19 2524 1

原创 git/github使用完整教程(2)分支

分支首先,我们创建dev分支,然后切换到dev分支:$ git checkout -b devSwitched to a new branch 'dev'git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:$ git branch dev$ git checkout devSwitched to branch 'dev'然后,用git branch命令查看当前分支:$ git branch* dev mastergit bra...

2020-05-08 22:04:04 8688 106

原创 git/github使用完整教程(1)基础

安装git在Linux上安装Git首先输入git,看看系统有没有安装Git:$ gitThe program 'git' is currently not installed. You can install it by typing:sudo apt-get install git像上面的命令,有很多Linux会友好地告诉你Git没有安装,还会告诉你如何安装Git。如果是其他Linux版本,可以直接通过源码安装。先从Git官网下载源码,然后解压,依次输入:./config,ma

2020-05-08 22:00:00 20325 155

原创 C++ STL 线性容器的用法

vectorvector 是顺序容器的一种,是可变长的动态数组,支持随机访问迭代器,所有stl算法都能对 vector 进行操作。vector 容器在实现时,动态分配的存储空间一般都大于存放元素所需的空间。例如,哪怕容器中只有一个元素,也会分配 32 个元素的存储空间。这样做的好处是,在尾部添加一个新元素时不必重新分配空间,直接将新元素写入适当位置即可。在这种情况下,添加新元素的时间也是常数...

2020-05-08 14:55:26 3587 53

原创 C++ STL与迭代器

将容器类模板实例化时,会指明容器中存放的元素是什么类型的:可以存放基本类型的变量,也可以存放对象。对象或基本类型的变量被插入容器中时,实际插入的是对象或变量的一个复制品。STL 中的许多算法(即函数模板),如排序、查找等算法,在执行过程中会对容器中的元素进行比较。这些算法在比较元素是否相等时通常用运算符进行,比较大小通常用<运算符进行,因此,被放入容器的对象所属的类最好重载==和&lt...

2020-05-08 13:05:49 2460 11

原创 C++继承详解

废话不多说直接上代码class 派生类名:[继承方式] 基类名{ 派生类新增加的成员};继承方式限定了基类成员在派生类中的访问权限,包括 public(公有的)、private(私有的)和 protected(受保护的)。此项是可选项,如果不写,默认为 private(成员变量和成员函数默认也是 private)。现在我们知道,public、protected、private ...

2020-05-08 00:55:09 2231

原创 C++类和对象详解

创建对象两种创建对象的方式:一种是在栈上创建,形式和定义普通变量类似;另外一种是在堆上使用 new 关键字创建,必须要用一个指针指向它,读者要记得 delete 掉不再使用的对象。通过对象名字访问成员使用点号.,通过对象指针访问成员使用箭头->,这和结构体非常类似。成员变量和函数类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包...

2020-05-08 00:43:54 1691

原创 leetcode912. 排序数组 有范围的排序统统用桶排序

给你一个整数数组nums,请你将该数组升序排列。示例 1:输入:nums = [5,2,3,1]输出:[1,2,3,5]示例 2:输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]提示:1 <= nums.length <= 50000-50000 <= nums[i] <= 50000有范围的排序统统...

2020-05-07 21:23:09 1287 2

原创 leetcode1103. 分糖果 II 该模拟就模拟,别老想着优化

排排坐,分糖果。我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n颗糖果。然后,我们再回到队伍的起点,给第一个小朋友 n+ 1 颗糖果,第二个小朋友 n+ 2 颗,依此类推,直到给最后一个小朋友 2 * n颗糖果。重复上述过程(每次都比上一次多...

2020-05-07 21:18:27 519

原创 C++ new和delete

在C语言中,动态分配内存用 malloc() 函数,释放内存用 free() 函数。如下所示:int *p = (int*) malloc( sizeof(int) * 10 ); //分配10个int型的内存空间free(p); //释放内存在cpp中,这两个函数仍然可以使用,但是C++又新增了两个关键字,new 和 delete:new 用来动态分配内存,delete 用来释放内...

2020-05-07 20:23:14 1359

原创 C++std命名空间和头文件详解

一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。例如小李和小韩都参与了一个文件管理系统的开发,它们都定义了一个全局变量 fp,用来指明当前打开的文件,将他们的代码整合在一起编译时,很明显编译器会提示 fp 重复定义(Redefinition)错误。为了解决合作开发...

2020-05-07 20:16:44 2291

原创 什么是编译器?(程序是怎么跑起来的)

我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(Executable Program)。在 Windows 下,可执行程序的后缀有 .exe 和 .com(其中 .exe 比较常见);在类 UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。可执行程序的内部是一系列计算机指令和数据的集合,它们都...

2020-05-07 19:51:36 6019 76

原创 解决VS'scanf':this function or variable may be unsafe.`(VS安全函数问题)

在 VS(Visual Studio)下编译C语言程序,如果使用了 scanf()、gets()、strcpy()、strcat() 等与字符串读取或操作有关的函数,有时候VS会报错,提示该函数可能不安全,并且建议替换为带有_s后缀的安全函数,如下图所示:什么是安全函数(safe function)scanf()、gets()、fgets()、strcpy()、strcat() 等都是...

2020-05-07 19:43:47 403 1

原创 Linux GCC简明教程(编写c语言程序)

市面上常见的 Linux 都是发行版本,典型的 Linux 发行版包含了 Linux 内核、桌面环境(例如 GNOME、KDE、Unity 等)和各种常用的必备工具(例如 Shell、GCC、VIM、Firefox 等),国内使用较多的是 CentOS、Ubuntu(乌班图)、Debian、Redhat 等。Linux 主要应用于各种服务器(例如网站服务器、数据库服务器、DNS服务器、邮件服务器...

2020-05-07 19:35:34 474 20

原创 (图文详细)如何使用Code::Blocks运行c/cpp文件?

1) 新建源文件打开 CodeBlocks ,在上方菜单栏中选择 “文件 --> 新建 --> 空白文件”,如下图所示:或者直接按下Ctrl + Shift + N组合键,都会新建一个空白的源文件,如下图所示:在空白源文件中输入代码:在上方菜单栏中选择 “文件 -->保存文件”,或者按下Ctrl + S组合键,都可以保存源文件,如下图所示。...

2020-05-07 19:30:18 2345 87

原创 (详细图解)VS2017安装教程

VS 2017 版本同 15 版一样,细分为三个版本,分别是:社区版(Community):免费提供给单个开发人员,给予初学者及大部分程序员支持,可以无任何经济负担、合法地使用。 企业版:为正规企业量身定做,能够提供点对点的解决方案,充分满足企业的需求。企业版官方售价 2999美元/年 或者 250美元/月。 专业版:适用于专业用户或者小团体。虽没有企业版全面的功能,但相比于免费的社区版,...

2020-05-07 19:12:41 2155 32

原创 leetcode914. 卡牌分组

给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有X张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入...

2020-05-07 17:19:37 1206

原创 leetcode892. 三维形体的表面积

在N*N的网格上,我们放置一些1 * 1 * 1的立方体。每个值v = grid[i][j]表示v个正方体叠放在对应单元格(i, j)上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1,1...

2020-05-07 17:08:00 3175 1

空空如也

hebtu666的留言板

发表于 2020-01-02 最后回复 2020-07-14

空空如也

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

TA关注的人 TA的粉丝

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