二进制-位运算
之前对位运算了解较少,本科期间学习的二进制等内容也基本上遗忘的差不多了,今天在做这个题的时候用位运算会时间复杂度会有不错的表现,剑指 Offer 15. 二进制中1的个数,在本文中稍微记录一下,以便以后用到相关的内容重新搜索查看这部分。 1 二进制运算JavaScript内部默认将二进制、十六进制、 ...
阅读更多
常用的九种排序算法
排序算法,本文整理了之前个人学习中的九种常用的排序算法,用作个人引导复习使用,包括的方法如下图所示: 1. 冒泡排序(Bubble Sort)原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,做完后,最后的元素会是最大的数。所有 ...
阅读更多
二叉树的遍历问题-迭代和递归
1. 递归递归问题可以总结成递归三部曲,即递归函数的构建,递归终止条件的确定和单次递归函数的确立这三个方面;完成了这三方面的工作后,相关问题递归算法的实现会容易许多。下面递归来实现用二叉树的前序遍历: LeetCode 144.二叉树的前序遍历 var preorderTraversal = f ...
阅读更多
数据结构之堆排序
1.数据结构之堆排序堆是一种数据结构,本文实现的二叉堆,而堆先决条件是一颗完全二叉树,由完全二叉树性质来说,可以使用数组array存放;数组array第一个位置不放元素,从1开始,对后面下标i来说,后面下标对应的父节点为当前下标除以2后结果向下取整,左子节点为当前对下标2,右子节点为下标2+1,可以 ...
阅读更多
JavaScript中数字类型、条件判断相关问题
JavaScript中数字类型、条件判断相关问题最近刷题的时候遇到很多涉及到字符和Number类型的问题,这里主要说下遇到的Number问题: 1 数字类型的0在判断的时候是否,一般的时候都能注意到,但是注意判断的时候的处理,我觉得比较好的办法是判断的时候就别判断数字类型的东西,判断字符类型,这样 ...
阅读更多
读书笔记-JavaScript设计模式与开发实践-发布订阅模式/观察者模式
发布-订阅模式发布-订阅模式定义了对象间一对多的依赖关系,当一个对象的状态发生改变的时候,所有依赖他的对象都将会得到通知。JS中,用事件模型替代传统的发布-订阅模式。 DOM事件就基于发布订阅模式,比如用户点击body后触发弹窗,我们需要订阅body上的click事件,当按钮被点击的时候,body节 ...
阅读更多
读书笔记-JavaScript设计模式与开发实践-代理模式
代理模式代理模式是为一个对象提供一个代用品或者占位符,以便控制对它的访问。关键之处是当客户不方便直接访问一个对象的时候,提供一个对象来控制对这个对象的访问,客户上访问的实际上是代理对象,代理对象对客户的请求作出部分处理后再把请求转发给真正要请求的对象。 代理分为虚拟代理和保护代理,虚拟代理会把一些开 ...
阅读更多
遇到的ES6解构赋值问题
ES6对象解构赋值问题昨天在LeetCode中刷题的时候遇到了情景,让链表A为最长链表,如果A短需要把A、B两个链表头指针和长度交换,保证A是最长的。其中用到了ES6的对象解构赋值,但是出现了一个不能理解的问题,之前也看过好多,网上也好多人在争论,js行尾加不加分号,我之前一直是加的,或者在IDE上 ...
阅读更多
螺旋矩阵类问题
LeetCode 59. 螺旋矩阵 II题目为:给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1:输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 螺旋矩阵类问题,没有特别好的算法去 ...
阅读更多
读书笔记-JavaScript设计模式与开发实践-策略模式
策略模式:定义一系列的算法,并且一个个封装起来,使得他们可以相互替换(达成一个目的可以有多种不同的方法)。 设计模式的目的就是将算法中不变的部分和变的部分分隔开来。 1 传统面向对象的策略模式实现策略模式的程序至少由两部分组成。第一部分是一组策略类,封装了具体的算法,负责具体实现。第二部分是环境类 ...
阅读更多