自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 golang的排序

在写golang的排序时,想用php的array_multisort,理解过array_multisort的快乐之后,正常的排序真的不想写。然后发现sort包实现了一个interface,只要实现这个interface,想怎么排序就怎么排序。举个例子就懂了:package mainimport ( "encoding/json" "fmt" "sort")type RankList []Ranktype Rank struct { Id int64 `js

2020-05-11 18:02:21 116

原创 kafka相关

kafka作为一种常用的消息队列,经历了大家的检验。他的技术架构(集群)如下所示: 一个集群可以有多个broker,每台机器都部署了kafka,作为一个broker。他们可以接收同一个topic的消息,可以根据partation来区分消息。接收方可以订阅对应的topic的partation。订阅方式有两种,一种是kafka给消费方推送消息,这种方式kafka需要自己维护根据消费方回调...

2020-02-24 18:03:18 150

原创 《leetCode-php》合并k个排序链表

合并k个排序链表采用分治法<?phpclass Node { public $next = null; public $val; public function __construct($val) { $this->val = $val; }}function mergeKLists($arrList) { $nu...

2019-12-13 12:39:39 65

原创 《leetCode-php》岛屿数量

给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3来源:力扣(LeetCode...

2019-12-13 11:43:50 85

原创 《leetCode-php》排列序列

集合[1,2,3,…,n]一共有n!种不同的排列按字典序列出所有的排列并且给这些排列标上序号我们就会得到以下的序列(以n=3为例)"123" "132" "213" "231" "312" "321"现在给出n和k,请返回第k个排列注意:n在1到9之间<?phpfunction getPermutation($n, $k) { $arr...

2019-11-24 10:58:53 58

原创 《leetCode-php》旋转链表

将给定的链表向右转动k个位置,k是非负数。例如:给定1->2->3->4->5->null , k=2,返回4->5->1->2->3->null。<?phpclass Node { public $next = null; public $val; public function __cons...

2019-11-24 09:53:13 63

原创 《leetCode-php》加上障碍的二维地图从头到尾的所有路径数量

继续思考题目"Unique Paths":如果在图中加入了一些障碍,有多少不同的路径?分别用0和1代表空区域和障碍例如下图表示有一个障碍在3*3的图中央。[↵ [0,0,0],↵ [0,1,0],↵ [0,0,0]↵]有2条不同的路径备注:m和n不超过100.<?phpfunction uniquePathsWithObstacles($arr...

2019-11-09 11:25:51 48

原创 《leetCode-php》加上障碍的二维地图从头到尾的所有路径数量

继续思考题目"Unique Paths":如果在图中加入了一些障碍,有多少不同的路径?分别用0和1代表空区域和障碍例如下图表示有一个障碍在3*3的图中央。[↵ [0,0,0],↵ [0,1,0],↵ [0,0,0]↵]有2条不同的路径备注:m和n不超过100.<?phpfunction uniquePathsWithObstacles($arr...

2019-11-09 11:25:31 36

原创 《leetCode-php》二维数组从头到尾的所有路径数量

一个机器人在m×n大小的地图的左上角(起点,下图中的标记“start"的位置)。机器人每次向下或向右移动。机器人要到达地图的右下角。(终点,下图中的标记“Finish"的位置)。可以有多少种不同的路径从起点走到终点?<?phpfunction uniquePaths($m, $n) { $arrNum = array(); for ($i = 0; $i &...

2019-11-09 11:22:46 52

原创 《leetCode-php》求二维数组从头到尾的最小路径和

给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径。注意:你每次只能向下或向右移动。<?phpfunction minPathSum($arrGrid) { $line = count($arrGrid); $col = count($arrGrid[0]); $arrOutput = a...

2019-11-09 10:57:47 60

原创 《leetCode-php》合并两个有序链表

将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。<?phpclass Node { public $next = null; public $val; public function __construct($val) { $this->val = $val; }}function mergeT...

2019-11-07 23:27:00 168

原创 《leetCode-php》二进制字符串相加

给出两个用字符串表示的二进制数,返回他们的和(也用字符串表示)例如:a ="11"b ="1"返回"100".<?phpfunction addBinary($a, $b) { $i = strlen($a) - 1; $j = strlen($b) - 1; $str = ''; $flag = 0; while ($i &g...

2019-11-07 23:08:25 48

原创 《leetCode-php》数组组成的正整数+1

给出用数字数组表示的一个非负整数,请对该整数加1。<?phpfunction plusOne(&$arrNum) { $num = count($arrNum); for ($i = $num - 1; $i >= 0; $i --) { if ($arrNum[$i] == 9) { $arrNum[$i] = ...

2019-11-07 00:01:33 27

原创 《leetCode-php》数组表示的整数+1

给出用数字数组表示的一个非负整数,请对该整数加1。<?phpfunction plusOne(&$arrNum) { $num = count($arrNum); for ($i = $num - 1; $i >= 0; $i --) { if ($arrNum[$i] == 9) { $arrNum[$i] = ...

2019-11-06 23:56:47 55

原创 《leetCode-php》文本换行

给定一个单词数组和长度L,将该单词数组中文本两端对齐(左边和右边),使每一行都有L个字符。你要在每一行中尽可能多地填充单词。在必要时填充额外的空格' ',使每行正好有L个字符。单词之间的额外空格要尽可能均匀地分布。如果一行的空格数不能在单词之间平均分配,请在左边分配更多的空格对于最后一行文本,它应该左对齐,并且单词之间不插入额外的空格。例如,单词数组为:["This", "is"...

2019-11-06 00:29:45 70

原创 《leetCode-php》求平方根

实现函数int sqrt(int x).计算并返回x的平方根已经不记得什么求平方根的高数算法了,所以写了一个low的<?php/** * @param $n * @return int * @brief 返回平方根的整数 */function buildSqrt($n) { $i = 1; while ($i * $i <= $n) { ...

2019-11-01 21:45:21 30

原创 《leetCode-php》爬楼梯

你在爬楼梯,需要n步才能爬到楼梯顶部每次你只能向上爬1步或者2步。有多少种方法可以爬到楼梯顶部?<?phpfunction climbStairs($n) { $arrStep = array( 2 => 2, 1 => 1, 0 => 0, ); for ($i = 3; $i <...

2019-11-01 21:36:36 111

原创 《leetCode-php》简化路径

请简化给出的Unix样式的文件绝对路径,也就是转换成规范路径在Unix样式的文件系统中,.代表当前目录,.. 表示将目录向上移动一级请注意,返回的规范路径必须以斜杠“/”开头,并且两个目录名之间只能有一个斜杠“/”开头。如果存在的最后一级目录的话不能以“/”结尾。另外,转化出的规范路径必须是能表示给出的绝对路径的最短字符串。例如:文件路径 = "/home/", =>"...

2019-11-01 21:18:21 50

原创 《leetCode-php》将一个字符串增删改为另一个字符串的最少步数

给定两个单词word1和word2,请计算将word1转换为word2至少需要多少步操作。你可以对一个单词执行以下3种操作:a)在单词中插入一个字符b)删除单词中的一个字符c)替换单词中的一个字符<?php/** * @param $word1 * @param $word2 * @return mixed * $arrStep[$j][$i]代表了第一个字符串的前i...

2019-11-01 20:39:20 191

原创 《leetCode-php》替换矩阵中0的行和列都为0

给定一个m*n的矩阵,如果有一个元素是0,就把该元素所在的行和列上的元素全置为0,要求使用原地算法。拓展:你的算法有使用额外的空间吗?一种比较直接的算法是利用O(m,n)的空间,但是这不是一个好的解法使用简单的改进可以在O(m+n)的空间解决这个问题,但是还不是最佳的解法你能在常量级的空间复杂度内解决这个问题吗?<?php/** * @param $a...

2019-10-30 23:40:39 34

原创 《leetCode-php》二维矩阵查找

请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征:每一行的数字都从左到右排序每一行的第一个数字都比上一行最后一个数字大<?php/** * @param $arrMatrix * @param $target * @return boolean * @brief 二分查找 */function searchMatrix($arrMatr...

2019-10-30 23:11:46 50

原创 《leetCode-php》颜色排序

现在有一个包含n个物体的数组,其中物体颜色为颜色为红色、白色或蓝色,请对这个数组进行排序,让相同颜色的物体相邻,颜色的顺序为红色,白色,蓝色。我们用0,1,2分别代表颜色红,白,蓝注意:本题要求你不能使用排序库函数扩展:一个非常直接的解法是两步的计数排序的算法首先:遍历一遍数组,记录0,1,2的数量,然后重写这个数组,先将0写入,再将1写入,再将2写入你能给...

2019-10-30 22:47:02 98

原创 《leetCode-php》最小窗口子字符串

给出两个字符串S和T,要求在O(n)的时间复杂度内在S中找出最短的包含T中所有字符的子串。例如:S="ADOBECODEBANC"T="ABC"找出的最短子串为"BANC".注意:如果S中没有包含T中所有字符的子串,返回空字符串 “”;满足条件的子串可能有很多,但是题目保证满足条件的最短的子串唯一。思路:采用滑动窗口,而且只有首尾都是T的字符的时候才有可能是...

2019-10-29 23:05:13 35

原创 《leetCode-php》两个代表数字的链表求和

给定两个代表非负数的链表,数字在链表中是反向存储的(链表头结点处的数字是个位数,第二个结点上的数字是百位数...),求这个两个数的和,结果也用链表表示。输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8<?phpclass Node { public $next = null; p...

2019-10-17 20:51:39 91

原创 《leetCode-php》求一个字符串中的最长子串

给定一个字符串,找出最长的不具有重复字符的子串的长度。例如,“abcabcbb”不具有重复字符的最长子串是“abc”,长度为3。对于“bbbbb”,最长的不具有重复字符的子串是“b”,长度为1。<?phpfunction getMaxSubStr($string) { $len = strlen($string); $arrStr = array($string[0]...

2019-10-17 20:50:29 110

原创 《leetCode-php》寻找数组中两个数的和等于另一个数

给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {2, 7, 11, 15},目标值为9输出 ndex1=1, index2=2<?php/** * @p...

2019-10-16 22:05:30 68

原创 《leetCode-php》求n个连续数中m个数的组合

给出两个整数n和k,返回从1到n中取k个数字的所有可能的组合例如:如果n=4,k=2,结果为[↵ [2,4],↵ [3,4],↵ [2,3],↵ [1,2],↵ [1,3],↵ [1,4],↵]思路:当前数作为其中一个,剩下的就从后面来获取<?phpfunction combine($start, $end , $num) { $arrR...

2019-10-13 11:34:38 121

原创 《leetCode-php》求不重复数组的子集

现在有一个没有重复元素的整数集合S,求S的所有子集思路:通过二进制来确定有哪些子集<?phpfunction subsets($arr) { $num = count($arr); $end = pow(2, $num); $arrRet = array(); for ($i = 0; $i < $end; $i ++) { ...

2019-10-13 11:02:04 63

原创 《leetCode-php》查找字符串

给出一个二维字符数组和一个单词,判断单词是否在数组中出现,单词由相邻单元格的字母连接而成,相邻单元指的是上下左右相邻。同一单元格的字母不能多次使用。例如:给出的字符数组=[↵ ["ABCE"],↵ ["SFCS"],↵ ["ADEE"]↵]单词="ABCCED", -> 返回 true,单词="SEE", ->返回 true,单词="ABCB...

2019-10-13 10:27:19 79

原创 《leetCode-php》删除数组中的重复元素

给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。<?phpfunction removeDuplicates($arr) { $num = count($arr); for ($i = 0; $i < $num; $i ++) { ...

2019-10-13 09:41:12 38

原创 《leetCode-php》查找存在重复的旋转有序数组中的值

继续思考题目"Search in Rotated Sorted Array": 是基于上一个题目的如果数组种允许有重复元素怎么办?会影响时间复杂度吗?是怎样影响时间复杂度的,为什么?编写一个函数判断给定目标值是否在数组中。<?php/* * 肯定是影响找到位置的时间复杂度,因为如果mid=target的话,还是需要判断有没有别的重复的,就变成了遍历,O(n)的复杂度 ...

2019-10-12 23:45:45 34

原创 《leetCode-php》查找旋转之后的有序数组中的点

假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,3,4,5] 可能变为[1,2,3,4,5,0])。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。思路:可以采用二分查找来实现这个复杂度<?php/** * @...

2019-10-12 22:47:45 21

原创 《leetCode-php》去掉有序链表中重复的值

给出一个排好序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为1->2->3->3->4->4->5, 返回1->2->5.给出的链表为1->1->1->2->3,返回2->3.思路:这个主要是头结点怎么处理<?phpclass Node {...

2019-10-12 09:17:37 34

原创 《leetCode-php》删除有序链表中的重复元素为1次

删除给出链表中的重复元素,使链表中的所有元素都只出现一次例如:给出的链表为1->1->2,返回1->2.给出的链表为1->1->2->3->3,返回1->2->3.<?phpclass Node { public $next = null; public $val; public funct...

2019-10-11 23:27:51 20

原创 《leetCode-php》求直方图的最大矩形面积

给出n个数字,代表直方图的条高,直方图每一条的宽度为1,请计算直方图中最大矩形的面积上图是每条宽度为1, 高度=[2,1,5,6,2,3].的直方图图中的阴影部分是该直方图中面积最大的矩形,面积为10个单位例如:给出的高度 =[2,1,5,6,2,3],返回10.思路:每一列都作为1-n的一个分布,获取各个位置的宽度,然后求出各个位置的最大面积即可。<?...

2019-10-10 23:15:23 47

原创 《leetCode-php》获取最大的面积

给出一个只包含0和1的二维矩阵,找出最大的全部元素都是1的长方形区域,返回该区域的面积。<?phpfunction maximalRectangle($arrMatrix) { if (empty($arrMatrix)) { return 0; } $rows = count($arrMatrix); $cols = count($a...

2019-10-10 09:33:02 88

原创 《leetCode-php》分割链表

给出一个链表和一个值x,以x为参照将链表划分成两部分,使所有小于x的节点都位于大于或等于x的节点之前。两个部分之内的节点之间要保持的原始相对顺序。例如:给出1->4->3->2->5->2和x= 3,返回1->2->2->4->3->5思路:这个题目比较简单,搞两个链表分别存储两部分,然后链接起来即可<...

2019-10-09 21:11:37 36

原创 《leetCode-php》乱序字符串

题目给出一个字符串s1,我们可以用递归的方法将字符串分成两个非空的子串来将s1表示成一个二叉树下面是s1=“great”的一种二叉树的表现形式: great↵ / ↵ gr eat↵ / / ↵g r e at↵ / ↵ a t将字符串乱序的方法是:选择任意的非叶子节点,交换它的两个孩子节点。...

2019-10-09 09:25:48 50

原创 《leetCode-php》合并两个有序数组

给出两个有序的整数数组A和B,请将数组B合并到数组A中,变成一个有序的数组注意:可以假设A数组有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n<?php/** * @param $arrA * @param $m * @param $arrB * @param $n * 一开始在想要这个m和n干什么,直接从左向右插入就可以了, * 但是每插入一...

2019-10-09 08:50:49 32

原创 《leetCode-php》格雷码

格雷码是一种二进制编码系统,如果任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code)。给定一个非负整数n,表示代码的位数,打印格雷码的序列。格雷码序列必须以0开头。例如:给定n=2,返回[0,1,3,2]. 格雷码的序列为:00 - 0↵01 - 1↵11 - 3↵10 - 2注意:对于一个给定的n,格雷码的序列不一定是唯一的,例如:根据题目描述,[0,2,...

2019-10-09 08:29:35 23

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