Fork me on GitHub

JavaScript-初认识

JavaScript-初认识

1. 简单历史介绍

​ 在上个世纪的1995年,当时的网景公司 [曾经让微软感受到威胁的公司] 正凭借其Navigator浏览器成为Web时代开启时最著名的第一代互联网公司。

​ 由于网景公司希望能在静态HTML页面上添加一些动态效果,于是叫Brendan Eich这哥们在两周之内设计出了JavaScript语言。你没看错,这哥们只用了10天时间。

阅读更多...

建造者模式

建造者模式

前序

  • 建造者模式是一种创建型模式

mark

  • 提供了一种创建对象的最佳方式
  • 用来创建一些复杂对象,不需要用户知道具体的建造方式

设计模式-装饰者模式

设计模式-装饰者模式

装饰者模式(Decorator)

  • 装饰者模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),以透明动态的方式来动态扩展对象的功能,也是继承关系中一种代替方案
  • 装饰者模式与继承关系的目的都是要扩展对象的功能,但是装饰者模式可以提供比继承更多的灵活性。(减少代码的冗余)
  • 通过不同具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。

mark

  • Component: 抽象组件(可以是抽象类或者接口),被装饰的原始对象
  • ConcreteComponent:具体的实现类,被装饰的具体对象
  • Decorator : 抽象的装饰者,职责就是为了装饰我们的组件对象,内部一定要有一个指向组件的对象引用。
  • ConcreteDecoratorA:装饰者具体实现类,只对抽象装饰者做出具体实现
  • ConcreteDecoratorB:同上
阅读更多...

Leetcode-面试题57

Leecode-面试题57 - II. 和为s的连续正数序列

思路:滑动窗口

题目描述

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。

序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。

示例1:

1
2
输入:target = 9
输出:[[2,3,4],[4,5]]

示例2:

1
2
输入:target = 15
输出:[[1,2,3,4,5],[4,5,6],[7,8]]

限制条件:

1 <= target <= 10^5

Solution:

阅读更多...

Leetcode-994

Leecode-994 Rotting Oranges

思路:BFS

题目描述

  • 在一个二维的网格中,0代表空的网格,1代表新鲜的橘子,2代表腐烂的橘子
  • 每过一分钟,新鲜的橘子会被腐烂的橘子传染,传染方向来自上下左右
  • 如果有无法感染的橘子,最终返回-1
  • 如果全部感染,返回需要的分钟数(轮数)

Example1:

1
2
Input: [[2,1,1],[1,1,0],[0,1,1]]
Output: 4

Example2:

1
2
3
Input: [[2,1,1],[0,1,1],[1,0,1]]
Output: -1
Explanation: The orange in the bottom left corner (row 2, column 0) is never rotten, because rotting only happens 4-directionally.

Solution:BFS

  • 一开始,我们找出所有腐烂的橘子,将他们放入队列,作为第0层的节点。
  • 然后进行BFS遍历,每个节点的相邻节点可能是上下左右四个方向的节点,注意判断网格边界的特殊情况
  • 由于可能存在无法被感染的橘子,我们需要记录新鲜橘子的数量。在BFS中,每遍历到一个橘子(污染了一个橘子)就将新鲜橘子的数量减掉1。
阅读更多...
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信