自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

纵横千里 捭阖四方 的专栏

潜心java,潜心算法

  • 博客(471)
  • 资源 (26)
  • 问答 (1)
  • 收藏
  • 关注

原创 大众点评题:判断字符串是否包含子串的全部字符

题目的基本要求是:判断字符串A中的字符串是否全部出现在字符串B中,据说是大众点评出的题。这个题怎么做呢?貌似很简单, 可以用一个Hash,将B中的全部字符依次放入,然后再逐步读取子串的字符并判断是否存在Hash中即可。坏处是需要一个O(n)的空间。还可以直接比较,每读一个B中的字符就扫描一遍字符串,看看是否存在,这种方式的好处是简单易懂,坏处自然是查找效率比较低。还有一种方式是现将字符串排序,然后再比较,坏处仍然是效率不高,因为要先进行大量排序操作,而且还改变了 原始字符串。比较起来还是第二

2021-12-30 08:03:31 116

原创 字符串排序轻松解决数组能排成的最小数问题

题目是样的:输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的那一个。例如输入数组{3,32,321},则打印出的最小整数是321323。这个题如果使用全排列再找最小,实现难度挺大,特别是数字中可能有重复,还要处理前导0的情况,所以基本可以放弃了。那怎么做才好一些呢?先对数字进行排序,而这里的排序不是简单的比较谁更大谁更小,而是比较两个数字和进行左右拼接时谁更大,谁更小,例如 3 和32,我们先左拼接为332,再有拼接为323,返回谁更小,假如是一个数组,那我就

2021-12-30 07:51:12 3378

原创 二分法的应用:在存在空串的字符数组中寻找特定值

一般涉及到有序序列的查找,都要考虑一下能否使用二分查找来加速,这是查找优化的一项重要内容。看一个题目:有个排序后的字符串数组,其中散布着一些空字符串,请你写一个方法,找出是否存在给定的字符串(不是空串),如果存在则返回索引。这个题什么意思呢,就是字符串整体是有序的,但是中间零散有一些空串,例如这种结构。{"a", "", "ac", "", "ad", "b", "", "ba"}那这是能不能用二分查找呢?当然可以我们可以假定遇到空串就往左边走或者右边走,直到找到不是空的串,判断一下是大了

2021-12-29 22:31:34 185

原创 经典递归问题:青蛙跳台阶,跳1个,2个或者3个

