首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

知其所以然之永不遗忘的算法

于是,我们仔细研读算法的每一步,甚至去证明算法的正确性,或者是去尝试优雅地实现这些算法。总之,我们会花费很大的时间精力去理解这些智慧的结晶。 然而,现在对于这些经典的算法你仍然了然于胸吗?...然而去Google了一下,立即发现了一个时间复杂度O(n)的算法,当时就被这神奇的解法所震撼到。它的代码十分简单,简单到一开始我根本就看不懂,不明白为什么这样子求出的就是最大的矩形。...接着我们来分析该矩形有什么特征,然后可以用下面两种方法之一来缩减问题的规模(因为这两种方法都不用找出所有的矩形一一比较)。...通过不断地对多个直方图的观察,发现面积最大的那个矩形好像都包含至少一个完整的bar,那么这条规律适用于所有的直方图吗?...至此我们找到了面积最大矩形的一个特性:各组成竖直块中至少有一个是完整的Bar。有了这条特性,我们再找面积最大的矩形时,就有了一个比较小的范围。

86570

Canvas 性能优化:脏矩形渲染

大家好,我是前端西瓜哥。 使用 Canvas 做图形编辑器时,我们需要自己维护自己的图形树,来保存图形的信息,并定义元素之间的关系。...我们改变画布中的某个图形,去更新画布,最简单的是清空画布,然后根据图形树将所有图形再绘制一遍,这在图形较少的情况下是没什么问题的。但如果图形数量很多,那绘制起来可能就出现卡顿了。...现在我们希望红球跟着光标进行移动,底层的绿球保存不动,该怎么做更新? 首先我们不考虑 Canvas 分层 的做法,因为我这里只是为了方便,使用了比较简单的场景。...脏矩形渲染简单来说,就是计算被改变的目标图形两帧所产生的包围盒(脏矩形),将该区域清空,然后将和脏矩形发生相交的所有图形在这个区域内重绘。...对于前面移动红球的场景,具体逻辑为: 计算红球在当前帧和下一帧所形成的包围盒,这个包围盒就是脏矩形; 遍历绿球的物理信息,计算它们的包围盒,取出和脏矩形发生相交的绿球; 将脏矩形区域清空; 将脏矩形设置为裁剪区域

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    来看这份严肃的交互分析!

    以往的iOS锁屏界面非常简单直接,但是来到今年的iOS10,情况发生非常大的变化,在开始认真严肃地为大家分析(tucao)之前我想先说明一些东西: 分析并写下这篇文章绝对不是为了黑苹果的设计大神们,因为我也不知道苹果的设计团队在做出这些决定的时候面对的是什么样的制约或有什么更加长远的目标...此文针对设计做分析,不是针对某人或某团队。 iOS10的锁屏界面的交互方式时常让我感到困惑,我想探究原因。...iOS10的锁屏界面用上了茫茫多的圆角矩形来承载你最近的未读消息。 向右滑动:消息并解锁后可以直接打开相应的app,这一点与之前的iOS系统相似。...我们的用户看知道向左滑动能够进入相机,而进入之后他又突然地不想拍照了,这时候他想退回到锁屏界面,你猜他会怎么做?...(如果你已经在控件中心,那么下拉出来的通知中心将无法向右横划到达控件中心) ?

    92460

    photoshop 选框和套索工具

    如果没有安装工具的,我有破解版安装的下载,点击这里即可。 安装好工具之后,下面就继续来看看这几个操作示例。 绘画横竖蚂蚁线 使用单行选框工具绘画横的蚂蚁线 ? ?...目前单纯画这样一条线好像没什么用,不要急。后续讲到选区内容的时候,就会需要将这几个线结合起来一起使用的了。...不过这种单纯取一条线的操作应该是不太常用的。 下面来继续看看其他工具。 绘画矩形蚂蚁线 下面来选择一下矩形选框工具。 ? 绘画普通的矩形 ?...好了,矩形大概都了解清楚了。将选择的区域复制黏贴出来看看。 复制黏贴矩形选择区域 ? ? 好了,下面来继续看看圆形选择工具。 绘画圆形蚂蚁线 首先选择椭圆选框工具,如下: ?...那么如果绘画过程,有些地方点错了,怎么删除呢? 在绘画过程,如果有地方点错了,按Delete键,就可以删除上一个点 那么知道了上面的几个技巧之后,来绘画抠出这个美女来看看。

    97120

    CSS 高阶小技巧 - 角向渐变的妙用!

    本文将介绍一个角向渐变的一个非常有意思的小技巧!...我们尝试使用 CSS 绘制如下图形: 在之前,类似的图案,其实我们有尝试过,在 单标签实现复杂的棋盘布局 一文中,我们用单标签实现了这样一个棋盘布局: 那么,本文有什么特殊之处呢?...本文,我们将尝试使用角向渐变,快速实现这个图形! 角向渐变的技巧 在此之前,我们先来学习角向渐变的这个技巧。...我们新增的渐变在最上层,也就是第一层渐变: background-size: 100px 100px 将整个页面切割成多份 100px x 100px 的方格 利用角向渐变实现了一个矩形图案 利用了上述技巧...,核心是 background-position: -2.5px -10px 将矩形图案显示在了大小为 100px x 100px 的方格的四个角 第二层角向渐变叠加,如法炮制即可: div {

    55450

    框架设计的想法

    如何开发一个框架,或者如何搭建,如何设计一个框架,很难教会一个新人,本文记录一些能用文字写的方法 本文我写了很久但是我发现很难用文字来描述,如何搭建一个框架,有什么套路。...一个进入调试模式的例子是如用户将基于此框架开发一个做几何形状的数学计算库,如果有调试开关,可以打开可视化效果,那这对于开发的效率有提升 在框架里面需要加入一些调试入口,在传输的类型等需要附加一些调试相关信息...,我尝试在下文使用多个例子来告诉大家什么是统一性设计。...在实现框架时,尽可能给定单位,比如我期望画出一个 10 像素的矩形,我在调用某个函数进行画矩形,这个函数里面的参数是 int 值,请问我是否应该传入 10 进去?...如果我期望画出的是一个 10 厘米的矩形呢?如果画矩形的方法没有告诉我参数的单位,那么只能按照经验进行猜测,而如果画矩形函数有明确给定参数类型是 Pixel 类型,那么我自然就了解需要传入的是像素。

    50420

    金山WPS2016春季实习校园招聘笔试&面试问题回忆

    下面给出本人的解题思路: (1)判断三个矩形有没有交集。这个是难点,该怎么做呢?...可以在x轴方向将三个矩形按x的大小从左到右排列,判断两两矩形在x轴方向是否有交集,如果有任意一对没有相交那么三个矩形没有交集。...同理,在y轴方向做同样的判断; (2)求出任意两个矩形的交集矩形,再将交集矩形与第三个矩形再求交集,可得最后的交集矩形。 有了正确和清晰的思路,就可以写代码了,下面给出本人的实现,可供网友参考。...rectA.y:rectB.y; //选最下面的矩形的y作为交集的y //选择左边矩形(x坐标较小者)的右边的作为交集矩形的右边,这样就可以求出交集矩形的宽度 resRect.w=rectA.x...rectA.x+rectA.w-resRect.x:rectB.x+rectB.w-resRect.x; //同理,选择上面矩形(y坐标较小者)的下边的作为交集矩形的下边,这样就可以求出交集矩形的高度

    69210

    计算机科学里最大的难题:居中显示

    我要说的是:每个人都知道如何把某个东西居中。小事一桩。如果你不知道怎么做,也有现成的知识供你查阅。 然而,如果我们查看下实际的应用程序就会发现,它们并没有使用这些方法。...图 标 图标就像是与文本排成一行的小矩形。因此,所有由文本和行高引起的问题这里也都存在。众所周知,将文本与旁边的图标对齐是一项艰巨的任务。...我们能做些什么:图标字体 不要再使用字体图标。 使用普通的图片格式。为了帮你做出决策,我画了下面这张图: 看看苹果公司怎么费力地将复选标记放入矩形内,以及将矩形放到文本标签旁: 然而他们还是失败了!...没有什么比对齐两个矩形更容易的了。没有什么比尝试对齐被任意数量空白包围的文本更困难的了。 这是一场我们赢不了的游戏。...我相信,只要我们齐心协力,就能找到把一个矩形套在另一个矩形里而又不会把它弄乱的方法。 就我个人而言,我希望生活在一个 UI 美丽而平衡的世界里。我相信你也是。最终,一切都是值得的。

    9710

    计算机科学里最大的难题:居中显示

    我要说的是:每个人都知道如何把某个东西居中。小事一桩。如果你不知道怎么做,也有现成的知识供你查阅。 然而,如果我们查看下实际的应用程序就会发现,它们并没有使用这些方法。...图 标 图标就像是与文本排成一行的小矩形。因此,所有由文本和行高引起的问题这里也都存在。众所周知,将文本与旁边的图标对齐是一项艰巨的任务。...我们能做些什么:图标字体 不要再使用字体图标。 使用普通的图片格式。为了帮你做出决策,我画了下面这张图: 看看苹果公司怎么费力地将复选标记放入矩形内,以及将矩形放到文本标签旁: 然而他们还是失败了!...没有什么比对齐两个矩形更容易的了。没有什么比尝试对齐被任意数量空白包围的文本更困难的了。 这是一场我们赢不了的游戏。 我们能做些什么:视觉补偿 作为开发人员,我们只能通过数学的方法实现矩形的完美对齐。...我相信,只要我们齐心协力,就能找到把一个矩形套在另一个矩形里而又不会把它弄乱的方法。 就我个人而言,我希望生活在一个 UI 美丽而平衡的世界里。我相信你也是。最终,一切都是值得的。

    11510

    转-------基于R-CNN的物体检测

    /(SA+SB-SI) 3、非极大值抑制 因为一会儿讲RCNN算法,会从一张图片中找出n多个可能是物体的矩形框,然后为每个矩形框为做类别分类概率: 就像上面的图片一样,定位一个车辆,最后算法就找出了一堆的方框...也就是总个过程分为三个程序:a、找出候选框;b、利用CNN提取特征向量;c、利用SVM进行特征向量分类。具体的流程如下图片所示: 后面我们将根据这三个过程,进行每个步骤的详细讲解。...VGG这个模型的特点是选择比较小的卷积核、选择较小的跨步,这个网络的精度高,不过计算量是Alexnet的7倍。...首先,反正CNN都是用于提取特征,那么我直接用Alexnet做特征提取,省去fine-tuning阶段可以吗?...还有另外一个疑问:CNN训练的时候,本来就是对bounding box的物体进行识别分类训练,是一个端到端的任务,在训练的时候最后一层softmax就是分类层,那么为什么作者闲着没事干要先用CNN做特征提取

    55420

    如何实现基于商圈和地标的位置搜索

    比如我打算去王府井溜达,提前订好吃饭的地方,就可以搜王府井附近有什么饭店,再比如我晚上去工人体育场看演唱会,提前订好住的地方,就可以搜索工人体育场附近有什么酒店。极大丰富了应用中的搜索场景。...商圈如何划定 地标不存在划定的问题,商圈的划定方式大体可以分为三类,多边形、矩形、圆形。 多边形 根据实际的商圈范围,划定边界,形成一个不规则形状。它的边界是由多个坐标点连线组成。 ?...矩形 使用矩形来划定商圈,但矩形存在一个问题,就是不精确,容易划大或者划小,可以通过多个矩形来解决,精确度次于多边形。 ?...判断一个坐标是否在这个商圈内时,直接判断测定点经纬度是否在矩形经纬度的范围内,多个矩形要判断多次。 圆形 使用圆形来划定商圈,圆形比较符合我们对商圈的理解,圈不就是圆嘛。...商圈搜索POI 接下来看一下如何根据商圈搜索POI,不同的划定方式实现是不一样的。 多边形 由于多边形的计算比较复杂,无法实时搜索。只能是将商圈和POI的关系提前建立好。 ?

    2.1K00

    基于haar特征+adboost分类器的人脸检测算法----haar特征

    基于统计的方法:将人脸看作一个整体的模式——二维像素矩阵,从统计的观点通过大量人脸图像样本构造人脸模式空间,根据相似度量来判断人脸是否存在。...图2 早期的haar特征 如图2所示,a垂直特征,b为水平特征,c为对角特征。a,b,c可以理解成为一个窗口,这个窗口将在图像中做步长为1的滑动,最终遍历整个图像。...Haar特征分为三类:边缘特征、线性特征、中心和对角线特征组合成特征模板。 ?...% 检测窗口宽度 W,H num = 24 % 检测窗口分划数 %% if mod(W,num)~=0 error('检测窗口宽度必须是分划数的整数倍...积分图的使用将haar特征值计算的复杂度由原来的与矩形像素数量相关降低为仅与积分图中几个数值相关,达到了提高检测速度的目的。 ?

    3.7K32

    来看这份严肃的交互分析!

    以往的iOS锁屏界面非常简单直接,但是来到今年的iOS10,情况发生非常大的变化,在开始认真严肃地为大家分析(tucao)之前我想先说明一些东西: 分析并写下这篇文章绝对不是为了黑苹果的设计大神们,因为我也不知道苹果的设计团队在做出这些决定的时候面对的是什么样的制约或有什么更加长远的目标...此文针对设计做分析,不是针对某人或某团队。 iOS10的锁屏界面的交互方式时常让我感到困惑,我想探究原因。...iOS10的锁屏界面用上了茫茫多的圆角矩形来承载你最近的未读消息。 向右滑动:消息并解锁后可以直接打开相应的app,这一点与之前的iOS系统相似。...我们的用户看知道向左滑动能够进入相机,而进入之后他又突然地不想拍照了,这时候他想退回到锁屏界面,你猜他会怎么做?...(如果你已经在控件中心,那么下拉出来的通知中心将无法向右横划到达控件中心) ?

    1K70

    在某个范围内随机生成一些数据_cut out删除造句

    大家好,又见面了,我是你们的朋友全栈君。 目录 1、Cutout 2、Random Erasing ---- 根据yolov4文献中提到的cutout数据增广方式,进行扩展阅读。...众所周知,Dropout随机隐藏一些神经元,最后的网络模型相当于多个模型的集成。类似于dropout的思路,这篇文章将drop用在了输入图片上,并且drop掉连续的区域——即矩形区域。...以下是一个简易的样例(灰色部分为drop掉的区域): 方法: 作者首先尝试通过一些可视化技术,发现图片高激活区域,对这些区域进行擦除。...但是在现实场景中,遮挡问题一直都是一个难以处理和解决的问题。为了更好的实现对遮挡数据的模拟,利用Random Erasing的方式,将原数据集中一部分保持原样,另外一部分随机擦除一个矩形区域。...3) 擦除的过程如下:通过均匀分布取样得到擦除矩形面积,以及长宽值。选择一个满足所有矩形部分都在图像内的左上角坐标,将这个矩形区域都设置为统一的和图像其他区域无关的纯色值。

    45220

    WebRender:让网页渲染如丝顺滑

    渲染器的工作 在关于 Stylo 的文章中,我讨论了浏览器如何将 HTML 和 CSS 转换为屏幕上的像素,并提到大多数浏览器通过五个步骤完成此操作。 可以将这五个步骤分成两部分来看。...但将绘制这点工作转移到 GPU 上,速度会更快。 GPU 加速绘制 因此,浏览器也开始将绘制工作转移到 GPU。 ? 这项转变工作仍在进行中。...不过,这些性能悬崖是可以规避的。 如何做到这一点呢?紧随3D 游戏引擎的脚步。 像游戏引擎一样使用 GPU 如果停止尝试猜测需要什么图层呢?如果不考虑区分绘制与合成,仅考虑每一帧绘制像素呢?...但 GPU 就是用来做这事的。 GPU 正是用于极端并行处理的。我在上一篇关于 Stylo 的文章中谈到过并行的问题。通过并行,机器可以同时执行多种操作。它可以一次完成的任务数量,取决于内核数量。...对几乎所有网页来说,页面的不同部分将需要使用不同的像素着色器。 在一次绘制中,着色器会作用于所有形状,所以通常需要将绘制工作分为多个组。这些称为批处理(batches)。

    3K30

    k近邻和kd树

    个点,将包含这 ? 个点的 ? 邻域记作 ? 在 ? 中根据分类决策规则(如多数表决)将 ? 划分到某个类别 ? 特殊地,当 ? 等于1时,相当于将输入实例 ? 划分到训练数据集中与 ?...最近的训练实例做预测; ? 等于 ? 时无论输入实例是什么,都简单地用训练实例中样本数最多的类别作为预测类别。 在应用中, ? 值在比较小的数值范围内取,并且结合交叉验证方法确定最优 ? 值。...维空间中的实例点进行存储以便对其进行快速检索的二叉树形数据结构。构造 ? 树相当于不断用垂直于坐标轴的超平面将 ? 维空间切分,构成一系列的 ? 维超矩形区域, ? 树上的每一个结点对应于一个 ?...维超矩形区域。该超矩形区域垂直于当前划分维度的坐标轴,并在该维度上将空间划分为两部分。 一、构造kd树 输入: ? 维空间数据集 ? ,其中 ? 输出: ? 树 构造对应包含 ? 的 ?...维空间的超矩形区域:以 ? 为坐标轴, ? 中所有实例的 ? 坐标的中位数为切分点将超矩形区域划分为两个子区域。此步生成深度为1的左、右结点:左子结点对应坐标 ?

    61120

    K近邻法(KNN)原理小结

    选择较小的k值,就相当于用较小的领域中的训练实例进行预测,训练误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是泛化误差会增大,换句话说,K值的减小就意味着整体模型变得复杂...一个极端是k等于样本数m,则完全没有分类,此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的类,模型过于简单。     ...这个方法的确简单直接,在样本量少,样本特征少的时候有效。但是在实际运用中很多时候用不上,为什么呢?...KNN算法之KD树实现原理     KD树算法没有一开始就尝试对测试样本分类,而是先对训练集建模,建立的模型就是KD树,建好了模型再对测试集做预测。...分割超平面x=7将整个空间分为两部分:x的部分为左子空间,包含3个节点={(2,3),(5,4),(4,7)};另一部分为右子空间,包含2个节点={(9,6),(8,1)}。

    1.2K50

    机器学习之K近邻(KNN)算法

    K值的选取:KNN算法决策结果很大程度上取决于K值的选择。选择较小的K值相当于用较小领域中的训练实例进行预测,训练误差会减小,但同时整体模型变得复杂,容易过拟合。...因此暴力计算只适合少量样本的简单模型,那么有没有什么方法适用于大样本数据,有效降低距离计算成本呢?那是当然的,我们下面主要介绍KD树和球树方法。...2.KD树原理 KD树算法没有一开始就尝试对测试样本进行分类,而是先对训练集建模,建立的模型就是KD树,建立好模型之后再对测试集做预测。...确定划分点:根据x维度上的值将数据排序,6个数据中x的中值为7,所以划分点数据为(7,2),该节点的分割超平面便是x=7直线。 确定左子空间和右子空间:分割超平面x=7将空间分为两部分。...x的部分为左子空间,包含节点为{(2,3),(5,4),(4,7)}。x>7的部分为右子空间,包含节点为{(9,6),(8,1)}。

    1.4K20

    奇妙的 CSS shapes(CSS图形)

    CSS3之前,我们能做的只有矩形,四四方方,条条框框。...CodePen Demo -- Clip-path 多边形过渡动画 图形变换动画 除此之外,我们还可以尝试,将一个完整的图形,分割成多个小图形,这也是 clip-path 的魅力所在,纯 CSS 的图形变换...也就是如果我希望从三角形过渡到矩形。...不过这里有个很大的问题,只是随机生成了 2000 个坐标点,然后使用 clip-path 将这些坐标点连接起来,并不是符合要求的多边形。...shape-outside 的本质 划重点,划重点,划重点。 所以,shape-outside 的本质其实是生成几何图形,并且裁剪掉其几何图形之外周围的区域,让文字能排列在这些被裁剪区域之内。

    1.5K50
    领券