自定义博客皮肤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,潜心算法

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

原创 分治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 96

原创 分治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 238

原创 滑动窗口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

原创 滑动窗口3:Leetcode 11 盛水最多的容器

题目要求:给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。这...

2021-11-13 22:15:56 808

原创 滑动窗口2:滑动窗口算法基本原理

学过计算机网络的同学都知道滑动窗口协议(Sliding Window Protocol),该协议是TCP协议的实现的核心策略之一,用于网络数据传输时的流量控制,以避免拥塞的发生。该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发一个分组就停下来等待确认。因此该协议可以加速数据的传输,提高网络吞吐量。事实上在与流量控制、熔断、限流、超时等场景下都会首先从滑动窗口的角度来思考问题,例如hystrix、sentinel等框架都使用了这种思想。滑动窗口算法也是一种思想,是双指针的拓展和延..

2021-11-13 17:34:27 1756

原创 滑动窗口1:双指针的基本思想

1.双指针的基本思想双指针,指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针)的指针进行扫描,从而达到相应的目的。换言之,双指针法充分使用了数组有序这一特征,从而在某些情况下能够简化一些运算。不过这里的指针并不是真正意义的指针,只是两个遍历数组的游标罢了。在链表中也可以使用双指针,定义了两个引用,也不算真正的指针。所以双指针只是一种思想的统称,没必要追究其名字。双指针有两种基本的策略,一个是快慢指针,从一头开始,一个走的快一个走

2021-11-13 17:04:50 601

原创 全面征服LeetCode-再肝200篇算法

距离上次发表100篇算法已经过去几个月了,从今天开始,再肝150篇算法,主要写高级算法问题。基础算法和高级算法什么区别呢?这个没有定论,我一般将以数据结构为基础进行简单变形得到的题目称为基础算法。而一些比较特殊的结构、比较复杂的问题,涉及一些典型思想的问题,都称为高级算法。练习算法最好的材料无疑是LeetCode,但是题目太多,一题题做要花很久的时间,所以我们还是按照专题,每次选择一些典型的题目集中分析,题目不在多,也不能太少,适中最好。目前高级算法我想到的主题如下。这个是目前大致的想法,后面会根据

2021-11-12 20:15:49 264

原创 一个通过链表构造队列的好问题

通过链表构造队列是一个算法基本功,之前我一段代码是这么写的:public class LinkQueue { private Node front; private Node rear; private int size; public LinkQueue() { this.front = new Node(0); this.rear = new Node(0); } /** * 入队 */

2021-11-09 19:03:19 562

原创 LeetCode113 路径总和II-将路径打印出来的两种方法

在上一题目中,既然找到是否存在路径了,那能把找到的路径打印出来吗?当然可以,这就是113题的要求。题目要求就不细说了,和112题完全一样,不同的是要将满足目标值的路径打印出来。我们同样可以有深度优先搜索和递归两种方式:1.深度优先法我们可以采用深度优先搜索的方式,枚举每一条从根节点到叶子节点的路径。当我们遍历到叶子节点,且此时路径和恰为目标和时,我们就找到了一条满足条件的路径。class Solution { List<List<Integer>> re

2021-11-06 00:09:58 256

原创 LeetCode112. 路径总和的两种解法

题目要求:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。叶子节点 是指没有子节点的节点。示例1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true如果上一题做清楚了,这道题就容易很多了。我们就看一下使用递归和广度优先搜索分别怎么做。1.递归法观.

2021-11-06 00:07:44 186

原创 LeetCode257 二叉树的所有路径的四种方法

题目要求:给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。示例:输入:root = [1,2,3,null,5]输出:["1->2->5","1->3"]这个题看上去还不知道怎么做是吗?我告诉你,至少有四种方法都能解决。首先,我们可以注意到右几个叶子结点,就有几条路径,那我们如何能找到叶子结点呢?深度优先、层次遍历是不是都可以?递归和迭代都可以?那组合一下自然就有很多种方式了。下面我们就认真分析每种方法的解决思路。通过本.

2021-11-05 23:59:59 786

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关注的人

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