这个问题经常在各类面试中看到。一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。我们知道如果要写递归代码,那一定要先找到递归公式,这个找法,一个是画执行时的栈结构图来看,一个是从小到大来分析。我们看一下从小到大的过程:从这里我们可以归纳出,递推公式是f(n)=f(n-1)+f(n-2),然后就可以根据三步走策略来写代码了:1、确定递归函数功能假设 f(n) 的功能是求青蛙跳上一个n级的台阶总共有多少种跳法,代码如下:int f(...

2021-12-29 22:10:09 6612 1

原创 好玩的位运算5:数字中1的个数

这个问题也是位运算的经典问题:给定一个无符号32位整数num,求num的二进制表示法中含1的个数?在解答这个问题之前,我们先看个变种,如果要统计十进制中数字1的个数该如何做呢?最简单的方式是使用除和取模循环操作,并且计数,也就是这样:public int countDigitOne(int n) { int cnt = 0; for(long i = 1; i <= n; i*=10){ int a = n /i;

2021-12-29 18:32:44 272

原创 Django 沙箱报ImportError: cannot import name EntryPoint的问题

最近要将一个Django服务迁移到新机器上,主要步骤是先在新机器里安装沙箱和Django环境,但是激活沙箱的时候遇到一个拦路虎”ImportError: cannot import name EntryPoint的问题“采用各种方式,死活过不去。一般情况下安装沙箱的步骤是这样的:#安装虚拟机pip install virtualenv --user#创建虚拟环境 (使用系统默认python版本和site packages)virtualenv ~/env_dj1.11#激活虚拟环境sou

2021-12-29 13:58:55 626

原创 好玩的位运算4:如果用二进制表示小数

算法的一个方面就是将原来我们习以为常的东西用算法给一行行实现了,二进制小数与十进制小数之间的转换就是一个例子。题目要求:给定一个0到1之间的实数(如0.625),类型为double,请你打印它的二进制表示(例如0.625对应的就是0.101)。如果无法精确用32位二进制表示就打印Error。算法测试不是真的要在工程里用,因此题目会做很多简化,例如这里没有让考虑3.24这种的,也没让考虑负数的问题,就写一个简单的转换。我们先看一下怎么转换,例如0.6,将该数字乘以2,取出整数部分作为二进制表示的第1位

2021-12-29 08:44:53 183

原创 好玩的位运算3: 将整数的奇偶位互换

题目要求如上所述,将一个整数的奇偶位互换,例如一个8位整数是(10101100)b那么奇偶互换之后就是(01011100)b。假设机器是32位的,请你解决这个问题。首先一个问题,对于32位,从左开始还是从右开始,奇偶位置是不一样的,但是一共就32位,反正都是交换,我们干脆自己规定一下。最低位开始数,最低位是第0位,是偶数为,次低位时第1位,是偶数位。这个问题虽然是整数,但是用二进制表示的,所以我们的第一反应是转换成数组再来循环处理,这样虽然能解决问题,但是有点low,你还是要写很多代码才行。如果使用

2021-12-29 08:21:33 742

原创 好玩的位运算2:用一条语句判断一个整数是不是2的整数次方

这个问题也是经典的位图题目,题目要求也很简单用一条语句判断一个整数m是不是2的整数次方。怎么做呢?如果用普通的方式,就是循环除以2,2^1,2^2....一直到2^(n-1)<=m<=2^(n)。这个想想就觉得费劲,那用位图怎么做呢?我们知道如果是2的整数次方的话,一定是2^0,2^1,2^2,....,2^n这样的结构。如果用二进制表示的话,正好有一位是1,其他全是0,也就是这样子:0000 00010000 00100000 01000000 10000001 0000

2021-12-29 07:54:35 277

原创 Django应用数据库迁移 No changes detected问题

详细内容请参考这里Django框架教程(非常细)Django 提供了ORM功能,我们可以直接在model中定义数据库表字段,然后通过python命令来帮助我们创建数据库表和对应的字段,这个过程就叫应用数据库迁移。例如我在model下创建了如下的内容;具体参考这里:Django ORM进阶应用class Book(models.Model): # 创建 book 表 title = models.CharField(max_length=30, unique=True, verbos.

2021-12-28 16:43:26 1890

原创 Django1.8无法连接mysql的问题Did you install mysqlclient or MySQL-python

使用Django1.8创建新项目时,经常出现一个奇怪的问题Error loading MySQLdb Module 'Did you install mysqlclient or MySQL-python?'即使将这两个使用pip install给安装了还是无法启动,这时候应该做的是:pip install pymysql然后在工程目录下的__init__.py文件里添加import pymysqlpymysql.install_as_MySQLdb()这时候再启动就行了。

2021-12-28 15:28:47 1099

原创 好玩的位运算1:找数组中找成对和不成对

如果会位操作的话,很多题目特别简单,如果不知道想用其他结构来做的话,很多会非常难,而且麻烦。我们看一个经典的题目:1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次。每个数组元素只能访问一次,设计一个算法,将他找出来;不用辅助存储空间,能否设计一个算法实现?这个题如果采用Hash等方式虽然能做,但是效果非常不好,1000个数中只有一个会冲突,很显然这不是面试官想要的解答。如果采用位运算就非常简单,我们知道位运算具体来说包括与或非、异或等几种,异或是一

2021-12-27 23:49:38 588

原创 如何在Linux上升级pip2到最新版

公司有几个老python服务用的是python2,使用pip时提示版本只有1.8,需要升级,使用了很多方式都不管用,后来发现这么干最快,先卸载掉pip1.8:python -m pip uninstall pip然后安装:先下载文件:wget https://bootstrap.pypa.io/pip/2.7/get-pip.py然后安装:python ./get-pip.py最后查看一下:搞定!网上很多地方是wget https://bootstrap.pypa.

2021-12-24 16:03:29 2638

原创 如何优雅地用1小时处理1600万条数据库记录

有些业务场景发生改变时经常需要先修复历史数据,例如最近双清单政策出来之后,要求对用户敏感数据都要加密,主要是姓名、手机号和地址三个字段。过度方案很简单,先为三个字段 分别创建一个对应的name_encrypt,phone_encrypt和address_encrypt,先将对应的数据都加密保存起来,上线稳定后再将明文字段name,phone和address删掉。现在有个服务有1600万条记录,每条记录都要先处理一遍,那此时该如何做比较好呢?我们通过进阶的方式来逐步展开。第一级:多线程执行这种修理数据

2021-12-22 20:24:32 831

原创 重排链表 一道无聊的好题

这是一道非常无聊的超级好题,如果解决了,链表算法一定是过关了,但是如果面试的时候遇到了,我非常想问题一下面试官的祖宗。之所以写在这里,这是让你感受一下LeetCode题不过就是换换条件继续瞎搞。要求给定一个单链表 L:L0→L1→…→Ln-1→Ln你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1:1.给定链表 1->2-> 3->4, 重新排列为 1->4->2->3.2.给定链表 1->2->3-&gt...

2021-12-12 00:11:19 320

原创 六种方法判断链表是否为回文序列

这也是一道不难,但是很经典的链表题,请判断一个链表是否为回文链表。示例1:输入: 1->2->2->1输出: true进阶你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?看到这个题你有几种思路解决,经过前面这些题目的蹂躏,我现在看到这个题瞬间就想到6种解法。虽然有几个是相同的,但是仍然可以是新的方法。方法1:将链表元素都赋值到数组中,然后可以从数组两端向中间对比。方法2:将链表元素全部压栈,然后一边出栈,一边重新遍历链表,一边比较,只要有一个不相

2021-12-11 13:56:44 3449

原创 五种方法解决两个链表第一个公共子节点

这是一道经典的链表问题先看一下题目。输入两个链表,找出它们的第一个公共节点。例如下面的两个链表:两个链表的头结点都是已知的,相交之后成为一个单链表,但是相交的位置未知,并且相交之前的结点数也是未知的,请设计算法找到两个链表的合并点。1.没有思路时该怎么解题 这种问题该怎么入手呢?如果一时想不到该怎么办呢?其实这时候我们可以将常用数据结构和常用算法都想一遍,看看哪些能解决问题。常用的数据结构有数组、链表、队、栈、Hash、集合、树、堆。常用的算法思想有查找、排序、双指针、递归、迭.

2021-12-11 13:52:15 601

原创 java里的链表到底是什么

我们知道在C和C++里有值和地址的概念,所以能轻松构建出链表,那在java中又是怎么构建出链表的呢?链表元素在jvm里又是怎么存的呢?我们知道JVM里有栈区和堆区,栈区主要存引用的,而堆区存的是对象,栈里的引用存的就是对象在堆区中的地址,例如我们定义这样一个类:public class Course{ Teacher teacher; Student student;}这里的teacher和student就是指向堆的地址。假如我们这样定义:public class Course

2021-12-11 13:16:27 742

原创 巧妙使用两次反转,轻松解决循环移位问题

循环移位是一个看似简单,但是实现非常麻烦的问题,看个例子:给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。例如:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]这个题怎么做呢?你是否想到可以逐个移动来实现?理论上可以,但是实现的时候会发现问题重重,不好处

2021-12-10 20:36:15 397

原创 log4j2爆出漏洞,如何快速升级

近日,Apache Log4j 的远程代码执行漏洞细节被公开,该漏洞一旦被攻击者利用会造成严重危害。Apache Log4j 是一款开源的Log4j2 室一款开源的Java日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于Log4j2 提供的lookup功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现过程中,并未对输入进行严格的判断,从而造成漏洞的发生。解决方法最有效的就是将其升级到2.15.0。今天改造了公司的一个服务,因为是公司项目,不写太多的内容,只写几个修改的

2021-12-10 20:08:35 4711

原创 完美解决数组重排问题

有时候一个算法可以很简单,但是如果细究起来可以非常复杂,每解决一个这样的问题,我们的算法就提升一大截,看一下这个题:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如:输入:[2, 3, 1, 0, 2, 5, 3]因为2和3有重复,所以可以输出:2 或 3 对于重复元素,Hash和集合是一个常用策略,我们首先想到可以用集合来记录

2021-12-09 07:44:02 1623

原创 纵横算法之五:想学算法,时间不够怎么办

现在讨论最后一个问题,其实谁都想学算法,谁都想让算法不再成为自己的软肋,谁都想面试的时候把算法写出来,然后面试的要是至少多要1000元,这个不是我说的,而是调研来的,请看:谈完上面这些问题之后,接下来会有大量的人说:自己想学,但是时间不够,该怎么办?其实这个问题本身就错了,不是时间不够,而是你对自己不够狠!在和很多小伙伴聊的时候,很多人会感觉中科院好神秘,现在中科院也成立自己的大学了,感觉是和清华北大一个量级的,就问我中科院里的人都是啥样子。啥样子?就是人样,说不定就是坐地铁和你抢位子.

2021-12-05 09:47:08 550 1

原创 纵横算法之四:算法应该怎么学

我们继续聊算法,现在要谈一个最重要的问题:算法应该怎么学!算法的脉络是什么?怎么才算学透,要做多少题?要花多少时间?为什么总感觉很多教程啥的没有用?先说结论,目前公认最好的方式是 按照主题学习,循序渐进。说人话就是按照小专题刷,一次学习一片题目。按照LeetCode的顺序刷的坏处是很多相邻的题目涉及的知识并不一样, 有的题考察二叉树,有的是链表,有的是递归,有的是数组,前后不搭边的问题使你无法将一个知识点或者技能训练到熟练的程度,就容易出现刷的越多,脑子越乱的问题,也许走火入魔就是这么回事吧。其实任

2021-12-05 09:05:47 966

原创 纵横算法之三:算法到底考什么

关于算法有太多的疑问和截然相反的争论,例如经常看到很多人说算法是玄学,是聪明者的游戏,学不好是自己笨,数学不好所以算法不会等等。还有人会觉得工作不用所以不学,算法不用学,在工作中多积累积累就行了吗?还有人总是感觉各种算法课程没有用,这都是为什么呢?我们继续谈。我们前面说面试以数据结构及其变形为主,这能占到现场手写算法的80%,那这些内容到底有哪些呢?高级和初级算法怎么区分呢?我们先回忆一下数据结构都有哪些内容。如果你学过数据结构课程,你应该知道大致有那么几个章节:数组(包括一维和二维)、链表(包

2021-12-04 12:55:03 751

原创 纵横算法之二:社招如何面对算法面试

我的读者大部分都是工作过的,那社招该如何看待面试呢?我们一起来分析一下。首先算法有校招和社招两种情况,校招算法的首要目的是什么呢?刷人!每年投阿里头条的可能有十万几十万,面试官不能一个个去面吧,那怎么办呢?用一些难的算法干掉一大波人,剩下的再择优录取,所以你在网上看到的什么阿里秋招、头条春招试题集里的算法都挺难,会觉得只有会这些难题才行,这本身就让你更加畏惧。而对于社招,不是为了刷人而刷人,只要你简历筛选通过了,就说明他愿意放下各种外在因素,考察一下这个人的功力如何,能力怎么样。而算法只是考察思

2021-12-04 10:21:20 1216

原创 纵横算法之一:面试为什么非要有算法

我们都知道面试会考察三个显式方面:项目、技术和算法。还有两个隐式方面:学历和上一家公司的档次。 显式的意思就是面试可以聊,而且能直接反应你客观水平的。而隐式条件是双方不会面上说的,而且你也无法改变的。经常看到各种帖子抱怨如何如何被歧视,但是这是没有办法的。爱美之心人皆有之,如果选择贾玲和杨幂做你老婆,你会选择谁?我们都知道贾玲非常优秀,非常幽默,人品又好,还很会挣钱,所以我选择杨幂,原因就一个——杨幂漂亮。如果两个求职者面试情况非常接近,一个是阿里来的,一个是某个谁都不不知道的小公司来的,你更想要谁?这是人

2021-12-04 09:43:24 586

原创 分治6:LeetCode162. 寻找峰值

概题的特点是可能不止一个

2021-11-20 18:17:55 831

原创 堆的问题:大堆小堆都能解决LeetCode215 在数组中找第K大的元素

LeetCode215题:给定整数数组 nums 和整数 k,请返回数组中第 **k** 个最大的元素。示例1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4这个题是一道非常重要的题,主要解决方法有三个,选择法,堆排序法和快速排序法。选择法很简单,就是先遍历一遍找到最大的元素,然后再遍历一遍找第二大的,然后再遍历一遍找第三大的,直到第K次就找到了目标值了。但是这种方法只适合在面试的时候预热

2021-11-16 23:47:44 554

原创 分治7:LeetCode875. 爱吃香蕉的珂珂

这种场景题经常会在笔试中出现,整个题目有一大堆文字,给一个场景,然后让你设计模型并实现。我们一起来看看。珂珂喜欢吃香蕉。这里有N堆香蕉,第 i 堆中有piles[i]根香蕉。警卫已经离开了,将在H小时后回来。珂珂可以决定她吃香蕉的速度K(单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。珂珂喜欢慢慢吃,但仍然想在警卫回来前吃掉所有的香蕉。返回她可以在 H 小时内吃掉所有香蕉...

2021-11-16 00:20:38 87

原创 分治5:154. 寻找旋转排序数组中的最小值 II

这道题的题目也比较啰嗦,就是在寻找最小值的基础上又增加了一个要求:存在重复元素。还是看看完整题目要求吧。已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,4,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,4] 若旋转 7 次,则可以得到 [0,1,4,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n

2021-11-16 00:01:54 72

原创 分治3:关于山脉数组的两道题

在LeetCode中有两道关于山脉的问题LeetCode852和1095。通过这两个题,我可以放心的和你说,LeetCode刷完前1000道就够了,后面1500道基本不用看。1.LeetCode852. 山脉数组的峰顶索引这个题的内容表述有点啰嗦,符合下列属性的数组 arr 称为 山脉数组 :arr.length >= 3存在 i(0 < i< arr.length - 1)使得: arr[0] < arr[1] < ... arr[i-1] &l...

2021-11-15 23:52:54 338

原创 分治2:LeetCode153. 寻找旋转排序数组中的最小值

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。给你一个元素值 互不相同 的数

2021-11-15 23:38:03 95

原创 分治1:33. 搜索旋转排序数组

分治思想是一个非常重要的方法,最典型的分治就是二分查找,在长度为n的空间里,每次查找范围都减半,这样可以大大提高查找的效率。在LeetCode中有很多题目都是基于该思想,因此我们现在继续研究一些题目。LeetCode33 搜索旋转排序数组:整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了循环右移,移出来的回到了左边。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋

2021-11-15 23:27:51 423

原创 滑动窗口10:存在重复元素的三个题

滑动窗口的问题还有很多,我们这里先看前面的几道,本文我们分析一个专题:存在重复元素的三道题。对应LeetCode的217,219和220三道题。在做了这三个题之后感觉有点无聊,但是吧,面试算法本来就无聊,还是一起做一做吧。LeetCode217题 给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回true。如果数组中每个元素都不相同,则返回false。Leetcode219题,给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得...

2021-11-14 16:33:40 4113

原创 滑动窗口9:239. 滑动窗口最大值和480滑动窗口中位数

题目要求:给你一个整数数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7 ...

2021-11-14 12:13:47 237

原创 滑动窗口8:75. 颜色分类-经典荷兰国旗问题

这个题是非常经典的荷兰国旗问题,我们先看一下题目要求:给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。示例1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]这道题的发明者正是大名鼎鼎的荷兰计算机科学家Dijkstra,在图算法中我们会认真学习他提出的Dijkstra遍历算法。荷兰国旗图像如下:这个题...

2021-11-14 11:44:10 675

原创 滑动窗口7:Leetcode 1004. 最大连续1的个数 III

题目要求:给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。 返回仅包含 1 的最长(连续)子数组的长度。示例 1:输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2输出:6解释: [1,1,1,0,0,1,1,1,1,1,1]粗体数字从 0 翻转到 1,最长的子数组长度为 6。本题也是练习滑动窗口的好问题,官网的解释有点晦涩,我找到的最好的解释是这样的。这的难点在于我们可以将K个位置从0翻转成1,这里为了好处理,我

2021-11-13 23:49:45 4483

原创 滑动窗口6:LeetCode3.无重复字符的最长子串

题目要求:给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例:输入: s = "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。本题的热度非常高,而且在整个LeetCode中的编号也非常靠前,所以我们看一下如何用滑动窗口解决,本题在官网的解答已经表述的很好了,我们直接抄过来吧。我们先用一个例子考虑如何在较优的时间复杂度内通过本题。我们不妨以示例一中的字符串 abcabcbb 为例,找出从每一个字符开始的,不包...

2021-11-13 23:35:18 94

原创 滑动窗口5:LeetCode 76. 最小覆盖子串

题目要求:给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。示例1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"这个题在LeetCode中标记的难度是hard,但是使用滑动窗口可以非常轻松地想到解决思路,难点在于元素可能存在重复,例如t="AAA",这时候使用Hash等辅助计算时就需要额外记录次数。在滑动窗口类型的问题中都会有两个指针,一个用于「延伸」...

2021-11-13 23:25:18 3658

原创 滑动窗口4:LeetCode209. 长度最小的子数组

题目要求:给定一个含有n个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。1.暴力计算这是一道经典的滑动窗口的问题。首先,我们留意这里说的是连续,如果忽...

2021-11-13 23:05:31 426

Typora_0.11.12.dmg

Typora_0.11.12.dmg的mac安装文件,从0.11.18之后就开始收费了,这个版本是费了很大劲才找到的

2021-12-22

mysql-connector-c++-8.0.23-macos10.15-x86-64bit.dmg

mysql-connector-c++-8.0.23-macos10.15-x86-64bit.dmg

2021-05-10

live555.chm帮助文档

live555软件2016版的全部函数和方法的接口与文档,是我亲手整理和制作的,很多还带有清晰的类间结构关系图和调用关系图,是研究live555必备的材料。不过这个文件有些链接会跳转失败,你可以下载我提供的HTML格式的API文件。

2016-09-09

live555 API文件HTML版

这是HTML版的live555 API文件,昨天上传的chm版的有很多链接跳不过去,还是HTML版的更干脆一点。

2016-09-09

ffmpeg文件

与http://blog.csdn.net/xueyushenzhou/article/details/52241480博客配套的几个文件

2016-08-18

QtFtp源代码

QtFtp的源代码文件,编译方法请参考博客http://blog.csdn.net/xueyushenzhou/article/details/51957423

2016-07-19

qt5使用curl实现文件下载的示例程序

qt5使用curl实现文件下载的示例程序,详细操作请参考博客http://blog.csdn.net/xueyushenzhou/article/details/51702672#t3

2016-06-20

CRC32,QT5校验程序

使用QT5实现的CRC32校验的完整程序.由于手误,工程名为Dialog,使用时请留意一下。

2016-04-21

64位win7系统下安装USB下载器驱动FriendlyArm-usb-dnw-driver

64位win7系统下安装USB下载器驱动FriendlyArm-usb-dnw-driver,经过测试,可以使用。用win7+64位系统是没有友善之臂的usb驱动的,貌似是有国外给2440写过一个驱动,该程序的基本思想是这样的,有一个可以在64位系统中的适用2440的驱动,但是没有数字签证,所以借助另外一个软件给他写入签证。 1、下载文件 解压 2、打开dseo13b.exe Select "enable test mode" -> next -> ok Select "sign a system file" -> next -> location of secbulk.sys,for example : "c:\downloads\inf64\secbulk.sys" 3、重启电脑 4打开设备管理器,插入usb,给板子上电,发现未知设备,右击,更新驱动程序,选择文件夹secbulk64,自动安装结束,然后打开dnw测试能否正确连接。 可以下载了!

2016-02-02

ACM 计算机通讯 2014年2月 communications201402

ACM 计算机通讯 2014年2月 communications201402

2014-06-04

ffmpeg-2.0.tar.bz2 linux源代码

解压后执行./configure --disable-yasm --enable-shared --prefix=/usr/local/ffmpeg 然后在root权限下执行 make 和make install即可

2014-05-02

vlc -1.1.7.tar.bz2 linux版源代码

VLC的linux源代码 编译方法为: 1 解压 2 安装vlc依赖的库 #sudo apt get build dep vlc 3 安装必须的工具包否则后面会出错 #apt get install autoconf automake libtool git subversion 4 安装最新的VLC #cd home git work #git clone git: git videolan org vlc git 5 配置环境 configure prefix home lqc workspace vlc 指定make install 要安装的目录 如果显示错误 则分别安装下面的软件 安装以下文件 apt get install lua5 1 sudo apt get install libxcb shm0 dev sudo apt get install libavcodec dev sudo apt get install libavformat dev sudo apt get install libswscale dev sudo apt get install libpostproc dev sudo apt get install liba52 dev sudo apt get install libxcb xv0 dev 然后执行下面的命令 configure disable lua disable mad disable avcodec disable avformat disable swscale disable postproc disable a52 然后执行make">VLC的linux源代码 编译方法为: 1 解压 2 安装vlc依赖的库 #sudo apt get build dep vlc 3 安装必须的工具包否则后面会出错 #apt get install autoconf automake libtool git subversion 4 安装最新的VLC #cd home git work #git clone git: git videolan org vlc g [更多]

2014-05-02

深度学习基础教程

本教程将阐述无监督特征学习和深入学习的主要观点。通过学习,你也将实现多个功能 学习/深度学习算法,能看到它们为你工作,并学习如何应用/适应这些想法到新问题上。 本教程假定机器学习的基本知识(特别是熟悉的监督学习,逻辑回归,梯度下降的想法)

2014-04-10

Geoffrey Hinton 深度学习 培训材料

Geoffrey Hinton 的深度学习 培训材料。如果不知道Geoffrey Hinton,就google一下,深度学习之父

2014-04-10

微软 深度学习 培训材料

深度学习是一个越来越热门的技术,这是微软 深度学习 的一个培训材料。值得一看

2014-04-10

VLC 播放器源代码

VLC 播放器源代码 经过编译后,可以生成一个完整的视频播放器

2014-04-10

Handbook of Face Recognition 李子青-人脸识别技术

中科院(中国科学院)自动化所,模式识别国家重点实验室 牛人李子青写的一本专著。,是人脸识别的经典之作。值得学习模式识别的相关技术的深入学习 人脸识别应用-李子青- Handbook of Face Recognition

2014-04-10

openssl_对数组_加密解密完整示例

利用openssl_对数组_加密解密完整示例,本例子是中科院-信息安全国家重点实验室进行安防监控项目时使用的小例子。

2014-04-09

达芬奇培训资料

达芬奇培训资料 TM368 DM365 Ti

2014-03-26

达芬奇技术—数字图像-视频信号处理新平台

达芬奇技术 数字图像 视频信号处理新平台 DM368 DM642 Ti

2014-03-26

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

TA关注的人

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