From 99d864dcef6de6181da4174cab02a2a57a9474ba Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Wed, 21 Jul 2021 23:28:52 +0800 Subject: [PATCH 01/19] update angular --- README.md | 11 +- notes/Frontend/Angular.md | 880 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 884 insertions(+), 7 deletions(-) create mode 100644 notes/Frontend/Angular.md diff --git a/README.md b/README.md index 884141b2..fe4a7941 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@
-
+
@@ -116,12 +116,9 @@ ## 四、前端 - [前端知识体系](notes/Frontend/前端知识体系.md) -- Vue - - 第一个 Vue 应用程序 - - Vue-cli 脚手架 - - vue-router 路由 - - vuex 状态管理 -- Webpack +- [Angular 基础知识](notes/Frontend/Angular.md) + +
diff --git a/notes/Frontend/Angular.md b/notes/Frontend/Angular.md new file mode 100644 index 00000000..cafa8b39 --- /dev/null +++ b/notes/Frontend/Angular.md @@ -0,0 +1,880 @@ + + +# Angular + +#### 1.框架背景 + +Angular 是一个由 Google维护的开源JavaScript框架,用于在HTML和JavaScript中构建Web应用程序,是三大框架之首。 + +不管是1还是2,Angular最显著的特征就是其**整合性**。涵盖了M、V、C/VM等各个层面,不需要组合、评估其它技术就能完成大部分前端开发任务。这样可以有效降低决策成本,提高决策速度,对需要快速起步的团队是非常有帮助的。 + +由于它是从一个用来做原型的框架演化而来的,加上诞生时间很早(2009年,作为对比,jQuery诞生于2006年),当时生态不完善,连模块化机制都得自己实现。 + +但Angular 2就不同了,发布于2016年9月份,它是基于ES6来开发的,它的起点更高,整合了现代前端的各种先进理念,在框架、文档、工具等各个层面提供了全方位的支持 + +在Angular 中最具特色的就是**依赖注入**系统了,它把后端开发中用来解决复杂问题、实现高弹性设计的技术引入了前端 + + + +#### 2.Angular CLI + +##### 2.1 安装 + +​ Angular CLI用于简单,快速构建Angular2项目,只要掌握几行命令就能扣减前端架构。依赖于NodeJs和npm。 + +```jsx +//安装脚手架 +npm install -g angular-cli +//创建项目 +ng new project_name(项目名称) +//启动项目 +cd project_name +ng serve --open +``` + + + +##### 2.2 主要特性 + +1. Angular CLI 可以快速搭建框架,创建module,service,class,directive等; +2. 具有webpack的功能,代码分割,按需加载; +3. 代码打包压缩; +4. 模块测试; +5. 热部署,有改动立即重新编译,不用刷新浏览器;而且速度很快 +6. 有开发环境,测试环境,生产环境的配置,不用自己操心; +7. sass,less的预编译Angular CLI都会自动识别后缀来编译; +8. typescript的配置,Angular CLI在创建应用时都可以自己配置; +9. 在创建好的工程也可以做一些个性化的配置,webpack的具体配置还不支持,未来可能会增加; +10. Angular CLI创建的工程结构是最佳实践,生产可用; + + + +##### 2.3 创建module,component,service,class + +​ ![](E:\angular\1.png) + +​ + +#### 3.架构 + +##### 3.1 模块 + +​ 模块组件的特征在于可以用于执行单个任务的代码块。 您可以从代码(类)中导出值。 Angular应用程序被称为模块,并使用许多模块构建您的应用程序。 Angular 的基本构建块是可以从模块导出的**组件**类。 + +```js +export class AppComponent { + title = '朝夕教育'; +} + +``` + +##### 3.2 组件 + +组件是拥有模板的控制器类,主要处理页面上的应用程序和逻辑的视图。 组件可以拥有独立的样式。 +注册组件,使用 *@Component* 注释,可以将应用程序拆分为更小的部分。 + +###### 3.2.1 创建组件 + +使用ng命令`ng generate component `创建的组件会自动生成在`app.module`中的引用,推荐使用ng命令生成组件 + +```jsx +//快速创建 +ng g c xxx +``` + +```jsx +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +``` + +@Component最常用的几个选项: + +**selector**:这个 CSS 选择器用于在模板中标记出该指令,并触发该指令的实例化。 + +**template**:组件的内联模板 + +**templateUrl**:组件模板文件的 URL + +**styleUrls**:组件样式文件 + +**styles**:组件内联样式 + + + +###### 3.2.2 组件生命周期 + +​ Angular 会按以下顺序执行钩子方法。你可以用它来执行以下类型的操作。 + +| 钩子方法 | 用途 | 时机 | +| :------------------------ | :----------------------------------------------------------- | :----------------------------------------------------------- | +| `ngOnChanges()` | 当 Angular 设置或重新设置数据绑定的输入属性时响应。 该方法接受当前和上一属性值的 `SimpleChanges` 对象注意,这发生的非常频繁,所以你在这里执行的任何操作都会显著影响性能。 | 在 `ngOnInit()` 之前以及所绑定的一个或多个输入属性的值发生变化时都会调用。注意,如果你的组件没有输入,或者你使用它时没有提供任何输入,那么框架就不会调用 `ngOnChanges()`。 | +| `ngOnInit()` | 在 Angular 第一次显示数据绑定和设置指令/组件的输入属性之后,初始化指令/组件。 | 在第一轮 `ngOnChanges()` 完成之后调用,只调用**一次**。 | +| `ngDoCheck()` | 检测,并在发生 Angular 无法或不愿意自己检测的变化时作出反应。 | 紧跟在每次执行变更检测时的 `ngOnChanges()` 和 首次执行变更检测时的 `ngOnInit()` 后调用。 | +| `ngAfterContentInit()` | 当 Angular 把外部内容投影进组件视图或指令所在的视图之后调用。 | 第一次 `ngDoCheck()` 之后调用,只调用一次。 | +| `ngAfterContentChecked()` | 每当 Angular 检查完被投影到组件或指令中的内容之后调用 | `ngAfterContentInit()` 和每次 `ngDoCheck()` 之后调用 | +| `ngAfterViewInit()` | 当 Angular 初始化完组件视图及其子视图或包含该指令的视图之后调用 | 第一次 `ngAfterContentChecked()` 之后调用,只调用一次。 | +| `ngAfterViewChecked()` | 每当 Angular 做完组件视图和子视图或包含该指令的视图的变更检测之后调用。 | `ngAfterViewInit()` 和每次 `ngAfterContentChecked()` 之后调用。 | +| `ngOnDestroy()` | 每当 Angular 每次销毁指令/组件之前调用并清扫。 在这儿反订阅可观察对象和分离事件处理器,以防内存泄漏 | 在 Angular 销毁指令或组件之前立即调用。 | + +###### 3.2.3 组件交互 + +1. ​ **@Input** + + 父组件通过`@Input`给子组件绑定属性设置输入类数据 + + ```jsx + //父组件 + + + //子组件 + import { Component, Input } from '@angular/core'; + @Input() + name!: string; + ngOnInit(): void { + console.log(this.name) + } + ``` + +2. ​ **@Output** + + ​ 父组件给子组件传递一个事件,子组件通过`@Output`弹射触发事件 + + ```jsx + //父组件 + + + list:number[] = [1,2,3,4] + addListFun(num:number){ + this.list.push(num) + } + + //子组件 + import { Component, Output,EventEmitter } from '@angular/core'; + @Output() addList = new EventEmitter() + pushList(v:string){ + console.log(this.inpValue) + this.addList.emit(v) + } + ``` + +3. ​ **@ViewChild()** + + 通过`ViewChild`获取子组件实例,获取子组件数据 + + ```jsx + + + + + @ViewChild('myChild') child: any; + constructor() { } + + ngOnInit(): void { + } + getView(e:any){ + console.log(this.child) + this.child.setInpValue('我是一段数据') + } + ``` + + + +##### 3.3 模板 + +在 Angular 中,**模板**就是一块 HTML。在模板中,你可以通过一种特殊语法来使用 Angular 的许多功能 + +###### 3.3.1 插值语法 + +​ 所谓 "插值" 是指将表达式嵌入到标记文本中。 默认情况下,插值会用双花括号 `{{` 和 `}}` 作为分隔符 + +```js +

hello {{ name }}

+``` + +​ 花括号之间的文本通常是组件属性的名字。Angular 会把这个名字替换为响应组件属性的字符串值 + +​ 括号间的素材是一个**模板表达式**我们可以在`{{}}`内编写js运算 + +```jsx +

hello {{ 1+1 }}

+``` + +###### 3.3.2 属性绑定 + +1. **Attribute绑定** + + ```jsx +

hello {{ 1+1 }}

+ ``` + +2. **类绑定** + + ```jsx + //单一类绑定 +

hello {{ 1+1 }}

+ + //多重类绑定 +

hello {{ 1+1 }}

+

hello {{ 1+1 }}

+

hello {{ 1+1 }}

+ + //ngClass + export class AppComponent { + isActive = true; + } + +

hello {{ 1+1 }}

+ + ``` + +3. **样式绑定** + + ```jsx + //单一样式绑定 +

hello {{ 1+1 }}

+ + //带单位的单一样式绑定 +

hello {{ 1+1 }}

+ + //多重样式绑定 +

hello {{ 1+1 }}

+

hello {{ 1+1 }}

+ + //ngStyle + export class AppComponent { + isMax = false; + } +

hello {{ 1+1 }}

+

hello {{ 1+1 }}

+ ``` + +###### 3.3.3 条件判断 + +​ ***ngIf**是直接影响元素是否被渲染,而非控制元素的显示和隐藏 + +```jsx +export class AppComponent { + isMax = false; + isMin = false; +} +
Max title
+
Min title
+ +//解析完 + +
Max title
+
+ + + isMax为true + + + isMax为false + +``` + +###### 3.3.4 循环语句 + +​ 解析器会把 `let color`、`let i` 和 `let odd` 翻译成命名变量 `color`、`i` 和 `odd` + +微语法解析器接收of,会将它的首字母大写(Of),然后加上属性的指令名(ngFor)前缀,它最终生成的名字是 ngFor 的输入属性(colors) + +`NgFor` 指令在列表上循环,每个循环中都会设置和重置它自己的上下文对象上的属性。 这些属性包括 `index` 和 `odd` 以及一个特殊的属性名 `$implicit`(隐式变量) + +Angular 将 let-color 设置为此上下文中 $implicit 属性的值, 它是由 NgFor 用当前迭代中的 colors 初始化的 + +```jsx +export class AppComponent { + colors:Array = [ 'red', 'blue', 'yellow', 'green' ]; +} + +
+ {{odd}} + {{i}} + {{color}} +
+ +//解析完 + +
{{odd}} {{i}} {{color}}
+
+``` + +```jsx +export class AppComponent { + status = 1; +} + +
    +
  • 已支付
  • +
  • 订单已经确认
  • +
  • 已发货
  • +
  • 无效
  • +
+``` + +###### 3.3.5 事件绑定 + +​ Angular 的事件绑定语法由等号左侧括号内的目标事件名和右侧引号内的模板语句组成。目标事件名是 `click` ,模板语句是 `onSave()` + +事件对象通过`$event`传递 + +```jsx +export class AppComponent { + onSave(){ + console.log('点击了按钮') + } +} + + +``` + +###### 3.3.6 双向绑定 + +双向绑定是应用中的组件共享数据的一种方式。使用双向绑定绑定来侦听事件并在父组件和子组件之间同步更新值 + +ngModel指令**只对表单元素有效**,所以在使用之前需要导入`FormsModule`板块 + +```jsx +import { FormsModule } from '@angular/forms'; + +@NgModule({ + // 申明组件内用到的视图 + declarations: [ + AppComponent, + HelloComponent, + ], + //引入模块需要的类 + imports: [ + BrowserModule, + AppRoutingModule, + FormsModule + ], + //全局服务 + providers: [], + //根组件 + bootstrap: [AppComponent] +}) +``` + +```jsx +export class AppComponent { + userName=''; +} +
+ 输入: +

你输入了: {{userName}}

+
+``` + +###### 3.3.7 模板引用变量 + +模板变量可以帮助你在模板的另一部分使用这个部分的数据。使用模板变量,你可以执行某些任务,比如响应用户输入或微调应用的表单 + +在模板中,要使用井号 `#` 来声明一个模板变量。下列模板变量 `#userName` 语法在 `` 元素上声明了一个名为 `userName` 的变量 + +```html + +``` + +可以在组件模板中的任何地方引用某个模板变量 + +```jsx + + + +export class AppComponent { + callUserName(v){ + console.log(v) + } +} +``` + +Angular 根据你所声明的变量的位置给模板变量赋值: + +- 如果在组件上声明变量,该变量就会引用该组件实例。 +- 如果在标准的 HTML 标记上声明变量,该变量就会引用该元素。 +- 如果你在 `` 元素上声明变量,该变量就会引用一个 `TemplateRef` 实例来代表此模板。 + +###### 3.3.8 表单控件 + +使用表单控件有三个步骤。 + +1. 在你的应用中注册响应式表单模块。该模块声明了一些你要用在响应式表单中的指令。 +2. 生成一个新的 `FormControl` 实例,并把它保存在组件中。 +3. 在模板中注册这个 `FormControl`。 + +**注册响应式表单模块** + +要使用响应式表单控件,就要从 `@angular/forms` 包中导入 `ReactiveFormsModule`,并把它添加到你的 NgModule 的 `imports` 数组中。 + +```js +import { ReactiveFormsModule } from '@angular/forms'; + +@NgModule({ + imports: [ + // other imports ... + ReactiveFormsModule + ], +}) +export class AppModule { } +``` + +要注册一个表单控件,就要导入 `FormControl` 类并创建一个 `FormControl` 的新实例,将其保存为类的属性。 + +```js +import { Component } from '@angular/core'; +import { FormControl } from '@angular/forms'; + +@Component({ + selector: 'app-name-editor', + templateUrl: './name-editor.component.html', + styleUrls: ['./name-editor.component.css'] +}) +export class NameEditorComponent { + name = new FormControl(''); +} + +//使用这种模板绑定语法,把该表单控件注册给了模板中名为 name 的输入元素。这样,表单控件和 DOM 元素就可以互相通讯了:视图会反映模型的变化,模型也会反映视图中的变化 + + +

+ Value: {{ name.value }} +

+``` + +修改name值可以通过`FormControl` 提供的 `setValue()` 方法 + +```js +updateName() { + this.name.setValue('Tina'); +} +``` + +###### 3.3.9 表单控件分组 + +表单中通常会包含几个相互关联的控件。响应式表单提供了两种把多个相关控件分组到同一个输入表单中的方法 + +要将表单组添加到此组件中,请执行以下步骤。 + +1. 创建一个 `FormGroup` 实例。 +2. 把这个 `FormGroup` 模型关联到视图。 +3. 保存表单数据。 + +**创建一个 FormGroup 实例** + +在组件类中创建一个名叫 `loginForm` 的属性,并设置为 `FormGroup` 的一个新实例。要初始化这个 `FormGroup`,请为构造函数提供一个由控件组成的对象,对象中的每个名字都要和表单控件的名字一一对应 + +```js +import { Component } from '@angular/core'; +import { FormGroup, FormControl } from '@angular/forms'; + +@Component({ + selector: 'app-profile-editor', + templateUrl: './profile-editor.component.html', + styleUrls: ['./profile-editor.component.css'] +}) +export class ProfileEditorComponent { + loginForm = new FormGroup({ + userName: new FormControl(''), + password: new FormControl(''), + }); +} + +//模板渲染 +
+ + + + + +
+``` + + + +###### 3.3.10 表单验证 + +​ 表单元素添加`required`关键字表示必填,通过绑定`ngModel`的引用可以拿到到当前组件的信息,通过引用获取到验证的信息 + +```jsx +export class AppComponent { + fromData={ + name:'', + password:'' + }; + + subBtnFUn(obj){ + console.log(obj) + } +} + +
+ 账号: +
+ {{nameInp.valid }} +
+ 密码: +
+ {{pasInp.valid }} +
+ +
+``` + +我们还可以通过 **ngModel** 跟踪修改状态与有效性验证,它使用了三个 CSS 类来更新控件,以便反映当前状态。 + +| 状态 | 为 true 时的类 | 为 false 时的类 | +| :--------------- | :------------- | :-------------- | +| 控件已经被访问过 | `ng-touched` | `ng-untouched` | +| 控件值已经变化 | `ng-dirty` | `ng-pristine` | +| 控件值是有效的 | `ng-valid` | `ng-invalid` | + +###### 3.3.11 自定义表单验证 + +​ 先引入表单的一些内置依赖 + +```js +import { FormGroup, FormBuilder,Validators } from '@angular/forms'; + +//构造函数里注入FormBuilder +constructor(private fb:FormBuilder) { } + +//错误提醒数据 +formErrors = { + 'title': '', + 'content': '' +}; + + +//在组件类的初始化函数里对表单中的元素的校验进行定义,并调用表单的valueChanges方法,检测表单的输入的变化 +ngOnInit():void { + this.taskInfo.isComplete = 1; + this.tasksForm = this.fb.group({ + userName: ['', [Validators.required, + Validators.maxLength(18), + Validators.minLength(6) ] ], + password: ['', [this.passWordVal]], + phone: ['', [Validators.required,this.phoneVal],] + }); + + phoneVal(phone: FormControl): object { + const value = phone.value || ''; + if(!value) return {desc:'请输入手机号'} + const valid = /[0-9]{11}/.test(value); + return valid ? {} :{desc:'联系电话必须是11位数字'} + } + passWordVal(password:FormControl):object{ + const value = password.value || ''; + const valid = value.match(/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/); + return valid ? {} : {passwordValidator: {desc:'密码至少包含 数字和英文,长度6-20'}} + } +} +``` + +###### 3.3.12 管道 + +​ 管道的作用就是传输。不同的管道具有不同的作用。(其实就是处理数据) + +`angular`中自带的`pipe`函数 + +| 管道 | 功能 | +| ------------- | ------------------------------------------------------------ | +| DatePipe | 日期管道,格式化日期 | +| JsonPipe | 将输入数据对象经过JSON.stringify()方法转换后输出对象的字符串 | +| UpperCasePipe | 将文本所有小写字母转换成大写字母 | +| LowerCasePipe | 将文本所有大写字母转换成小写字母 | +| DecimalPipe | 将数值按照特定的格式显示文本 | +| CurrentcyPipe | 将数值进行货币格式化处理 | +| SlicePipe | 将数组或者字符串裁剪成新子集 | +| PercentPipe | 将数值转百分比格式 | + +`pipe`用法 + +- {{ 输入数据 | 管道 : 管道参数}} (其中‘|’是管道操作符) + +- 链式管道 {{ 输入数据 | date | uppercase}} + +- 管道流通方向自左向右,逐层执行 + + 使用脚手架命令:**ng g p test** + + ```js + import { Pipe, PipeTransform } from '@angular/core'; + + @Pipe({ + name: 'testTitle' + }) + export class TestPipe implements PipeTransform { + + transform(value: unknown, ...args: unknown[]): unknown { + console.log(value) + return 'title'; + } + } + + +

{{ 'Angular' | testTitle }}

+ + ``` + + + +##### 3.4 服务 + + angular中,把从组件内抽离出来的代码叫服务,服务的本质就是函数 + + 官方认为组件不应该直接获取或保存数据, 它们应该聚焦于展示数据,而把数据访问的职责委托给某个服务。而服务就充当着数据访问,逻辑处理的功能。把组件和服务区分开,以提高模块性和复用性。通过把组件中和视图有关的功能与其他类型的处理分离开,可以让组件类更加精简、高效。 + +使用命令ng g s xxx创建一个服务,通过**@Injectable()**装饰器标识服务。 + +```js +//导入Injectable装饰器 +import { Injectable } from '@angular/core'; +//使用Injectable装饰器声明服务 +@Injectable({ + //作用域设定,'root'表示默认注入,注入到AppModule里 + providedIn: 'root', +}) +export class TestService { +} + +``` + +组件中如何使用服务呢,必须将服务依赖注入系统、组件或者模块,才能够使用服务。我们可以用**注册提供商**和**根注入器**实现**。** + + 该服务本身是 CLI 创建的一个类,并且加上了 `@Injectable()` 装饰器。默认情况下,该装饰器是用 `providedIn` 属性进行配置的,它会为该服务创建一个提供商。 + + + +##### 3.5 依赖注入 + +​ 在这个例子中,`providedIn: 'root'` 指定 Angular 应该在根注入器中提供该服务,从而实现**根注入器**将服务注入,它就在整个应用程序中可用了**。** + +**providedIn**: + +​ 'root' :注入到AppModule,提供该服务,所有子组件都可以使用(推荐) + +​ null : 不设定服务作用域(不推荐) + +​ 组件名:只作用于该组件(懒加载模式) + +```js + +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class TestService { +} + + +import { Component, OnInit } from '@angular/core'; +import {HeroService} from '../hero.service' + +@Component({ + selector: 'app-test', + templateUrl: './test.component.html', + styleUrls: ['./test.component.scss'], +}) +export class TestComponent implements OnInit { + + constructor(private heroService:HeroService) { } + + ngOnInit(): void { + console.log(this.heroService.getHeroList()) + } +} +``` + +​ 也可以使用 `@Component` 或 `@Directive` 内部的 `providers: []`,为特定的组件子树提供服务,这也将导致创建多个服务实例(每个组件使用一个服务实例) + +```js + +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class TestService { +} + + +import { Component, OnInit } from '@angular/core'; +import {HeroService} from '../hero.service' + +@Component({ + selector: 'app-test', + templateUrl: './test.component.html', + styleUrls: ['./test.component.scss'], + providers: [HeroService] +}) +export class TestComponent implements OnInit { + + constructor(private heroService:HeroService) { } + + ngOnInit(): void { + console.log(this.heroService.getHeroList()) + } +} +``` + + + +##### 3.6 路由 + +​ 路由就是连接组件的筋络,它也是树形结构的.有了它,就可以在angular中实现路径的导航模式 + +可以把路由看成是一组规则,它决定了url的变化对应着哪一种状态,具体表现就是不同视图的切换 + +在angular中,路由是非常重要的组成部分, 组件的实例化与销毁,模块的加载,组件的某些生命周期钩子的发起,都是与它有关 + +###### 3.6.1 路由基本使用 + +**路由器**是一个调度中心,它是一套规则的列表,能够查询当前URL对应的规则,并呈现出相应的视图. + +**路由**是列表里面的一个规则,即路由定义,它有很多功能字段: + +- **path**字段,表示该路由中的URL路径部分 +- **Component**字段,表示与该路由相关联的组件 + +每个带路由的Angular应用都有一个路由器服务的单例对象,通过路由定义的列表进行配置后使用。 + +```js +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import {HomeComponent} from './home/home.component' + +const routes: Routes = [ + {path:'home',component:HomeComponent} +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } + +``` + +```jsx +//路由导航 +home + hello + +//组件渲染输出 + +``` + +上述具体的工作流程,可以举例简单描述为: + +- 当浏览器地址栏的URL变化时,路径部分`/home`满足了列表中path为"**home**"的这个路由定义,激活对应**HomeComponent**的实例,显示它的视图 +- 当应用程序请求导航到路径`/hello`时,符合了另外的规则,激活对应视图且展示内容,并将该路径更新到浏览器地址栏和历史 + +###### 3.6.2 路由嵌套 + +​ 父子路由嵌套配置: + +```js +const routes: Routes = [ + {path:'home', + component:HomeComponent, + children:[ + {path:'hello',component:HelloComponent} + ] + }, +]; +``` + +​ 在**home Component**内这是`router-outlet`路由出口,即可在**home** 路由内渲染子级路由 + +```jsx +//home template +

home Component

+hello + +``` + +​ 在非`home Component`内跳转到`/home/hello`路由需要写全路径 + +```jsx +//app template +

app Component

+hello + +``` + +​ + +###### 3.6.3 路由传参 + +- **query** + + 在a标签上添加一个参数queryParams,并通过`this.routerinfo.snapshot.queryParams`获取参数 + + ```jsx + hello + ``` + + ```js + import {ActivatedRoute} from '@angular/router'; + constructor(private routerinfo:ActivatedRoute) { } + + ngOnInit() { + //id为参数名字 + this.id=this.routerinfo.snapshot.queryParams["id"] + } + ``` + + + +- **params** + + 修改路由配置文件`path`,路由导航`a`标签`routerLink`后面数组的第二个参数为传递的值 + + 并且通过`subscribe`请阅的方式获取`name`参数 + + ```js + { + path: 'hello/:name', + component:HelloComponent, + }, + ``` + + ```jsx + //我们在后面添加/:name此时name即为传递的参数名字 + //a标签设置如下 + hello + ``` + + ```js + ngOnInit() { + this.routerinfo.params.subscribe((params:Params)=>{ + this.name=params['name'] + }) + } + ``` + + + + + + + + + + + From dce26d9497543e598b11f07f9620cc636068c749 Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Wed, 21 Jul 2021 23:35:10 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0toc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- notes/Frontend/Angular.md | 74 ++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 43 deletions(-) diff --git a/notes/Frontend/Angular.md b/notes/Frontend/Angular.md index cafa8b39..24315da9 100644 --- a/notes/Frontend/Angular.md +++ b/notes/Frontend/Angular.md @@ -1,8 +1,6 @@ - - # Angular -#### 1.框架背景 +## 1. 框架背景 Angular 是一个由 Google维护的开源JavaScript框架,用于在HTML和JavaScript中构建Web应用程序,是三大框架之首。 @@ -16,9 +14,9 @@ Angular 是一个由 Google维护的开源JavaScript框架,用于在HTML和Jav -#### 2.Angular CLI +## 2. Angular CLI -##### 2.1 安装 +### 2.1 安装 ​ Angular CLI用于简单,快速构建Angular2项目,只要掌握几行命令就能扣减前端架构。依赖于NodeJs和npm。 @@ -34,7 +32,7 @@ ng serve --open -##### 2.2 主要特性 +### 2.2 主要特性 1. Angular CLI 可以快速搭建框架,创建module,service,class,directive等; 2. 具有webpack的功能,代码分割,按需加载; @@ -49,15 +47,15 @@ ng serve --open -##### 2.3 创建module,component,service,class +### 2.3 创建module,component,service,class + -​ ![](E:\angular\1.png) ​ -#### 3.架构 +## 3. 架构 -##### 3.1 模块 +### 3.1 模块 ​ 模块组件的特征在于可以用于执行单个任务的代码块。 您可以从代码(类)中导出值。 Angular应用程序被称为模块,并使用许多模块构建您的应用程序。 Angular 的基本构建块是可以从模块导出的**组件**类。 @@ -68,12 +66,12 @@ export class AppComponent { ``` -##### 3.2 组件 +### 3.2 组件 组件是拥有模板的控制器类,主要处理页面上的应用程序和逻辑的视图。 组件可以拥有独立的样式。 注册组件,使用 *@Component* 注释,可以将应用程序拆分为更小的部分。 -###### 3.2.1 创建组件 +#### 3.2.1 创建组件 使用ng命令`ng generate component `创建的组件会自动生成在`app.module`中的引用,推荐使用ng命令生成组件 @@ -104,7 +102,7 @@ ng g c xxx -###### 3.2.2 组件生命周期 +#### 3.2.2 组件生命周期 ​ Angular 会按以下顺序执行钩子方法。你可以用它来执行以下类型的操作。 @@ -119,7 +117,7 @@ ng g c xxx | `ngAfterViewChecked()` | 每当 Angular 做完组件视图和子视图或包含该指令的视图的变更检测之后调用。 | `ngAfterViewInit()` 和每次 `ngAfterContentChecked()` 之后调用。 | | `ngOnDestroy()` | 每当 Angular 每次销毁指令/组件之前调用并清扫。 在这儿反订阅可观察对象和分离事件处理器,以防内存泄漏 | 在 Angular 销毁指令或组件之前立即调用。 | -###### 3.2.3 组件交互 +#### 3.2.3 组件交互 1. ​ **@Input** @@ -182,11 +180,11 @@ ng g c xxx -##### 3.3 模板 +### 3.3 模板 在 Angular 中,**模板**就是一块 HTML。在模板中,你可以通过一种特殊语法来使用 Angular 的许多功能 -###### 3.3.1 插值语法 +#### 3.3.1 插值语法 ​ 所谓 "插值" 是指将表达式嵌入到标记文本中。 默认情况下,插值会用双花括号 `{{` 和 `}}` 作为分隔符 @@ -202,7 +200,7 @@ ng g c xxx

hello {{ 1+1 }}

``` -###### 3.3.2 属性绑定 +#### 3.3.2 属性绑定 1. **Attribute绑定** @@ -251,7 +249,7 @@ ng g c xxx

hello {{ 1+1 }}

``` -###### 3.3.3 条件判断 +#### 3.3.3 条件判断 ​ ***ngIf**是直接影响元素是否被渲染,而非控制元素的显示和隐藏 @@ -276,7 +274,7 @@ export class AppComponent {
``` -###### 3.3.4 循环语句 +#### 3.3.4 循环语句 ​ 解析器会把 `let color`、`let i` 和 `let odd` 翻译成命名变量 `color`、`i` 和 `odd` @@ -316,7 +314,7 @@ export class AppComponent { ``` -###### 3.3.5 事件绑定 +#### 3.3.5 事件绑定 ​ Angular 的事件绑定语法由等号左侧括号内的目标事件名和右侧引号内的模板语句组成。目标事件名是 `click` ,模板语句是 `onSave()` @@ -332,7 +330,7 @@ export class AppComponent { ``` -###### 3.3.6 双向绑定 +#### 3.3.6 双向绑定 双向绑定是应用中的组件共享数据的一种方式。使用双向绑定绑定来侦听事件并在父组件和子组件之间同步更新值 @@ -370,7 +368,7 @@ export class AppComponent { ``` -###### 3.3.7 模板引用变量 +#### 3.3.7 模板引用变量 模板变量可以帮助你在模板的另一部分使用这个部分的数据。使用模板变量,你可以执行某些任务,比如响应用户输入或微调应用的表单 @@ -399,7 +397,7 @@ Angular 根据你所声明的变量的位置给模板变量赋值: - 如果在标准的 HTML 标记上声明变量,该变量就会引用该元素。 - 如果你在 `` 元素上声明变量,该变量就会引用一个 `TemplateRef` 实例来代表此模板。 -###### 3.3.8 表单控件 +#### 3.3.8 表单控件 使用表单控件有三个步骤。 @@ -457,7 +455,7 @@ updateName() { } ``` -###### 3.3.9 表单控件分组 +#### 3.3.9 表单控件分组 表单中通常会包含几个相互关联的控件。响应式表单提供了两种把多个相关控件分组到同一个输入表单中的方法 @@ -505,7 +503,7 @@ export class ProfileEditorComponent { -###### 3.3.10 表单验证 +#### 3.3.10 表单验证 ​ 表单元素添加`required`关键字表示必填,通过绑定`ngModel`的引用可以拿到到当前组件的信息,通过引用获取到验证的信息 @@ -542,7 +540,7 @@ export class AppComponent { | 控件值已经变化 | `ng-dirty` | `ng-pristine` | | 控件值是有效的 | `ng-valid` | `ng-invalid` | -###### 3.3.11 自定义表单验证 +#### 3.3.11 自定义表单验证 ​ 先引入表单的一些内置依赖 @@ -584,7 +582,7 @@ ngOnInit():void { } ``` -###### 3.3.12 管道 +#### 3.3.12 管道 ​ 管道的作用就是传输。不同的管道具有不同的作用。(其实就是处理数据) @@ -632,7 +630,7 @@ ngOnInit():void { -##### 3.4 服务 +### 3.4 服务 angular中,把从组件内抽离出来的代码叫服务,服务的本质就是函数 @@ -659,7 +657,7 @@ export class TestService { -##### 3.5 依赖注入 +### 3.5 依赖注入 ​ 在这个例子中,`providedIn: 'root'` 指定 Angular 应该在根注入器中提供该服务,从而实现**根注入器**将服务注入,它就在整个应用程序中可用了**。** @@ -734,7 +732,7 @@ export class TestComponent implements OnInit { -##### 3.6 路由 +### 3.6 路由 ​ 路由就是连接组件的筋络,它也是树形结构的.有了它,就可以在angular中实现路径的导航模式 @@ -742,7 +740,7 @@ export class TestComponent implements OnInit { 在angular中,路由是非常重要的组成部分, 组件的实例化与销毁,模块的加载,组件的某些生命周期钩子的发起,都是与它有关 -###### 3.6.1 路由基本使用 +#### 3.6.1 路由基本使用 **路由器**是一个调度中心,它是一套规则的列表,能够查询当前URL对应的规则,并呈现出相应的视图. @@ -784,7 +782,7 @@ export class AppRoutingModule { } - 当浏览器地址栏的URL变化时,路径部分`/home`满足了列表中path为"**home**"的这个路由定义,激活对应**HomeComponent**的实例,显示它的视图 - 当应用程序请求导航到路径`/hello`时,符合了另外的规则,激活对应视图且展示内容,并将该路径更新到浏览器地址栏和历史 -###### 3.6.2 路由嵌套 +#### 3.6.2 路由嵌套 ​ 父子路由嵌套配置: @@ -819,7 +817,7 @@ const routes: Routes = [ ​ -###### 3.6.3 路由传参 +#### 3.6.3 路由传参 - **query** @@ -868,13 +866,3 @@ const routes: Routes = [ } ``` - - - - - - - - - - From 7d982be40d153245bfdfad048da8361c3c7561ba Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Wed, 21 Jul 2021 23:40:29 +0800 Subject: [PATCH 03/19] Update README.md --- README.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index fe4a7941..3a083e9b 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,7 @@ - [前端知识体系](notes/Frontend/前端知识体系.md) - [Angular 基础知识](notes/Frontend/Angular.md) +- [ES6+ 语法全解析](http://es.xiecheng.live/) @@ -181,8 +182,6 @@ - - ## 五、数据库 - [MySQL](notes/MySQL.md) @@ -201,9 +200,9 @@ 一个开源的关系数据库,是从伯克利写的 POSTGRES 软件包发展而来的 -- MongoDB +- [InfluxDB](https://www.frankfeekr.cn/2019/07/24/influxdb-tutorial-start/) - 基于分布式文件存储的数据库 + 玩转时序数据库 @@ -256,11 +255,6 @@ 深入浅出 Kafka,将用最极简的语言带你走进 Kafka 的消息中间件世界 -- [玩转时序数据库 InfluxDB(一)初体验](https://www.frankfeekr.cn/2019/07/24/influxdb-tutorial-start/) - - - - 【说明】**分布式专题** 笔者也在学习中,这里列举了一些技能列表,笔者将局部更新。敬请期待 From 1d332419e1eae77f23daefc9fbb7f6027b2d8fb1 Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Wed, 21 Jul 2021 23:42:07 +0800 Subject: [PATCH 04/19] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 3a083e9b..3967faa3 100644 --- a/README.md +++ b/README.md @@ -107,9 +107,6 @@ ## 三、Python - [Python 语言基础](notes/Python/Python简介及基础语法.md) -- Scrapy 爬虫框架 -- Flask -- Django @@ -232,7 +229,6 @@ web前后端漏洞分析与防御,XSS 攻击、CSRF 攻击、DDoS 攻击、SQL 注入 -- Socket 网络编程 From c3f5ab2f5c3a6860f48be371089109da105ab7f1 Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Thu, 22 Jul 2021 00:08:56 +0800 Subject: [PATCH 05/19] =?UTF-8?q?Update=20=E6=8A=80=E6=9C=AF=E4=BA=A4?= =?UTF-8?q?=E6=B5=81=E7=BE=A4.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\212\200\346\234\257\344\272\244\346\265\201\347\276\244.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/notes/\346\212\200\346\234\257\344\272\244\346\265\201\347\276\244.md" "b/notes/\346\212\200\346\234\257\344\272\244\346\265\201\347\276\244.md" index eeb10141..441f6716 100644 --- "a/notes/\346\212\200\346\234\257\344\272\244\346\265\201\347\276\244.md" +++ "b/notes/\346\212\200\346\234\257\344\272\244\346\265\201\347\276\244.md" @@ -10,7 +10,7 @@ 这里没有广告,只有纯粹的技术问题分享,不定期的干货和学习资源分享 -
+
From 56e0c3c008d5c459576ce28b692597da5c87c3ca Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 27 Jul 2021 16:48:23 +0800 Subject: [PATCH 06/19] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3967faa3..88db835e 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,6 @@ -
From 51501ab6436486b8fe4cd3920b6c21bd3e431c40 Mon Sep 17 00:00:00 2001 From: Frank Date: Wed, 28 Jul 2021 21:42:17 +0800 Subject: [PATCH 07/19] Update README.md --- README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/README.md b/README.md index 88db835e..3afefe31 100644 --- a/README.md +++ b/README.md @@ -23,14 +23,6 @@ -## 技术学习清单 - -在这里,为你推荐了技术学习路上优质的学习书籍、学习课程。在推荐清单中将附带官网链接,图书则附京东和豆瓣链接。如果你有更好的学习资料,可以在下方留言,采纳后我会更新在文章中。 - -**传送门**:https://mp.weixin.qq.com/s/gezKXKY4ezU0ZbvPybbbxQ - - - ## 前言 - [谈谈技术学习的一些方法论](https://www.frankfeekr.cn/2019/05/09/谈谈技术学习的一些方法论/) From 8e33f62eee476c09f17fba5f0dd07ae45c641ced Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Mon, 2 Aug 2021 22:27:44 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E4=B8=8E=E7=AE=97=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 +- .../LeetCode.md | 1 + .../data-structures-and-algorithms/README.md | 31 ++++++ .../assets/logo7.svg | 1 + .../assets/logo8.svg | 1 + ...60\346\215\256\347\273\223\346\236\204.md" | 0 ...27\346\263\225\346\200\235\346\203\263.md" | 2 + ...04\344\270\216\347\256\227\346\263\225.md" | 101 ++++-------------- 8 files changed, 59 insertions(+), 81 deletions(-) create mode 100644 notes/data-structures-and-algorithms/LeetCode.md create mode 100644 notes/data-structures-and-algorithms/README.md create mode 100644 notes/data-structures-and-algorithms/assets/logo7.svg create mode 100644 notes/data-structures-and-algorithms/assets/logo8.svg create mode 100644 "notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" create mode 100644 "notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" diff --git a/README.md b/README.md index 3967faa3..d86d1d3c 100644 --- a/README.md +++ b/README.md @@ -421,7 +421,6 @@ Copyright (c) 2021-present, Frank Lam -

在颠覆世界的同时,也要好好关照自己。 @@ -434,5 +433,5 @@ Copyright (c) 2021-present, Frank Lam from zero to hero.

-
+
diff --git a/notes/data-structures-and-algorithms/LeetCode.md b/notes/data-structures-and-algorithms/LeetCode.md new file mode 100644 index 00000000..a98174fb --- /dev/null +++ b/notes/data-structures-and-algorithms/LeetCode.md @@ -0,0 +1 @@ +# LeetCode \ No newline at end of file diff --git a/notes/data-structures-and-algorithms/README.md b/notes/data-structures-and-algorithms/README.md new file mode 100644 index 00000000..3f8f6df4 --- /dev/null +++ b/notes/data-structures-and-algorithms/README.md @@ -0,0 +1,31 @@ +
+ +# 数据结构与算法 + +## 学习路径 + +| 部分 | 章节 | 概要 | +| :--- | :---------------------------------- | :--------------------------------------------------- | +| Ⅰ | [数据结构](数据结构.md) | 线性表、栈和队列、树和二叉树等经典数据结构 | +| Ⅱ | [算法思想](算法思想.md) | 排序算法、动态规划、递归、回溯法、贪心算法等经典算法 | +| Ⅲ | [LeetCode 题解](LeetCode 题解.md) | LeetCode 热题 HOT 100 | + + + +## 参考资料 + +- 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 + https://leetcode-cn.com/problemset/all + + + +## 学习课程 + +| 课程 | 推荐 | +| ------------------------------------------------------------ | ----------------------------------------- | +| [【慕课网】刘宇波:玩转数据结构,从入门到进阶](https://coding.imooc.com/class/207.html) | 数据结构从底层到实现,浅显易懂 | +| [【慕课网】刘宇波:程序员的内功修炼,学好算法与数据结构](https://coding.imooc.com/class/71.html) | 程序员的内功修炼,强烈推荐 | +| [【慕课网】刘宇波:玩转算法面试 leetcode题库分门别类详细解析](https://coding.imooc.com/class/82.html) | LeetCode 刷题入门,强烈推荐 | +| [【极客时间】覃超:算法面试通关40讲](https://time.geekbang.org/course/intro/130) | 市面上比较新的课程,推荐 | +| [【慕课网】刘宇波:看得见的算法 7个经典应用诠释算法精髓](https://coding.imooc.com/class/138.html) | 通过7款经典好玩游戏,真正将算法用于实际开 | + diff --git a/notes/data-structures-and-algorithms/assets/logo7.svg b/notes/data-structures-and-algorithms/assets/logo7.svg new file mode 100644 index 00000000..bfc750fb --- /dev/null +++ b/notes/data-structures-and-algorithms/assets/logo7.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/notes/data-structures-and-algorithms/assets/logo8.svg b/notes/data-structures-and-algorithms/assets/logo8.svg new file mode 100644 index 00000000..49e3c852 --- /dev/null +++ b/notes/data-structures-and-algorithms/assets/logo8.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git "a/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" new file mode 100644 index 00000000..e69de29b diff --git "a/notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" "b/notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" new file mode 100644 index 00000000..75410cfc --- /dev/null +++ "b/notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" @@ -0,0 +1,2 @@ +# 算法思想 + diff --git "a/notes/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" "b/notes/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" index 8353d27d..74a71393 100644 --- "a/notes/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" +++ "b/notes/\346\225\260\346\215\256\347\273\223\346\236\204\344\270\216\347\256\227\346\263\225.md" @@ -1,73 +1,6 @@ - - -- [前言](#前言) -- [第一部分:数据结构](#第一部分数据结构) - - [一、线性表](#一线性表) - - [二、栈和队列](#二栈和队列) - - [三、树和二叉树](#三树和二叉树) - - [1. 红黑树](#1-红黑树) - - [2. 二叉树](#2-二叉树) - - [二分查找法](#二分查找法) - - [二叉树遍历](#二叉树遍历) - - [3. 二分搜索树](#3-二分搜索树) - - [深度优先遍历(前序、中序、后序遍历)](#深度优先遍历前序中序后序遍历) - - [广度优先遍历(层序遍历)](#广度优先遍历层序遍历) - - [4. AVL树](#4-avl树) - - [5. B和B+](#5-b和b) - - [四、字符串和数组](#四字符串和数组) -- [第二部分:算法思想](#第二部分算法思想) - - [一、排序](#一排序) - - [1. 选择排序(Selection Sort)](#1-选择排序selection-sort) - - [2. 插入排序(Insertion Sort)](#2-插入排序insertion-sort) - - [3. 冒泡排序(Bubble Sort)](#3-冒泡排序bubble-sort) - - [4. 希尔排序(Shell Sort)](#4-希尔排序shell-sort) - - [5. 归并排序(Merge Sort)](#5-归并排序merge-sort) - - [6. 快速排序(Quick Sort)](#6-快速排序quick-sort) - - [1. 普通快速排序](#1-普通快速排序) - - [2. 双路快速排序](#2-双路快速排序) - - [3. 三路快速排序](#3-三路快速排序) - - [7. 堆排序(Heap Sort)](#7-堆排序heap-sort) - - [1. 堆](#1-堆) - - [2. 上浮和下沉](#2-上浮和下沉) - - [3.插入元素](#3插入元素) - - [4. 删除最大元素](#4-删除最大元素) - - [5. 堆排序](#5-堆排序) - - [6. 堆排序的应用——Top K问题](#6-堆排序的应用top-k问题) - - [8. 计数排序和流排序](#8-计数排序和流排序) - - [9. 排序算法总结](#9-排序算法总结) - - [二、递归和回溯法](#二递归和回溯法) - - [1. 例题](#1-例题) - - [2. 排列问题](#2-排列问题) - - [3. 组合问题](#3-组合问题) - - [4. 回溯法的剪枝](#4-回溯法的剪枝) - - [5. 二维平面回溯法](#5-二维平面回溯法) - - [6. floodfill算法](#6-floodfill算法) - - [三、动态规划](#三动态规划) - - [1. 斐波那契数列](#1-斐波那契数列) - - [1.1 递归方式(自顶向下)](#11-递归方式自顶向下) - - [1.2 记忆化搜索(自底向上)](#12-记忆化搜索自底向上) - - [1.3 动态规划](#13-动态规划) - - [2. 背包问题](#2-背包问题) - - [(1)记忆化搜索](#1记忆化搜索) - - [(2)动态规划](#2动态规划) - - [(3)动态规划优化思路1](#3动态规划优化思路1) - - [(4)动态规划优化思路2](#4动态规划优化思路2) - - [(5)背包问题更多变种](#5背包问题更多变种) - - [3. 最长上升子序列](#3-最长上升子序列) - - [4. 最长公共子序列](#4-最长公共子序列) - - [四、贪心算法](#四贪心算法) - - [1. assign-cookies](#1-assign-cookies) -- [第三部分:面试指南](#第三部分面试指南) - - [1. 判单链表是否对称](#1-判单链表是否对称) - - [2. 合并两个有序数组成一个有序数组](#2-合并两个有序数组成一个有序数组) - - [3. 求二叉树中值为x的结点的层号](#3-求二叉树中值为x的结点的层号) - - [阿里面经OneNote](#阿里面经onenote) -- [第四部分:参考资料](#第四部分参考资料) - - # 前言 -本文将系统总结算法面试和经典数据结构相关知识点,在这里分成 【数据结构】 和 【算法】 两部分展开。这里将展示主要的核心知识点,关于代码面试的Leetcode习题请转向代码仓库:[Interview-code](https://github.com/frank-lam/interview_code) +本文将系统总结算法面试和经典数据结构相关知识点,在这里分成 【数据结构】 和 【算法】 两部分展开。这里将展示主要的核心知识点,关于代码面试的 Leetcode 习题请转向代码仓库:[Interview-code](https://github.com/frank-lam/interview_code) @@ -94,6 +27,8 @@ - 数组 - 链表 + + ## 二、栈和队列 @@ -168,9 +103,9 @@ private static int searchDfs(int[] data, int l, int r, int target) { } ``` -##### -### 4.. 二叉树遍历 + +### 4. 二叉树遍历 #### 深度优先遍历(前序、中序、后序遍历) @@ -300,6 +235,14 @@ public: +## 五、图结构 + +### 邻接矩阵 + +### 邻接表 + + + # 第二部分:算法思想 ## 一、排序 @@ -351,13 +294,15 @@ private static void swap(int[] arr, int i, int j) { ```java public static void sort(int[] arr) { - for (int i = 0; i < arr.length - 1; i++) { - for (int j = i + 1; j > 0; j--) { - if (arr[j] < arr[j - 1]) - swap(arr, j, j - 1); // 大量的交换会消耗时间 - else - break; + for (int i = 0; i < arr.length; i++) { + // 选择 arr[i...n) 中的最小值 + int minIndex = i; + for (int j = i + 1; j < arr.length; j++) { + if (arr[minIndex] > arr[j]) { + minIndex = j; + } } + swap(arr, i, minIndex); } } @@ -385,7 +330,7 @@ private static void swap(int[] arr, int i, int j) { **算法分析** -插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 +插入排序在实现上,通常采用 in-place 排序(即只需用到 O(1) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 @@ -1676,7 +1621,6 @@ void level_in_x(BinTree BT,char x,int level) # 第四部分:参考资料 - [数据结构与算法系列 目录 - 如果天空不死 - 博客园](http://www.cnblogs.com/skywang12345/p/3603935.html) -- [Interview-Notebook/算法.md at master · CyC2018/Interview-Notebook](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F) - [十大经典排序算法](https://www.cnblogs.com/onepixel/articles/7674659.html) - [VisuAlgo - visualising data structures and algorithms through animation](https://visualgo.net/en) - [Data Structure Visualization](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html) @@ -1684,4 +1628,3 @@ void level_in_x(BinTree BT,char x,int level) - From 9c49b034232d0e4713f5906951b8e8536fd9bf8e Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Mon, 2 Aug 2021 22:30:02 +0800 Subject: [PATCH 09/19] no message --- notes/data-structures-and-algorithms/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/notes/data-structures-and-algorithms/README.md b/notes/data-structures-and-algorithms/README.md index 3f8f6df4..63d36e78 100644 --- a/notes/data-structures-and-algorithms/README.md +++ b/notes/data-structures-and-algorithms/README.md @@ -4,11 +4,11 @@ ## 学习路径 -| 部分 | 章节 | 概要 | -| :--- | :---------------------------------- | :--------------------------------------------------- | -| Ⅰ | [数据结构](数据结构.md) | 线性表、栈和队列、树和二叉树等经典数据结构 | -| Ⅱ | [算法思想](算法思想.md) | 排序算法、动态规划、递归、回溯法、贪心算法等经典算法 | -| Ⅲ | [LeetCode 题解](LeetCode 题解.md) | LeetCode 热题 HOT 100 | +| 部分 | 章节 | 概要 | +| :--- | :--------------------------- | :--------------------------------------------------- | +| Ⅰ | [数据结构](数据结构.md) | 线性表、栈和队列、树和二叉树等经典数据结构 | +| Ⅱ | [算法思想](算法思想.md) | 排序算法、动态规划、递归、回溯法、贪心算法等经典算法 | +| Ⅲ | [LeetCode 题解](LeetCode.md) | LeetCode 热题 HOT 100 | From 8f3bae6ff453363574f9e5277d12c960e8923c6f Mon Sep 17 00:00:00 2001 From: FrankFeekr <1002039945@qq.com> Date: Wed, 11 Aug 2021 18:39:24 +0800 Subject: [PATCH 10/19] no message --- .../data-structures-and-algorithms/README.md | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/notes/data-structures-and-algorithms/README.md b/notes/data-structures-and-algorithms/README.md index 63d36e78..3fb34e62 100644 --- a/notes/data-structures-and-algorithms/README.md +++ b/notes/data-structures-and-algorithms/README.md @@ -1,8 +1,10 @@ -
- # 数据结构与算法 -## 学习路径 +> 欢迎来到数据结构与算法的世界,带你从基础的数据结构入手层层深入 + + + +## 学习目录 | 部分 | 章节 | 概要 | | :--- | :--------------------------- | :--------------------------------------------------- | @@ -10,22 +12,40 @@ | Ⅱ | [算法思想](算法思想.md) | 排序算法、动态规划、递归、回溯法、贪心算法等经典算法 | | Ⅲ | [LeetCode 题解](LeetCode.md) | LeetCode 热题 HOT 100 | +​ - -## 参考资料 +## 在线刷题 - 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 + https://leetcode-cn.com/problemset/all +- 牛客网-找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 + + https://www.nowcoder.com/ + + + +## 在线工具 + +- VisuAlgo - visualising data structures and algorithms through animation + + https://visualgo.net/en + +- Data Structure Visualization + + https://www.cs.usfca.edu/~galles/visualization/Algorithms.html + ## 学习课程 -| 课程 | 推荐 | -| ------------------------------------------------------------ | ----------------------------------------- | -| [【慕课网】刘宇波:玩转数据结构,从入门到进阶](https://coding.imooc.com/class/207.html) | 数据结构从底层到实现,浅显易懂 | -| [【慕课网】刘宇波:程序员的内功修炼,学好算法与数据结构](https://coding.imooc.com/class/71.html) | 程序员的内功修炼,强烈推荐 | -| [【慕课网】刘宇波:玩转算法面试 leetcode题库分门别类详细解析](https://coding.imooc.com/class/82.html) | LeetCode 刷题入门,强烈推荐 | -| [【极客时间】覃超:算法面试通关40讲](https://time.geekbang.org/course/intro/130) | 市面上比较新的课程,推荐 | -| [【慕课网】刘宇波:看得见的算法 7个经典应用诠释算法精髓](https://coding.imooc.com/class/138.html) | 通过7款经典好玩游戏,真正将算法用于实际开 | +| 课程 | 链接 | 代码 | 推荐 | +| ------------------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------- | +| 【慕课网】玩转数据结构 从入门到进阶(Java) | [官网](https://coding.imooc.com/class/chapter/207.html) | [代码](https://github.com/liuyubobobo/Play‑with‑Data‑Structures) | 数据结构从底层到实现,浅显易懂 | +| 【慕课网】算法与数据结构体系课(Java)
| [官网](https://class.imooc.com/datastructure#Anchor) | [代码](https://github.com/frank‑lam/Algorithm) | 《玩转数据结构 从入门到进阶》 - 升级版 | +| 【慕课网】程序员的内功修炼,学好算法与数据结构(C++) | [官网](https://coding.imooc.com/class/chapter/71.html) | [代码](https://github.com/liuyubobobo/Play‑with‑Algorithms) | 程序员的内功修炼,强烈推荐 | +| 【慕课网】玩转算法面试 leetcode 题库(C++) | [官网](https://coding.imooc.com/class/chapter/82.html) | [代码](https://github.com/liuyubobobo/Play‑with‑Algorithm‑Interview) | LeetCode 刷题入门,强烈推荐 | +| 【极客时间】覃超:算法面试通关40讲 | [官网](https://time.geekbang.org/course/intro/130) | / | 市面上比较新的课程,推荐 | +| 【慕课网】刘宇波:看得见的算法 7个经典应用诠释算法精髓 | 官网 | / | 通过7款经典好玩游戏,真正将算法用于实际开 | From 0d658bd97237779de83f84531a110c0e683ed365 Mon Sep 17 00:00:00 2001 From: FrankFeekr <1002039945@qq.com> Date: Wed, 11 Aug 2021 18:44:54 +0800 Subject: [PATCH 11/19] no message --- notes/data-structures-and-algorithms/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/notes/data-structures-and-algorithms/README.md b/notes/data-structures-and-algorithms/README.md index 3fb34e62..408b2ef5 100644 --- a/notes/data-structures-and-algorithms/README.md +++ b/notes/data-structures-and-algorithms/README.md @@ -1,6 +1,6 @@ # 数据结构与算法 -> 欢迎来到数据结构与算法的世界,带你从基础的数据结构入手层层深入 +> 欢迎来到数据结构与算法的世界,带你从基础数据结构层层深入。本章以 Java 代码为例,结合 LeetCode 题解示例进行数据结构学习。 @@ -47,5 +47,5 @@ | 【慕课网】程序员的内功修炼,学好算法与数据结构(C++) | [官网](https://coding.imooc.com/class/chapter/71.html) | [代码](https://github.com/liuyubobobo/Play‑with‑Algorithms) | 程序员的内功修炼,强烈推荐 | | 【慕课网】玩转算法面试 leetcode 题库(C++) | [官网](https://coding.imooc.com/class/chapter/82.html) | [代码](https://github.com/liuyubobobo/Play‑with‑Algorithm‑Interview) | LeetCode 刷题入门,强烈推荐 | | 【极客时间】覃超:算法面试通关40讲 | [官网](https://time.geekbang.org/course/intro/130) | / | 市面上比较新的课程,推荐 | -| 【慕课网】刘宇波:看得见的算法 7个经典应用诠释算法精髓 | 官网 | / | 通过7款经典好玩游戏,真正将算法用于实际开 | +| 【慕课网】刘宇波:看得见的算法 7个经典应用诠释算法精髓 | [官网](https://coding.imooc.com/class/chapter/138.html) | / | 通过7款经典好玩游戏,真正将算法用于实际开 | From d091be737726dd7e4ea19380cdf122d74f9e1b63 Mon Sep 17 00:00:00 2001 From: FrankFeekr <1002039945@qq.com> Date: Wed, 11 Aug 2021 22:03:18 +0800 Subject: [PATCH 12/19] no message --- ...60\346\215\256\347\273\223\346\236\204.md" | 42 + ...27\346\263\225\346\200\235\346\203\263.md" | 728 ++++++++++++++++++ 2 files changed, 770 insertions(+) diff --git "a/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" index e69de29b..387efef2 100644 --- "a/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" +++ "b/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" @@ -0,0 +1,42 @@ +- 字符串 + + - 标准库,解析,匹配等 + +- 线性表 + + - 数组 + + - 动态数组 + +- 链表 + +- 栈和队列 + +- 哈希表 + +- 树结构 + + - 二叉树 + + - 二分搜索树 + - 二叉树具有天然的递归结构 + + - 优先队列和堆 + + - 平衡二叉树 + + - AVL 树 + + - 红黑树 + + - 并查集 + + - 线段树 + + - Trie(字典树,前缀树) + + - B 和 B+ + +- 集合和映射 + + - Set / Map \ No newline at end of file diff --git "a/notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" "b/notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" index 75410cfc..28a34932 100644 --- "a/notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" +++ "b/notes/data-structures-and-algorithms/\347\256\227\346\263\225\346\200\235\346\203\263.md" @@ -1,2 +1,730 @@ # 算法思想 +## 一、排序算法 + +### 1. 选择排序(Selection Sort) + +选择出数组中的最小元素,将它与数组的第一个元素交换位置。再从剩下的元素中选择出最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。 + +![](https://images2017.cnblogs.com/blog/849589/201710/849589-20171015224719590-1433219824.gif) + +**代码实现** + +```java +public static void sort(int[] arr) { + for (int i = 0; i < arr.length; i++) { + // 寻找[i, n)区间里的最小值的索引 + int minIndex = i; + for (int j = i + 1; j < arr.length; j++) { + if(arr[minIndex] > arr[j]){ + minIndex = j; + } + } + swap( arr , i , minIndex); + } +} + +private static void swap(int[] arr, int i, int j) { + int t = arr[i]; + arr[i] = arr[j]; + arr[j] = t; +} +``` + +**算法分析** + +表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。理论上讲,选择排序可能也是平时排序一般人想到的最多的排序方法了吧。 + + + +### 2. 插入排序(Insertion Sort) + +插入排序从左到右进行,每次都将当前元素插入到左侧已经排序的数组中,使得插入之后左部数组依然有序。 + +第 j 元素是通过不断向左比较并交换来实现插入过程:当第 j 元素小于第 j - 1 元素,就将它们的位置交换,然后令 j 指针向左移动一个位置,不断进行以上操作。 + +![](https://images2017.cnblogs.com/blog/849589/201710/849589-20171015225645277-1151100000.gif) + +**代码实现** + +```java +public static void sort(int[] arr) { + for (int i = 0; i < arr.length; i++) { + // 选择 arr[i...n) 中的最小值 + int minIndex = i; + for (int j = i + 1; j < arr.length; j++) { + if (arr[minIndex] > arr[j]) { + minIndex = j; + } + } + swap(arr, i, minIndex); + } +} + +// 改进版插入排序(减少了数组元素的操作次数) +public static void better_sort(int[] arr) { + for (int i = 0; i < arr.length; i++) { + int e = arr[i]; + int j = i; + for (; j > 0; j--) { + if (e < arr[j - 1]) + arr[j] = arr[j - 1]; + else + break; + } + arr[j] = e; + } +} + +private static void swap(int[] arr, int i, int j) { + int t = arr[i]; + arr[i] = arr[j]; + arr[j] = t; +} +``` + +**算法分析** + +插入排序在实现上,通常采用 in-place 排序(即只需用到 O(1) 的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 + + + +### 3. 冒泡排序(Bubble Sort) + +通过从左到右不断交换相邻逆序的相邻元素,在一轮的交换之后,可以让未排序的元素上浮到右侧。 + +在一轮循环中,如果没有发生交换,就说明数组已经是有序的,此时可以直接退出。 + +![](https://images2017.cnblogs.com/blog/849589/201710/849589-20171015223238449-2146169197.gif) + +**代码实现** + +```java +private static void sort(int[] arr) { + for (int i = arr.length - 1; i > 0; i--) { // 从最后一位开始确定 + boolean swapped = false; + for (int j = 0; j < i; j++) { + if(arr[j] > arr[j+1]){ + swapped = true; + swap(arr,j,j+1); + } + } + if(!swapped) + return; + } +} + +private static void swap(int[] arr, int i, int j) { + int t = arr[i]; + arr[i] = arr[j]; + arr[j] = t; +} +``` + + + +### 4. 希尔排序(Shell Sort) + +1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫**缩小增量排序**。 + + + +**算法描述** + +先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,具体算法描述: + +- 选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1; +- 按增量序列个数k,对序列进行k 趟排序; +- 每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。 + +![](https://images2018.cnblogs.com/blog/849589/201803/849589-20180331170017421-364506073.gif) + +**代码实现** + +```java +// 希尔排序 +public static void sort(int[] arr) { + int n = arr.length; + for (int h = n / 2; h > 0; h = h / 2) { + // 内部是一个插入排序 + for (int i = 0; i < n; i = i + h) { + + int e = arr[i]; + int j = i; + for (; j > 0; j = j - h) { + if (e < arr[j - h]) + arr[j] = arr[j - h]; + else + break; + } + arr[j] = e; + } + } +} + + +// 希尔排序2 +public static void sort2(int[] arr) { + int n = arr.length; + // 计算 increment sequence: 1, 4, 13, 40, 121, 364, 1093... + int h = 1; + while (h < n / 3) h = 3 * h + 1; + + System.out.println(h); + + while (h >= 1) { + // h-sort the array + for (int i = h; i < n; i++) { + + // 对 arr[i], arr[i-h], arr[i-2*h], arr[i-3*h]... 使用插入排序 + int e = arr[i]; + int j = i; + for (; j >= h && e < arr[j - h]; j -= h) + arr[j] = arr[j - h]; + arr[j] = e; + } + + h /= 3; + } +} +``` + +**算法分析** + +对于大规模的数组,插入排序很慢,因为它只能交换相邻的元素,每次只能将逆序数量减少 1。 + +希尔排序的出现就是为了改进插入排序的这种局限性,它通过交换不相邻的元素,每次可以将逆序数量减少大于 1。 + +希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 + + + +### 5. 归并排序(Merge Sort) + +归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。 + +![](https://images2017.cnblogs.com/blog/849589/201710/849589-20171015230557043-37375010.gif) + +**代码实现** + +> 1.归并方法 +> +> 归并方法将数组中两个已经排序的部分归并成一个。 + +```java +private static void sort(int[] arr) { + __MergeSort(arr, 0, arr.length - 1); +} + +private static void __MergeSort(int[] arr, int l, int r) { + if (l >= r) + return; + int mid = (l + r) / 2; + __MergeSort(arr, l, mid); + __MergeSort(arr, mid + 1, r); + merge(arr, l, mid, r); +} + +// 将arr[l...mid]和arr[mid+1...r]两部分进行归并 +private static void merge(int[] arr, int l, int mid, int r) { + int[] aux = Arrays.copyOfRange(arr, l, r + 1); + + // 初始化,i指向左半部分的起始索引位置l;j指向右半部分起始索引位置mid+1 + int i = l, j = mid + 1; + for (int k = l; k <= r; k++) { + if (i > mid) { // 如果左半部分元素已经全部处理完毕 + arr[k] = aux[j - l]; + j++; + } else if (j > r) { // 如果右半部分元素已经全部处理完毕 + arr[k] = aux[i - l]; + i++; + } else if (aux[i - l] < aux[j - l]) { // 左半部分所指元素 < 右半部分所指元素 + arr[k] = aux[i - l]; + i++; + } else { // 左半部分所指元素 >= 右半部分所指元素 + arr[k] = aux[j - l]; + j++; + } + } +} +``` + +> 2.自底向上归并排序 + +```java +private static void sort(int[] arr) { + int N = arr.length; + int[] aux = new int[N]; + for (int sz = 1; sz < N; sz += sz) + for (int i = 0; i + sz < N; i += sz + sz) + merge(arr, i, i + sz - 1, Math.min(i + sz + sz - 1, N - 1)); +} +``` + + + +### 6. 快速排序(Quick Sort) + +快速排序可以说是20世纪最伟大的算法之一了。相信都有所耳闻,它的速度也正如它的名字那样,是一个非常快的算法了。当然它也后期经过了不断的改进和优化,才被公认为是一个值得信任的非常优秀的算法。 + +![](https://images2017.cnblogs.com/blog/849589/201710/849589-20171015230936371-1413523412.gif) + +**代码实现** + +#### 1. 普通快速排序 + +```java +// 递归使用快速排序,对arr[l...r]的范围进行排序 +public static void QuickSort(int[] arr,int l,int r){ + if(l>=r) + return; + int p = partition(arr,l,r); + QuickSort(arr,l,p-1); + QuickSort(arr,p+1,r); +} + +// 将数组通过p分割成两部分 +// 对arr[l...r]部分进行partition操作 +// 返回p, 使得arr[l...p-1] < arr[p] ; arr[p+1...r] > arr[p] +public static int partition(int[] arr, int l, int r) { + swap(arr, l, (int) (Math.random() % (r - l + 1)) + l); // 加入这一行变成随机快速排序 + + int v = arr[l]; + int j = l; + for(int i = j +1;i<=r;i++){ + if(arr[i] < v){ + j++; + swap(arr,i,j); + } + } + swap(arr,l,j); + return j; +} + +public static void swap(int[] arr,int i,int j) { + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; +} +``` + +快速排序是原地排序,不需要辅助数组,但是递归调用需要辅助栈。 + +快速排序最好的情况下是每次都正好能将数组对半分,这样递归调用次数才是最少的。这种情况下比较次数为 CN=2CN/2+N,复杂度为 O(NlogN)。 + +最坏的情况下,第一次从最小的元素切分,第二次从第二小的元素切分,如此这般。因此最坏的情况下需要比较 N2/2。为了防止数组最开始就是有序的,在进行快速排序时需要随机打乱数组。 + + + +#### 2. 双路快速排序 + +若果数组中含有大量重复的元素,则partition很可能把数组划分成两个及其不平衡的两部分,时间复杂度退化成O(n²)。这时候应该把小于v和大于v放在数组两端。 + +![](../pics/partition2.jpg) + +```java +// 双路快速排序的partition +// 返回p, 使得arr[l...p-1] < arr[p] ; arr[p+1...r] > arr[p] +private static int partition(int[] arr, int l, int r) { + + // 随机在arr[l...r]的范围中, 选择一个数值作为标定点pivot + // swap(arr, l, (int) (Math.random() % (r - l + 1)) + l); + + int v = arr[l]; + + // arr[l+1...i) <= v; arr(j...r] >= v + int i = l + 1, j = r; + while (true) { + // 注意这里的边界, arr[i].compareTo(v) < 0, 不能是arr[i].compareTo(v) <= 0 + // 思考一下为什么? + while (i <= r && arr[i] < v) + i++; + + // 注意这里的边界, arr[j].compareTo(v) > 0, 不能是arr[j].compareTo(v) >= 0 + // 思考一下为什么? + while (j >= l + 1 && arr[j] > v) + j--; + + // 对于上面的两个边界的设定, 有的同学在课程的问答区有很好的回答:) + // 大家可以参考: http://coding.imooc.com/learn/questiondetail/4920.html + if (i > j) + break; + + swap(arr, i, j); + i++; + j--; + } + + swap(arr, l, j); + + return j; +} + +// 递归使用快速排序,对arr[l...r]的范围进行排序 +private static void QuickSort2Ways(int[] arr, int l, int r) { + // 对于小规模数组, 使用插入排序 + if (l >= r) return; + int p = partition(arr, l, r); + QuickSort2Ways(arr, l, p - 1); + QuickSort2Ways(arr, p + 1, r); +} +``` + +#### 3. 三路快速排序 + +数组分成三个部分,大于v 等于v 小于v + +在具有大量重复键值对的情况下使用三路快排 + +![](../pics/partition3.jpg) + + + +```java +// 递归使用快速排序,对arr[l...r]的范围进行排序 +private static void QuickSort3Ways(int[] arr, int l, int r){ + + // 随机在arr[l...r]的范围中, 选择一个数值作为标定点pivot + swap( arr, l, (int)(Math.random()*(r-l+1)) + l ); + + int v = arr[l]; + + int lt = l; // arr[l+1...lt] < v + int gt = r + 1; // arr[gt...r] > v + int i = l+1; // arr[lt+1...i) == v + while( i < gt ){ + if( arr[i] < v){ + swap( arr, i, lt+1); + i ++; + lt ++; + } + else if( arr[i] > v ){ + swap( arr, i, gt-1); + gt --; + } + else{ // arr[i] == v + i ++; + } + } + swap( arr, l, lt ); + + QuickSort3Ways(arr, l, lt-1); + QuickSort3Ways(arr, gt, r); +} +``` + + + +### 7. 堆排序(Heap Sort) + +#### 1. 堆 + +堆的某个节点的值总是大于等于子节点的值,并且堆是一颗完全二叉树。 + +堆可以用数组来表示,因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。 + +![](../pics/heap.png) + +#### 2. 上浮和下沉 + +在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为**上浮(ShiftUp)**。 + +![](../pics/shiftup_heap.png) + +```java +private void shiftUp(int k){ + while( k > 1 && data[k/2] < data[k])){ + swap(k, k/2); + k /= 2; + } +} +``` + + + +类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为**下沉(Shift Down)**。一个节点如果有两个子节点,应当与两个子节点中最大那么节点进行交换。 + +![](../pics/shiftdown_heap.png) + +```java +private void shiftDown(int k){ + while( 2*k <= count ){ // 当前结点有左孩子 + int j = 2*k; // 在此轮循环中,data[k]和data[j]交换位置 + if( j+1 <= count && data[j+1] > data[j] ) + j ++; + // data[j] 是 data[2*k]和data[2*k+1]中的最大值 + + if( data[k] >= data[j] ) + break; + swap(k, j); + k = j; + } +} +``` + +#### 3.插入元素 + +将新元素放到数组末尾,然后上浮到合适的位置。 + +```java +// 向最大堆中插入一个新的元素 item +public void insert(Item item){ + assert count + 1 <= capacity; + data[count+1] = item; + count ++; + shiftUp(count); +} +``` + +#### 4. 删除最大元素 + +```java +// 从最大堆中取出堆顶元素, 即堆中所存储的最大数据 +public Item extractMax(){ + assert count > 0; + Item ret = data[1]; + + swap( 1 , count ); + count --; + shiftDown(1); + return ret; +} +``` + +#### 5. 堆排序 + +由于堆可以很容易得到最大的元素并删除它,不断地进行这种操作可以得到一个递减序列。如果把最大元素和当前堆中数组的最后一个元素交换位置,并且不删除它,那么就可以得到一个从尾到头的递减序列,从正向来看就是一个递增序列。因此很容易使用堆来进行排序。并且堆排序是原地排序,不占用额外空间。 + +```java +// 不使用一个额外的最大堆, 直接在原数组上进行原地的堆排序 +public class HeapSort { + + // 对整个arr数组使用HeapSort1排序 + // HeapSort1, 将所有的元素依次添加到堆中, 在将所有元素从堆中依次取出来, 即完成了排序 + // 无论是创建堆的过程, 还是从堆中依次取出元素的过程, 时间复杂度均为O(nlogn) + // 整个堆排序的整体时间复杂度为O(nlogn) + public static void sort1(Comparable[] arr){ + + int n = arr.length; + MaxHeap maxHeap = new MaxHeap(n); + for( int i = 0 ; i < n ; i ++ ) + maxHeap.insert(arr[i]); + + for( int i = n-1 ; i >= 0 ; i -- ) + arr[i] = maxHeap.extractMax(); + } + + + // 只通过shiftDown操作进行排序 + public static void sort2(Comparable[] arr){ + int n = arr.length; + + // 注意,此时我们的堆是从0开始索引的 + // 从(最后一个元素的索引-1)/2开始 + // 最后一个元素的索引 = n-1 + for( int i = (n-1-1)/2 ; i >= 0 ; i -- ) + shiftDown2(arr, n, i); + + for( int i = n-1; i > 0 ; i-- ){ // 这个的目的是让序列从小到大排序 + swap( arr, 0, i); + shiftDown2(arr, i, 0); + } + } + + // 交换堆中索引为i和j的两个元素 + private static void swap(Object[] arr, int i, int j){ + Object t = arr[i]; + arr[i] = arr[j]; + arr[j] = t; + } + + // 原始的shiftDown过程 + private static void shiftDown(Comparable[] arr, int n, int k){ + while( 2*k+1 < n ){ + int j = 2*k+1; + if( j+1 < n && arr[j+1].compareTo(arr[j]) > 0 ) + j += 1; + + if( arr[k].compareTo(arr[j]) >= 0 )break; + + swap( arr, k, j); + k = j; + } + } + + // 优化的shiftDown过程, 使用赋值的方式取代不断的swap, + // 该优化思想和我们之前对插入排序进行优化的思路是一致的 + private static void shiftDown2(Comparable[] arr, int n, int k){ + + Comparable e = arr[k]; + while( 2*k+1 < n ){ + int j = 2*k+1; + if( j+1 < n && arr[j+1].compareTo(arr[j]) > 0 ) + j += 1; + + if( e.compareTo(arr[j]) >= 0 ) + break; + + arr[k] = arr[j]; + k = j; + } + + arr[k] = e; + } + + // 测试 HeapSort + public static void main(String[] args) { + Integer[] arr = {10, 91, 8, 7, 6, 5, 4, 3, 2, 1}; + HeapSort.sort2(arr); + PrintHelper.printArray(arr); + } +} +``` + +#### 6. 堆排序的应用——Top K问题 + +例如,有1亿个浮点数,如何找出其中最大的10000个?(B326) + + + +### 8. 计数排序 + +https://www.cnblogs.com/freedom314/p/5847092.html + + + +### 9. 排序算法总结 + +| | 平均时间复杂度 | 原地排序 | 额外空间 | 稳定排序 | +| :------: | :------------: | :------: | :------: | :------: | +| 插入排序 | O(n^2) | √ | O(1) | √ | +| 归并排序 | O(nlogn) | × | O(n) | √ | +| 快速排序 | O(nlogn) | √ | O(logn) | × | +| 堆排序 | O(nlogn) | √ | O(1) | × | + +稳定排序:对于相等的元素,在排序后,原来靠前的元素依然靠前。相等元素的相对位置没有发生变化。 + +```java +// 可以通过⾃自定义⽐比较函数,让排序算法不不存在稳定性的问题。 +bool operator<(const Student& otherStudent){ + return score != otherStudent.score ? + score > otherStudent.score : + name < otherStudent.name; +} +``` + + + + + + + +![](../pics/sort_algorithm_analyze.png) + + + +## 二、二分查找法 + +Leetcode 704. + + + + + +## 三、递归和回溯法 + +- Leetcode 70. + +- Leetcode 17. + + + +## 四、分治的思想 + + + + + +## 五、动态规划 + +- 9-1 什么是动态规划 (20:27) + +- 9-2 第一个动态规划问题 Climbing Stairs (14:02) + + - [70. 爬楼梯](https://leetcode-cn.com/problems/climbing-stairs/) + + - 【作业】[120. 三角形最小路径和](https://leetcode-cn.com/problems/triangle/) + + - 【作业】[64. 最小路径和](https://leetcode-cn.com/problems/minimum-path-sum/) + +- 9-3 发现重叠子问题 Integer Break (25:10) + + - [343. 整数拆分](https://leetcode-cn.com/problems/integer-break/) + + - 【作业】279 + + - 【作业】91 + + - 【作业】62 + + - 【作业】63 + +- 9-4 状态的定义和状态转移 House Robber (27:19) + + - [198. 打家劫舍](https://leetcode-cn.com/problems/house-robber/) + + - 【作业】213 + + - 【作业】337 + + - 【作业】309 + +- 9-5 0-1背包问题 (32:37) + +- 9-6 0-1背包问题的优化和变种 (20:18) + +- 9-7 面试中的0-1背包问题 Partition Equal Subset Sum (27:34) + +- 9-8 LIS问题 Longest Increasing Subsequence (25:12) + + - [300. 最长递增子序列](https://leetcode-cn.com/problems/longest-increasing-subsequence/) + + - 【作业】[376. 摆动序列](https://leetcode-cn.com/problems/wiggle-subsequence/) + +- 9-9 LCS,最短路,求动态规划的具体解以及更多 (21:00) + - [1143. 最长公共子序列](https://leetcode-cn.com/problems/longest-common-subsequence/) + +- 9-10 动态规划的经典问题 + +- https://www.cxyzjd.com/article/qq_42874319/115740445 + +- + +## 六、贪心算法 08/10 + +- 10-1 贪心基础 Assign Cookies (12:12) + + - [455. 分发饼干](https://leetcode-cn.com/problems/assign-cookies/) + + - 【作业】[392. 判断子序列](https://leetcode-cn.com/problems/is-subsequence/) + +- 10-2 贪心算法与动态规划的关系 Non-overlapping Intervals (17:58) + - [435. 无重叠区间](https://leetcode-cn.com/problems/non-overlapping-intervals/) + +- 10-3 贪心选择性质的证明 (15:19) + + + +## 七、模式匹配 + +- KMP + +- RK + + + +## 八、搜索算法(深搜,广搜等) + + + +## 九、并查集 From 45288f38a8c7ca2b42c472c2b0e4b379ed4f0134 Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Sat, 14 Aug 2021 00:28:36 +0800 Subject: [PATCH 13/19] update --- README.md | 7 +++ .../data-structures-and-algorithms/README.md | 8 +++- ...60\346\215\256\347\273\223\346\236\204.md" | 48 +++++++++++++++++++ 3 files changed, 61 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d9720a7c..88d7a939 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,13 @@ +🔥🔥🔥 + +欢迎光临 LinTools 开发者的在线导航: https://tools.frankfeekr.cn + +如果你有更好的在线工具,[请点击留言](https://github.com/frank-lam/fullstack-tutorial/issues/65),持续更新! + + ## 前言 diff --git a/notes/data-structures-and-algorithms/README.md b/notes/data-structures-and-algorithms/README.md index 63d36e78..9594b650 100644 --- a/notes/data-structures-and-algorithms/README.md +++ b/notes/data-structures-and-algorithms/README.md @@ -1,5 +1,3 @@ -
- # 数据结构与算法 ## 学习路径 @@ -12,6 +10,12 @@ +## 思维导图 + +https://qe22azoqym.feishu.cn/mindnotes/bmncnEkHNqhGBDapbcrV3cQ4duc + + + ## 参考资料 - 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 diff --git "a/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" index e69de29b..dc5b8b4a 100644 --- "a/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" +++ "b/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" @@ -0,0 +1,48 @@ +# 数据结构 + +## 一、基础数据结构 + +### 字符串 + +- 标准库,解析,匹配等 + +### 线性表 + +- 数组 + +- 动态数组 + +### 栈和队列 + +### 链表 + +### 哈希表 + + + +## 二、高级数据结构 + +### 树和二叉树 + +- 二叉树 + +- 二分搜索树 + +- AVL 树 + +- B 和 B+ + +- 二分查找法 + - Leetcode 704. + +- 红黑树 + +### 集合和映射 + +### 优先队列和堆 + +### 线段树 + +### Trie + +### 并查集 \ No newline at end of file From c7929ac8af1d1eac0e7e5682c3678d19551beb2b Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Sat, 21 Aug 2021 16:58:43 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data-structures-and-algorithms/README.md | 2 +- .../assets/image-20210821164803357.png | Bin 0 -> 57251 bytes .../assets/image-20210821164814332.png | Bin 0 -> 57251 bytes .../assets/image-20210821164819266.png | Bin 0 -> 57251 bytes ...04\345\217\257\344\277\256\346\224\271.md" | 211 ++++++++++++++++ ...60\346\215\256\347\273\223\346\236\204.md" | 229 +++++++++++++++++- 6 files changed, 439 insertions(+), 3 deletions(-) create mode 100644 notes/data-structures-and-algorithms/assets/image-20210821164803357.png create mode 100644 notes/data-structures-and-algorithms/assets/image-20210821164814332.png create mode 100644 notes/data-structures-and-algorithms/assets/image-20210821164819266.png create mode 100644 "notes/data-structures-and-algorithms/leetcode/Leetcode 307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" diff --git a/notes/data-structures-and-algorithms/README.md b/notes/data-structures-and-algorithms/README.md index 3bcb6e78..e824a536 100644 --- a/notes/data-structures-and-algorithms/README.md +++ b/notes/data-structures-and-algorithms/README.md @@ -20,7 +20,7 @@ https://leetcode-cn.com/problemset/all -- 牛客网-找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 +- 牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决 https://www.nowcoder.com/ diff --git a/notes/data-structures-and-algorithms/assets/image-20210821164803357.png b/notes/data-structures-and-algorithms/assets/image-20210821164803357.png new file mode 100644 index 0000000000000000000000000000000000000000..1b18aee3b5bb258af6c6d4cef7996252857d7f00 GIT binary patch literal 57251 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 PQOHRtKPr%T{PKSR|C8)T literal 0 HcmV?d00001 diff --git a/notes/data-structures-and-algorithms/assets/image-20210821164814332.png b/notes/data-structures-and-algorithms/assets/image-20210821164814332.png new file mode 100644 index 0000000000000000000000000000000000000000..1b18aee3b5bb258af6c6d4cef7996252857d7f00 GIT binary patch literal 57251 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 PQOHRtKPr%T{PKSR|C8)T literal 0 HcmV?d00001 diff --git a/notes/data-structures-and-algorithms/assets/image-20210821164819266.png b/notes/data-structures-and-algorithms/assets/image-20210821164819266.png new file mode 100644 index 0000000000000000000000000000000000000000..1b18aee3b5bb258af6c6d4cef7996252857d7f00 GIT binary patch literal 57251 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 PQOHRtKPr%T{PKSR|C8)T literal 0 HcmV?d00001 diff --git "a/notes/data-structures-and-algorithms/leetcode/Leetcode 307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" "b/notes/data-structures-and-algorithms/leetcode/Leetcode 307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" new file mode 100644 index 00000000..7bc367cb --- /dev/null +++ "b/notes/data-structures-and-algorithms/leetcode/Leetcode 307. \345\214\272\345\237\237\345\222\214\346\243\200\347\264\242 - \346\225\260\347\273\204\345\217\257\344\277\256\346\224\271.md" @@ -0,0 +1,211 @@ +## [307. 区域和检索 - 数组可修改](https://leetcode-cn.com/problems/range-sum-query-mutable/) + +给你一个数组 `nums` ,请你完成两类查询,其中一类查询要求更新数组下标对应的值,另一类查询要求返回数组中某个范围内元素的总和。 + +实现 `NumArray` 类: + +- `NumArray(int[] nums)` 用整数数组 `nums` 初始化对象 +- `void update(int index, int val)` 将 `nums[index]` 的值更新为 `val` +- `int sumRange(int left, int right)` 返回子数组 `nums[left, right]` 的总和(即,`nums[left] + nums[left + 1], ..., nums[right]`) + + + +**示例:** + +``` +输入: +["NumArray", "sumRange", "update", "sumRange"] +[[[1, 3, 5]], [0, 2], [1, 2], [0, 2]] +输出: +[null, 9, null, 8] + +解释: +NumArray numArray = new NumArray([1, 3, 5]); +numArray.sumRange(0, 2); // 返回 9 ,sum([1,3,5]) = 9 +numArray.update(1, 2); // nums = [1,2,5] +numArray.sumRange(0, 2); // 返回 8 ,sum([1,2,5]) = 8 +``` + + + +**提示:** + +- `1 <= nums.length <= 3 * 104` +- `-100 <= nums[i] <= 100` +- `0 <= index < nums.length` +- `-100 <= val <= 100` +- `0 <= left <= right < nums.length` +- 最多调用 `3 * 104` 次 `update` 和 `sumRange` 方法 + + + +**提交代码:** + +```java +class NumArray { + public class SegmentTree { + + private E[] tree; + private E[] data; + private Merger merger; + + public SegmentTree(E[] arr, Merger merger){ + + this.merger = merger; + + data = (E[])new Object[arr.length]; + for(int i = 0 ; i < arr.length ; i ++) + data[i] = arr[i]; + + tree = (E[])new Object[4 * arr.length]; + buildSegmentTree(0, 0, arr.length - 1); + } + + // 在treeIndex的位置创建表示区间[l...r]的线段树 + private void buildSegmentTree(int treeIndex, int l, int r){ + + if(l == r){ + tree[treeIndex] = data[l]; + return; + } + + int leftTreeIndex = leftChild(treeIndex); + int rightTreeIndex = rightChild(treeIndex); + + // int mid = (l + r) / 2; + int mid = l + (r - l) / 2; + buildSegmentTree(leftTreeIndex, l, mid); + buildSegmentTree(rightTreeIndex, mid + 1, r); + + tree[treeIndex] = merger.merge(tree[leftTreeIndex], tree[rightTreeIndex]); + } + + public int getSize(){ + return data.length; + } + + public E get(int index){ + if(index < 0 || index >= data.length) + throw new IllegalArgumentException("Index is illegal."); + return data[index]; + } + + // 返回完全二叉树的数组表示中,一个索引所表示的元素的左孩子节点的索引 + private int leftChild(int index){ + return 2*index + 1; + } + + // 返回完全二叉树的数组表示中,一个索引所表示的元素的右孩子节点的索引 + private int rightChild(int index){ + return 2*index + 2; + } + + // 返回区间[queryL, queryR]的值 + public E query(int queryL, int queryR){ + + if(queryL < 0 || queryL >= data.length || + queryR < 0 || queryR >= data.length || queryL > queryR) + throw new IllegalArgumentException("Index is illegal."); + + return query(0, 0, data.length - 1, queryL, queryR); + } + + // 在以treeIndex为根的线段树中[l...r]的范围里,搜索区间[queryL...queryR]的值 + private E query(int treeIndex, int l, int r, int queryL, int queryR){ + + if(l == queryL && r == queryR) + return tree[treeIndex]; + + int mid = l + (r - l) / 2; + // treeIndex的节点分为[l...mid]和[mid+1...r]两部分 + + int leftTreeIndex = leftChild(treeIndex); + int rightTreeIndex = rightChild(treeIndex); + if(queryL >= mid + 1) + return query(rightTreeIndex, mid + 1, r, queryL, queryR); + else if(queryR <= mid) + return query(leftTreeIndex, l, mid, queryL, queryR); + + E leftResult = query(leftTreeIndex, l, mid, queryL, mid); + E rightResult = query(rightTreeIndex, mid + 1, r, mid + 1, queryR); + return merger.merge(leftResult, rightResult); + } + + // 将index位置的值,更新为e + public void set(int index, E e){ + + if(index < 0 || index >= data.length) + throw new IllegalArgumentException("Index is illegal"); + + data[index] = e; + set(0, 0, data.length - 1, index, e); + } + + // 在以treeIndex为根的线段树中更新index的值为e + private void set(int treeIndex, int l, int r, int index, E e){ + + if(l == r){ + tree[treeIndex] = e; + return; + } + + int mid = l + (r - l) / 2; + // treeIndex的节点分为[l...mid]和[mid+1...r]两部分 + + int leftTreeIndex = leftChild(treeIndex); + int rightTreeIndex = rightChild(treeIndex); + if(index >= mid + 1) + set(rightTreeIndex, mid + 1, r, index, e); + else // index <= mid + set(leftTreeIndex, l, mid, index, e); + + tree[treeIndex] = merger.merge(tree[leftTreeIndex], tree[rightTreeIndex]); + } + + @Override + public String toString(){ + StringBuilder res = new StringBuilder(); + res.append('['); + for(int i = 0 ; i < tree.length ; i ++){ + if(tree[i] != null) + res.append(tree[i]); + else + res.append("null"); + + if(i != tree.length - 1) + res.append(", "); + } + res.append(']'); + return res.toString(); + } + } + + public interface Merger { + E merge(E a, E b); + } + + private SegmentTree segTree; + + public NumArray(int[] nums) { + + if(nums.length != 0){ + Integer[] data = new Integer[nums.length]; + for(int i = 0 ; i < nums.length ; i ++) + data[i] = nums[i]; + segTree = new SegmentTree<>(data, (a, b) -> a + b); + } + } + + public void update(int i, int val) { + if(segTree == null) + throw new IllegalArgumentException("Error"); + segTree.set(i, val); + } + + public int sumRange(int i, int j) { + if(segTree == null) + throw new IllegalArgumentException("Error"); + return segTree.query(i, j); + } +} +``` \ No newline at end of file diff --git "a/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" "b/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" index 54b22bd6..d129388f 100644 --- "a/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" +++ "b/notes/data-structures-and-algorithms/\346\225\260\346\215\256\347\273\223\346\236\204.md" @@ -8,7 +8,7 @@ ### 线性表 -- 数组 +- 数组 - 动态数组 @@ -22,6 +22,225 @@ ## 二、高级数据结构 +### 1. 线段树 + +线段树(segment tree),顾名思义, 是用来存放给定区间(segment, or interval)内对应信息的一种数据结构。与树状数组(binary indexed tree)相似,线段树也用来处理数组相应的区间查询(range query)和元素更新(update)操作。与树状数组不同的是,线段树不止可以适用于区间求和的查询,也可以进行区间最大值,区间最小值(Range Minimum/Maximum Query problem)或者区间异或值的查询。 + +对应于树状数组,线段树进行更新(update)的操作为 O(logn),进行区间查询(range query)的操作也为 O(logn)。 + +![image-20210821164803357](assets/image-20210821164803357.png) + +在线可视化:https://visualgo.net/en/segmenttree + + + +#### 303. 区域和检索 - 数组不可变 (LeetCode) + + +https://leetcode-cn.com/problems/range-sum-query-immutable + +```java +class NumArray { + private int[] data; + + public NumArray(int[] nums) { + this.data = new int[nums.length]; + for (int i = 0; i < nums.length; i++) { + this.data[i] = nums[i]; + } + } + + public void update(int index, int val) { + this.data[index] = val; + } + + public int sumRange(int left, int right) { + int sum = 0; + for (int i = left; i <= right; i++) { + sum += this.data[i]; + } + return sum; + } +} +``` + + + +#### 307. 区域和检索 - 数组可修改 (LeetCode) + +https://leetcode-cn.com/problems/range-sum-query-mutable + +```java + +class NumArray { + public class SegmentTree { + private E[] tree; + private E[] data; + private Merger merger; + + public SegmentTree(E[] arr, Merger merger){ + + this.merger = merger; + + data = (E[])new Object[arr.length]; + for(int i = 0 ; i < arr.length ; i ++) + data[i] = arr[i]; + + tree = (E[])new Object[4 * arr.length]; + buildSegmentTree(0, 0, arr.length - 1); + } + + // 在treeIndex的位置创建表示区间[l...r]的线段树 + private void buildSegmentTree(int treeIndex, int l, int r){ + + if(l == r){ + tree[treeIndex] = data[l]; + return; + } + + int leftTreeIndex = leftChild(treeIndex); + int rightTreeIndex = rightChild(treeIndex); + + // int mid = (l + r) / 2; + int mid = l + (r - l) / 2; + buildSegmentTree(leftTreeIndex, l, mid); + buildSegmentTree(rightTreeIndex, mid + 1, r); + + tree[treeIndex] = merger.merge(tree[leftTreeIndex], tree[rightTreeIndex]); + } + + public int getSize(){ + return data.length; + } + + public E get(int index){ + if(index < 0 || index >= data.length) + throw new IllegalArgumentException("Index is illegal."); + return data[index]; + } + + // 返回完全二叉树的数组表示中,一个索引所表示的元素的左孩子节点的索引 + private int leftChild(int index){ + return 2*index + 1; + } + + // 返回完全二叉树的数组表示中,一个索引所表示的元素的右孩子节点的索引 + private int rightChild(int index){ + return 2*index + 2; + } + + // 返回区间[queryL, queryR]的值 + public E query(int queryL, int queryR){ + + if(queryL < 0 || queryL >= data.length || + queryR < 0 || queryR >= data.length || queryL > queryR) + throw new IllegalArgumentException("Index is illegal."); + + return query(0, 0, data.length - 1, queryL, queryR); + } + + // 在以treeIndex为根的线段树中[l...r]的范围里,搜索区间[queryL...queryR]的值 + private E query(int treeIndex, int l, int r, int queryL, int queryR){ + + if(l == queryL && r == queryR) + return tree[treeIndex]; + + int mid = l + (r - l) / 2; + // treeIndex的节点分为[l...mid]和[mid+1...r]两部分 + + int leftTreeIndex = leftChild(treeIndex); + int rightTreeIndex = rightChild(treeIndex); + if(queryL >= mid + 1) + return query(rightTreeIndex, mid + 1, r, queryL, queryR); + else if(queryR <= mid) + return query(leftTreeIndex, l, mid, queryL, queryR); + + E leftResult = query(leftTreeIndex, l, mid, queryL, mid); + E rightResult = query(rightTreeIndex, mid + 1, r, mid + 1, queryR); + return merger.merge(leftResult, rightResult); + } + + // 将index位置的值,更新为e + public void set(int index, E e){ + + if(index < 0 || index >= data.length) + throw new IllegalArgumentException("Index is illegal"); + + data[index] = e; + set(0, 0, data.length - 1, index, e); + } + + // 在以treeIndex为根的线段树中更新index的值为e + private void set(int treeIndex, int l, int r, int index, E e){ + + if(l == r){ + tree[treeIndex] = e; + return; + } + + int mid = l + (r - l) / 2; + // treeIndex的节点分为[l...mid]和[mid+1...r]两部分 + + int leftTreeIndex = leftChild(treeIndex); + int rightTreeIndex = rightChild(treeIndex); + if(index >= mid + 1) + set(rightTreeIndex, mid + 1, r, index, e); + else // index <= mid + set(leftTreeIndex, l, mid, index, e); + + tree[treeIndex] = merger.merge(tree[leftTreeIndex], tree[rightTreeIndex]); + } + + @Override + public String toString(){ + StringBuilder res = new StringBuilder(); + res.append('['); + for(int i = 0 ; i < tree.length ; i ++){ + if(tree[i] != null) + res.append(tree[i]); + else + res.append("null"); + + if(i != tree.length - 1) + res.append(", "); + } + res.append(']'); + return res.toString(); + } + } + + public interface Merger { + E merge(E a, E b); + } + + private SegmentTree segTree; + + public NumArray(int[] nums) { + + if(nums.length != 0){ + Integer[] data = new Integer[nums.length]; + for(int i = 0 ; i < nums.length ; i ++) + data[i] = nums[i]; + segTree = new SegmentTree<>(data, (a, b) -> a + b); + } + } + + public void update(int i, int val) { + if(segTree == null) + throw new IllegalArgumentException("Error"); + segTree.set(i, val); + } + + public int sumRange(int i, int j) { + if(segTree == null) + throw new IllegalArgumentException("Error"); + return segTree.query(i, j); + } +} +``` + + + ### 树和二叉树 - 二叉树 @@ -37,11 +256,17 @@ - 红黑树 + + ### 集合和映射 + + ### 优先队列和堆 -### 线段树 + + + ### Trie From 17f6f316b7996a02d1126c1c1772da35d3781e33 Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Thu, 30 Sep 2021 23:30:34 +0800 Subject: [PATCH 15/19] no message --- .../assets/image-20210821172111765.png | Bin 0 -> 47353 bytes ...\204\345\217\257\344\277\256\346\224\271.md" | 4 +++- ...\260\346\215\256\347\273\223\346\236\204.md" | 13 +++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 notes/data-structures-and-algorithms/assets/image-20210821172111765.png diff --git a/notes/data-structures-and-algorithms/assets/image-20210821172111765.png b/notes/data-structures-and-algorithms/assets/image-20210821172111765.png new file mode 100644 index 0000000000000000000000000000000000000000..5ab3b50e36c085a979c78fa5e75453263be82593 GIT binary patch literal 47353 zcmb@tcRba9_&v>(TXbp8m0$gfb1Oh>ztR(jkfk5{{Agi-x-|YX_kBzV!BVc`mQZj~eGGojyx}f6oTt;jJLYg@5 z;hT*^zWobWcjtN+9SO-THu7Jj(HOtBg*sH#>EN<@;t1t&=eA1PTIGfOvE@9ZE!AFB6nh2F4-yhho!2tP{M0=oMYosc zf~b-n3?Yzu1{Hr^juL+&LeaD5Tn0QRtO?D*J1%VU5!KZvIch z8g_&8dsO(CrQ<7W6H;<=DOd5m;J4?S?~P_WQ9}m_?RDz}*ooD-T=5^>iVN4qO~VHb z@w3%?^~FG)ZYXuKm$NF%a8h)cDc*EEJ+x5@43u6@4(xawc9NB)xpT_9wC`K0<#3<^ zd%;5Or6`^~M)2URo>6Si&RT)&Zw7wB>VI#^E)zJ1z^Y|CD$n4qklTDDe&0W-y zSyb6xU}IcansGy9ZUhz$C}(MmO;gn)L%hY_yWc`REbj7Q(X7hYkzGp-o^)kIu71LQ zX0-CLeLb7QHQ2kq!#VqfQR?1PO73Gl4U~)^VhDXs>xagEw5*T6|BpFIiT&~jEas>q zM5azXnV6d(S{|!bNqa#e!D_OSWkA?Z~j4rBFC-HEvh zjKn|J;6E41F2!oQ?M*9@OVpP*%xy#qC&s6!Mqu5I>RV_;*PtsvV98&RK>bYxM#Y||_ou@{b%5rkT{|QfpIY~;0 zR-xeO+VB)wu&*;!NIny4<^JoJ2bD@@WlB3w1nm zh8oAExX>>(gkEI5kvtQil9sGp7Lw(+A>;<$*l-!_=#|Li!F^dR?iQ)`aoqB8`;^Rw z@;bcB^FtJo;m!Ec^qfWd*B6xN@GnKjp3Ex!rS3V)%&VHmD0LXMJHrEsSe27clOC}C z{@a!Xinw;Ei06#hDrtG?{^xbqNHiV)Q(nQtH;hySDrrgD1twm*bA!R~W#Rv|8)A%7 zEsiKhEII9SjO_Ypv>F3~moZLh;9tkvGcjP2O2inp{M1YMm|^d%iw62Kg9q{B6}nLC z3x{m#faat)AVQW?h-4E6WS(X;oNO?hJ@`5?u~0K%BCD&LcIjDX51)0jw1a}t)U!px zgU%*`<9(x_WqM$Q|Ypx;PCy!Rc&o; zl{6(eId?3SG#VpWm4$qESZkk7M`Vk76_l3~zz6gi-EZY^y=i|oob{6H?!u`&7geiq zqTN_=hl9Yv*}+`zzxC)XoJ}nq@uH74H~m%& zv&8Wd3%`JX#lgnR($Z4<;r7B}o}kx;QO$fam|FwiHoUDCH@kE^|@g)cIAPPg7G9 zEn8ji*D9-W=kizya%3bJC4r)%t3^dcla=P^D=RCN-rE-RpTMQ`QA$d&0rw_kkcf+j zz+9Vcp*cG{OTYJo!rtCq!_+hp=Nenwp+_>SxwA8|ZiPut_=^&r<#nPw>cUONmIW2F zip!7WRaO$)*Bs}!ZVYg@rG)Mr?f%u&&5*&R?c2Bg-far=@C4&ga^)=?DyxYd>tk~0rq0>P z@9CO!e97RO-}W9Q?GzCeMNUpe88>;(gK~JN@bzl!$w59_{kJRH9fopeL%=&PL#3q> zWV+UXlM(oM-K;NOh!i50;!ZMp_QYyH!6tVM^Ro`d%&aVz?Y9*_eHVz=TFo-c80e-_ zzsN4T4O{H|?yLOnK-9vzYfeB&XmRpyeX`~W<*eVPIQFyPilDRA$$A$S0jF8~$gZSs zs{jkmFO9|}NeRR6U_;*0lI7pVOsum|oK0>31sINf&xXpT%4n4?NOJNWG702p^&Zqt$hz&pRTiFlZ}s>v9T_*N$> z7EX_Li6unBT?PetJzE^2?e5jrdfs9i&WLwe_|&oJYPJ7*KugKV-oA6%sV!cLF&K0LFpsu?pU2prUFA zC4(1Q^^^73L)1jZq6~&?_vCD{!R@B!+GI#57LiOctJuZq?qstMpTN^8jI6<8C1Xew zWVrb)Ep%yI#xe&Dc_hB z8HVFJlEr63m{oiYpeO2Jnl`q!*rJ|mQV{G=nubu@eE2K2w7k6Mcz@NrN-u?rq)qzz@6)#g2v0-^%FTAz7__IPw)i(!PnB(&dWZ#Zk?5~WYR=Zu%eC0*oYxiiD zm>vs|rJ|b~ADF7SkPF3vfyhg))qHt(gOBgLF|Ec*EPi!IvvYEWA#Jr9-$i=PcV2C< zI}XRA)X>xORvg=N&)tKFR!9TcCP~KE&kq%Zii_E3g78%yjkB&X z$tJS`Om+A2Duf7iN4KKW^A|10ly3^xdPso*L1x+)`R%wjrSIP>C@bTrv5l4LCmfZ& zH)-Jzyf5joLgpYqV-k2|)nM1CUh=3>4)Qn;N~WA(ubmM4QHE^Uo6uoVWwt(5Q~LI8 z*UI=?zQDaewy1(AfFc_kjz%rMh47qk@;8pQyVHw?*foK&is_rnota?wX!zP5yl9 zg-`LaaN2h|tEDqG2d^Zlm`d0-92bfT4Bn69TS=G_Y}%_kd8aKw%d=`Wf0 zRL}Ku#C$%C-XJAG%A&%muN)lUQ-8^zZ}Q7{tZJ zmsVC}bag2)u`u&mknz80TDJC1cxxHBUr!VicE``VSn>GbYQVP(3Yf{r$vYhDWGg2A zT5SbVfhi~^&~^agKt(lo4-a#2DezPfHZmGw&=S)taX%eG_rbwI_B(gv@82g_SzWyw zbncJYc%pP?Z12c_X=6jd)RY0#JAZIOLPINK?nk5|f@K!-DfiHTG}xq$z}PB0D#hEZ z<~z7$RA;9QY6tVq?T>jE*LlD6GAWa)=ZHmr`lPTnRio;dnKM;bXNzP$Ujut)M%nX$ z%kiF_@JLNrs1d;ILXLqykn@Qh>R*m4-W?|W=fI`I6@AM1v+ zS%6gLb<>N*%WrkcsjuCU08mW;VQ%rBa zuK=F0XqI-&M@xvR1n3i4l9Z&#)ba2FnLr7P`VIf2 z!XL5af2G`?oRB~$yhJDJiLX$&olv~Y_Ck4?G&*YM3Tk~iO){6gB~2e6{Ra<-itlH! zVKpkhV7p~(F{^a71y<1GjDVuWmOn<0*+sD)QpDWF`2k5{?{*=>88$$3>Ud1w7862W zcxzun&G9lu)tdb4++2|2n0t-E9l`r^fC5mV&WaedS~!$)kUa|X^U<2THWh+`B&`QC zZ*1mg@t8jYEr@H9DV{2|+&??6xDbJY81hX%ic%rQ2nlf{+kxcT;wPAynd$tq9S!`D z)38=e;(1YJr3UIepHQVBb@l%Shz(v7m)KBOTf4|TdJh{M0W7c*+@?r1zZYurP1{U* zKnKqAG7UX4K0Xa7A6^tgJ>?N9)zb}%Nu9?X+d&OiCpX!<#^2No)9r_kXtFBHrNRZqe z-~hrbWVq(TIpUM80iqB)B0;TI1F3x>L+hTmjhR6?#^*=BV!3|{+<*chtal+PtC-ug z^;J1nRMZ9vw-p-jP@%S16>#FYHrK`gVd%EbJ1Gb+_D`Ppyz`|uuOD!FQ@kwdwb7ly zXYmf5r_aP9M6qtaKfLy*dS%tpYdcuV;TkL=Ne?dmh;jb|wL{%DG7BE3z zRc?RPX~AIGUf^)I?2)1%^UeTwwVepCVkrHPgMU_9_7d{nyEor*FdM2;)EUd&8Z|X# z@XoZ2o+4I$nN-;v--|!FwN(POB5GUnU6J`ZZ?{i(hX?MDt$Q}1v~7j*!CTg5W(W{2 zD*d89G`3s`rNGy3-z;VtJ!k_;M0tK7Ll6C1MKgA4V zOi(-doWuft=e=B%24FU_=E+2-84qYD{vp2C9=lBb^B??YeiaN-pT-J?^w;6XD`D#9wD z>4^$cMS1z~AN&Cw&#pRTs{couW}bhy$%VvZ25LfCQd;UYWN8oRglMrd9M3hc$$Oi**@PRQci8cuBDAhFf z1*#3DTkGrVkiQpt6T2J)0JY56@^ir9FLCwpjiDUz+gObdwNqZc>V2OchN3RhCp4t^J%W)1||n-6ljQ3^m+ z;7}`!kB_4cSnD{`Z`on@)vUe{$w`Jgzg{<&npGSr!^COQtT&rzWMEK++6ESEV+R;> zp}^C6e-0xQ>2N<2gb9QN=ol#un$zvJxJxVKEajLfAtn~r;P$s)+6ih5RLrp?L+ycB zoy<&z1ny}doNMSuF*mShsQn5hl8}P(an^f*0QI5%lv_}z z2)h-7b0Mi9aPUXmc%e)y;ZH?CK!6I~kn!(6`Nrum+kAb0f1gS+uo*rn&L1J#4^+YY ziw6=AclJ?&kV7OPoeUK2v;MpH@uA3_ZT5j!Djg6YURG8H z!dt2WH`R0dx2Esoa|%)g?8PZ~-xR1Dl&`V?TS|@o{}t6q#qUOlQV(#Mw!+t-Y8#$+ z7lCv=EP3H?a_@c`D-Q5vWb%Oj^)3+IdPe6#Z@%Au*@0*oK)dAq8L_X}NZi^4<23jY z$kKW?+%yx2{wMyh47c-~jy!O_7k3za!XZPsY4rv#ic&%2HDl4fHD``~k0`|c_rmy}4RT~mYbyspQ zq}m6~N?az*-@Ol>HN^iVNN2PUj2LL7@?{hbAU4aN)8F+U5$}y8mnH1v7vl;QF=^!fEO*(m3v!&>^ zisIMU?b? zd-hC~-iCM}$JqUsS1TW6V*nXxgGaqfwE^TYs*e(0QBD_dLd4>~_NbjfZTMiqEYw9sRA4gB^r*0hezQDyGCgHu#zrGx)IV{Y&~KX@%!NU^sL*3{bbNI zG@w(6>-+1w@$(6RZ?sAQx-N-&lA>b~vTQGsKi)}Ye@W5R?7$>;JGK2+<=^|CcaQx4 zhnMi03!p?)x-P1q5*(C_!Yz9d>~s(^6ewbQDuXTpQA~+b%YG^Z^ReRl5U~eJZT(nc zm^-^9j4mcH4~YUx)ky5`8D)LTbKf1{NmsKxZ+Nx?4Dn1FlvOn+6eYYn* z_y)Xb$2k#v@-st_#=82tNVembnW)JBa`zy@?HmD%|^IdK=OWiVs4T<5cXTtly%41gTzw}UToab7}vf>rH%mSoGJs(EgBfi~24 zEgxx{!WGG04oain!Tc+QpmW*?4VsW(%+V;OK&(`V#}^zEIFtLB@ld(8ZVvz7S&fo0 z^Z&(aG@n%3=vDJba)|Vfm(?X&ogxfl(P|M0xAp3mb8-DCQq6I{RjJeUt_JfyM zEoVW-8#*B0_D@1`kQ%8l~xeKyihUvOIWw#NRtDbywmZf`@`CGY-7QiIJFYP!>& zV+Tkc<2=`}uH6V^MMTux)@-#BM-c}McB}tS3gqWvnyCUR_g9!?>k`;Sj{=-y54gSt*PnhMJcae-8hpD0?j-9w^0-f z9(Oa(3i>UiEfjPq*8y>$YQCMmn<%hUZA}35W?Y(y?{ZRRacn_U-dy4z$s;CFU<*ZD5+b&-N#(0Np|*50Q$7M!=yRN`^}Rqn%fhd*QbHs2#iq><2q&+HA$sB-{Ss zHVg>Lm@Dmc>Z_E?>ifF8r`5)|I%kh#f;Q`Z8lT4fLhqGJjD^*EEbh9~iiT`RUie`b zl)4Kis@0j3b38GL7_=Vn&TDjEP8O3z5hmVZ^bSAjNepWpIw15zW1H7EpuisxFLAw8 z%Kyv)ynY2COx*9^=lf$UN!S$JCXhP0+1aHwU%s`y=#mU4j=gQXVR_AnFz#aa0?p4H z4a@%4&AUGqtDvOpc<*R*G9!5<;!GuNSC6#@H+A!ZjpNS{6w&H_?Tya!&uEvpOq#JP zCSw1iQ0RdW|JCSUzzN5vri1cp*5@xBFnGg%yWZ(nZ?&-vNh`B^g&N10f0v27D8InI zMw9)B@RxO-*h_;1pM{(8!Zd3LDW#aLGsA0`w+En44j~}tP{AJ{gYd{bLBYaz@9=?~ zJ6wJcl)0S)O>4QrZ1s{Zhy*A)4jOBy!YB7UNRsYa2O*-9!9Q-}>aIqux5R_m;#XbH zX(h0y#)MqC)5%*!sy-GgG&4)SyL42w4#7Ha1Ae2c0a}LA=(p6w)KpAa83$m1yw+BF zx4%PHc`(L64gI-vK|5YtGYsNKjjuiuBla%F1cXW+L`*II+EMGjh41CVo}|=1CmGz4 zyQa~Y@-b;vJSInY%sf*Ni|xg7$N=AsOE`|IBi4R2Tmz5`_)4tS;rp|4!#WFq6#8Ya zq8_p;KVwxUmfud0d<3ZpUQlOiagbw3Kfm~mz}Nf-T}o&Kychf@9hDGomd3nKRB-YW zi^oB4SE-yaD&>=Nn$2&8#fr@n{g6!_E-)(lh)uLo8EUSI-x{4vhc1abyb&+##wA|w!e&u~~t+s8l6 z@TB+xE(t>}hA9+=0J~yPp4vrEVr9ac5$0q@T$MQd`>WkF(ZIp^-7ph>Lf@90$YRYQ zv-$zP0`|^{iNr1BHOmc!caAL~v)rv=cIS_PBGGuGg~GH6wExrmLAA(oCFm+zk2z5L zy9BlZnzKOCL2V1|WTY+G`3C)=x_^YT>h0vG*-~B%VRFB6Dh#ip=V6`__&uMx#reHl zBaNbq=lzw`_|SbrrCYIhmPo83AQQ?lFNwR-$_N#>3um|#;sw|YcYW|i^P9We zDGT%gC}Q(B&kBVD)V8^=9sU%GV2kg)nd|=yRV4qfZko8CK;TJT5Y7KUWh>IfBCXO` zg+dfjCFDjJa*)V$)Fa z1$#ii0gIeec=K+m*XyI%3v6V`pU>zDa)oqV#`MZFQL+qyynn3MA10TywVw*RAw|W) ze0KlL`^}xu19hUQum8r~PR{2x`3lTB_=~qJ2_K>rC_a!`V!+s13fV|Ac^gC=Vtn#5 z$WqeXt)$Rw9Jl`O(Bsc6D%C(Xgv9FRIj(9oro@p-o{*l;N>Ifs0O-d7qh?J~GTS=U zC2j;pwyN(eC%#Z{t?u9)(IXLT;)P@DGk>cRz3Zd&pQyP@(EW1Y0 zM?GluVI_?=Tbf~kzO~D)wt`-{4!AcE3*oP=SD`_5JUxXx8KY}&h>dwi9hEH-nObo! z_^PcD=f>?csOh(C-3o3#Kb}dbtNq&(`glnNuK;Ol;JZv}Wgu~?PU@JD6WL|X%56kn zt;+l8V+;D0mnYP}z~JsGsHIrFIcotvDLXQO@#DhN(i912CaTV#lBYD!a$hNY4?1R} zEixfICl)W(s;3#a9pac~yD10AlU3QjI8QTi)4>PEC)($bSDDCk8dKh3o7hP|mbnKd zgHyMheu}~SdqOZk}vY*T2mbMrDgdFEQrjv{7FjVC#CU&4iqbn3p}7Kj{?gJW$#^X&o7lHDg4i z4fF(fp@7I@G!(BRFDZ%!K4(tudqOWJs^BxtUCq?j2@0F5%hJ7b=XhF_T(^x!qh6a~ zuLqsVvIhRuCcEPubFvjh53x>gI^F2Wz~rrrvX}emja4h(=AJDbWd&m7Tm-~r*|*%O z6-VEUtzh)DW8gZQZ(||r*SL!a^S&~lz{RSnD$FQXNDo#EaqLfgeT_K!oH6y$*z9-b za#MUmAEu8YB+3_vPF)Gviw(=D88`Hyc3EvjBCuPCcWEXhR?_yjtb-nKi<}=bdkte0DDt*ZwEXv?t*?uEP^jhJ2@_Keg8_C;G9s7zGlx2S#H;rRz%y9aH7N@c4 zkGzbI$7DZ0E)nU-PZH=mtXf8nq)lYUiLr|ar0E3hg(=T>ytxHx0B)MmwuJW`Vu z4p|-Fk+M%AmD5 zj3Xi=kw-7qH4;aQ(htZJ3wMVv2t#$>?*vNk5zA>dU*C|s8><`N8T6BTYdO>D=U%bX zug7OZBj0@g21+iRj#tk7eLKdKq1HbSWU*!a0QwtE0j8Y3241O?thVs7?Fi8dx?PqZ ze8Jwoh9*}2JPr2pR2Y!vB$i`N`Wc_j9tu0~mtdHZ6vLcf-~&Y9-AVHCVqKDj3j6U< z$V>Kv*Hf<^?|R8MdLq&;jvsy2r9G$3zBpmr5K`$e!kIq(GR_#oET{RK?<$Hv@?rE~ z8CpBDrEeZiovBh|c0G+0syWwwby9N?$G3WMb4t`Ph=o1Ot*2X!B213A1MC*FZ{V(z zJ7cX|?&zXe((f8i_qD0p3|{JT2WjgEI&*!3&+AWKWH%w_{7-KF;8E{4B6tJr#uPXL z8mMsQIj=WM&MyAi(DXU|A=$+F(t>H+hiFRV_MZk($DvOj>@wbB1*elWggs*q1(*Q6 zxska;HvaQGSnclIMgY~%9kl{ej+4zd=G~2oBDj2EN)?iCUn(Vc+u%~~d*`X-d_Eks zRk#&bXIin2yRj^``;Ex?xcp11OViiS%;5XWX-cfb_?XCmU;OU50WkQroTOB+%WzIm zD|sZFeutt~lZiTn5nGUmtZyoxnfdj}{q#2}=DF`Ndy>f?P2)bIcSqyxcr(eh zBF!@WqmdC}Qifce##eFAeX&M@jyVrzN#do79!eJ?rM7%Oc;4Uts>`$8R2{TEvhpf6 z`Qoq759GJzRnmwlKDV*Vu*P>U#2iQaW0W#LMJcAD)aQ->^;$>_7N;6 zM&I0uz=xV?=;|%!)}@Oe6IcJIM6!nPAqZzrtTX?ME7x+GuY~=JhA9neqXzCd!HL6$=dSb zs9Hf2Oc&VJ7(mjN|2@ z0FMm8P+j4$p#>U^EhBq^R@~yhfea70X=S=^$}D(F`<*;6yy&e*dOw)R{7541h??je z&zQDRN=bxJjd^mM*XFFBkIONCv=Jozrg`Ut_kG~uT+&9bh%_1UU?Z|JsG5+PV2&gD z;lp7vXcdIYJ2K+&9p(o}N}arul-kD^-H6j6!ANXLPz~}Y&Jeqz%+4Kxw1ptCh|y}f z81j`ptHUttwGO(67+*feX;*IElYg6ell!s5I0{&CpPEeA{}n9M1hp#}KN*#0zmw|J zO>4!XLInDQreO0V{!{n0T(;}yYhu6lU10CCicyZr;i9oUSM0u#MU}LLaV*@4G(cW7 z&2{{YD{{V*fzbjyrY>K^zksMEGwTXk!6mcwyBYHdu9%R@lxCs^t@(UaW6c^pS@CZ7)0pX&xa+eqXSd_sBmx)~=&N}2|-rtfRtY59s8>9_88 z^`AE*+W3`}dH@u9`k-~Xjhgh{PtB#!Wsw>C-!$3o+f>I~^fcxS zYSvD11&oXmPp`nh1{f@LbU_r<4I1ni_e~=vq|t)Q5TEwBJH-d_$|a(`dv%xQs)**l zWM}XcXzbo&wNd}uDq1j&{S1+WAmA86NU_bKZ=+@jqRicMH~@v*JK$V4lkmG5*7wAsj`UCo`*+f=rb5nE?%{Obi1Q_t1dpjocC9_?5-whZOHriNZr zYxGN=08h>3uqh<{_VDe$HkfY@r*8ov4dZt6`*7X z5(!9bB%havOqzkY%A;Y?H%$axgKq>_l`;70vwjEqhZ9oSsE5o1R@VSqyof7t_9y9U ztEivyU4QKxm38dSbzky=d$6B+TwU`N-SZWPJY&bIObRVl(s{L^tU-nEZx1j0HP531U#soHj#|JJ`}yp#sFDBb z(6H4bnext&Q5&9yQf$wr?9iT+M~8b^iVtb>pd<3!s0!N!x-I(3h{l|Z5Sc_Q^^$8M z*$G4zm%B*rd#qqn6?UJyYoT@h+9<;J;$PeR?})i}o2=H52N%6rRQ+o)BYrTZuSv!f z-|>=A?tuzeqk}+UULK-Yc>$^avM;dl`y2&LY{+yQAeSe$|=#O{@^efx7AW z_w0(BkH%7<%oQnX=83Ban_iFj?(m15Ml-WWMxCuI`>Dx2$J~#x{)d(yPn%WGo4h}u zrCl76SzLc>hC%vU+)K{=rZh3o3_m@aU?7OZfQQE1lA`1rpV_2UsP#FmcZ7%Y2?N7@|L%lbAu6ZfUjy;`Vq>>yi~3#W}Ni_ zf^!H=$-~oG>e(aKx7A*xukkOMqFoJF8afxY^Ge^53FhRaZl@|{Bx}9lsr-G*TU7!WhY5TFhJFfuSsbPfD$2ZQif_GvD0jPAIIR==Y6AkpZAw|3F zL8A0stodPK>(S;PdqlyBO7<&#m_hmQfwz?MOUJ%4xk}pp2rFVDH;3@#QMHDF0dC1y zU-4o}^-66g%j5@M;Ss+t?0@{1JfLhZq_ddrik*_*z9U;z3-U-U%_@JTVyU{Il8 zIwSw~9*aw_^ec6$9O`9{N9OK{dq?=&WKz&QVM<&=2Z2>Cp5ebWrHUhqnhC5I4IUk)6H`7Om7DT=tw}(Ly zO#_3Nm>68v)_-IM#X7f)zXe1;3r@YtXJ&9n1}p#E_BIp9%Gde3;YrRM(Il2Sg<%ZS zLcl6vn_f_hu%+HM{)WEqOS`0hj?Yn6rlGIjx0o)c4>18~ue^y>l3GJv*ZBP5_p?=` zV;|Q<*-Znd)y&87O3#O69`ABW+?U7cqC>JMt*>%(b1Qmy-1{2)XMU%-FUn3)*9@1& z-PVMc^52o0rndIgiirVoDSo!Cn?l1yshZHrMe!O|%l;qjzm}fvWR4camsU@Pqo$fo zbRtGaAJ!Xj{mWzOMD^=w!qk zgNN+CtVF$j{jfu0WszM1Hg!+XOC)NBzTRkYcAcskQ^#$Sw`vD_Q5JfZj z;!a$4kHtJLBlR_C_tINk!$5;Mm2wd}F43p#qG#lBN$)&U8Y}7z!c+Umm4?#8R$_3u zavA%1U#eV%9@vY%uvr<(;J4T7`)_@0`6uzN?SS^n4qqywrspX3+-qCl@MOUJ&QSZ} zX0o%W*#|us!QYE|h&DX${P}<|v?G}C?bXn<3iBUFZ%2BoeRxOjOBWJOSU-5?=zoL5 ziGY-ng5rZDSNyG0Wj2JM&DJ}e+hApgpN))p4ee-u-{7&gB%PBSDuf7Dy@?_%nVs1Fke4TEGdE4rNs4Kdl z$;l(RiF5Yb^Xg?>ksW3~10t60{-ECi=m*~h!l3b;j=#21aA$Rz=GSqen)IXh-Y)Uf z*^Bh}gRi1wDkx1VC~w@j0jxO0#Z$VHyKoT#@x$lZH(P!PMKEQwRB7Nc-+xalAnFg)qN3hrz^_#~kxEfz)UnH$Y^#(?$_Ik=* zbgBpy`{s}LkhGm&#hg9G*v1Z)-T%Dz`~`+ooiqJ|K^9*bploIbiYHdhtG|!f)f5b` zciM=zR2r`aA1H8h=G#tHh(G4bZ~78yrhV&G_*E)hjo@FuEXc^n+O4Zy+9cv33b|u} zMj`tH8iJ4q+TnVElZIzp894sz*T0;&$mUXo05_+Z!-rJ3KiIiBo*jHs%7P&-lM0(k zmWNU+#B5D734fx=?eM)=?)cy{`I-?m5{WH&WRP&}=hc6B1-%f0hi4v-q=y~r3Ss_V z+)*&1xu;%?ALG6aH?E=RJnfz&GI_AlBsS!V=y90}B9R8N*bViYV)R6>)Nevwg}x!k zD9vyzz1vywK#A@{0Ym`E+|EKHc6Egn?eP`IC;2T%g5iBfvVR06`_7?gP1oseI3B8s z^XQjvHO{ct-|PS5+F({=0HZ73d~6S+REnN;m<117hckP*YSBW)G7_ip|J#0_3$2EuBDGl3;o-@?le|>MZ0D2R|!g0h`7UOFc1N)AsFDFccucW8h*oUDZGHZhW7~6gdM|CFHn2Qoj5lBzCs0EWr@Vm24#sqF7jFfBE)){i;l~)kV znO0r}$wJ=5ET{Nps4DTO(80P|pWccOAd?jfbrCcWAgJKt;__%1#eG{IPd_}eDjHD9 ziWQOaVEL4mOhwRDMqMlm<9 z11!bwQLd^hU%!C3_bAEppKg!|%}U}tWj+ho{9tG1N>0mHjB*R0jdSE)S2oES+PBLW zBAvIwmn06eq#ykLrzudb<2TH1xS~OkHgKaYr_e#J;X%n5s%R=L#RjhU&Wqc3m;GZ$ zt;B1iz9Zi0VI=l;g=(Sh>}}7)j;?Hsq-MTc2qi^MCa)MSZhHd_;u>e`r?V4vZqd`ZTZn z-)%?jnAq6Gu9uneI132@go=#s+M zSV(JXlEB=x8TY@RC#L>!FVJUH(gc__iANgE*mN$=H}hb|v2B~CjcJpJ4fbc{e-mzC z+)Nb_udc7B3fdJ63jMQMzI1#nV+51xLNSD&2=wmP|LbHX7wK%IT_E)V?Ug1$w^DC9zOix zZHFVqSCU^)a0OK|?`m*oB$$(Kd- zqAA=ls7sHsoww>tCLUb7)46~p%N(4kzuysh_u73Kn=P5%j|@thC0%)jJ_(|~(` zzrxKqxH$pbNQ(lxI(d`kk5L?_VPgJ*bY!DH1&c37EJ==5ICBN%tRVw96U0sX8iT+) zsJpH4mp69zCKYf!+qnt#k@hu!0{{)c9vO2zF-+4chfBFxrXBYmAl+rj@FiZ?phQKuCf|L$n3Q zT3TN20FEw#*7FsEDW>rzBW@#>8BUlvUReHpiPN|o3`X0pOlEgG{(kJ#)x>X^!K@p@ zDH+2_>}A1H4edbG7>HX`s+zZ>?lGd~zU30vq&v8v3(7Ie z`P*CO^&D{H5du^x9FH~X}KRp1i?*|=mjQcxbDT4K*bM9+_eFqI*gISYH$$=HE>TDiDHjp zdx+zDlP>uIXvi{RLwgcfO6XHoKB-}EC0_wh2&f5I4+yJ}DK7K%pyhsr<>k=;D8LoX zb(d!|>slNy#a>wRP@&3I&nA-pCdMT#tEhlbCyfrH-2%5YD31WYQZIQy^yDr;H|luE z13S{UhztUcc&IK_^4}d;pHVX}QGmcNRc=IzLD3w;eAyv>O}p|ix6SX*#zx}T1HVxz zFTu<6-oW>o#;}+FpIHDnyVNqir1luKnX_N#1z0M3{H)DRh#9 z+tSU+eP)8m(>6{ehY!bfyKhbyTkblfKP*v5Tk<1hS%_9UtwdD@7!U=w3Ay%jV} z<-F}eD(p#GGGTgJ{i}J1rdP5p;abBdPltxj@;7R&8s40Jb$F{!O3KLe9D!EQ_2Fr) z`uF9Y``nlUaI(>EelwOEpDAWzcpFo1$@BOJOiclT z1-&_Z9yNuFEfbwVGmDizVs3$4Y?}96{v^2fWQZ0_ed>Jw0Y+@xeWy5$9ZuBMB=)cH z8qQ&m741-dNS|-DpnE3RhLzKUCzPdlKLm9%`F>2e@uCZ6;?mcC`I#Z{s2}^+QX&-g zTFmmJe&c05_cy=BsY(f5jEgHdKH{7^rTH$h7QvZ*n>DDm{{4TU(Qp;%=iA&A-4? zJ|&4WW{vX3GFGPJUB#+{7j>4dbJ9x5T18S(dtJX0qDrGHE3-s7w@SaiDU0#vie!T5hu?R0;@PI{E$g?&0Sb>@QWu2_s7j^xzWxJsb*8H(2c6ZF$Y-%4{xM zZ@tuqzl~Gtf9eh(n*S_*z>+)cmce!pp8_R<;Be#p%JxF*LU!EIM~{T|dYqWstQ2dy zd=wwG9p6d#aU==rn^%IB+dFfvm7$)Chk9<2^Y15f@-7GG_K|K1qudUiNWTrmd=0Y@ zMUTWDIucEEOLJXOy`P$ekF?3ZJ5U77wNm!b`IXTP=_`x3(4$KRVf0v3P3043Q=+y( z0Ge1g4^fO)(bguzy^4RaqW{}8pm1vb)r;<~woj9(PeI@-)Uj}D470oQy=PT>p#p>+ zV)3cOZuAFQqA9z)o)c$EJ-?n?HJ~1P?ed`!@K8&5sGKI*W8Uj=KhF5D!;ekAm3|_n zI_?YoVHUnZarwl~&i8>J1BJXhy>Vh^S5g8Z%jneQf1CJUwXE2L&RCf$CtT;E#=vVj z?z)n=k`0qG)Cr7dBNb(IDm~bUf{R_e$HmD;Im#Z9aCD^bLv8Yy0=Sc(qH+Tc^Ly6^ z^>S_4$;Au5a_M2u3fLPt_sz|9+c-3Tjz8pjxT~Q}-e5$?k|=(aX-+R5$AdSbYOb|= zhVRV=)mu6QiKe)wHu(om+0?~4tkDck*E8AA40OS-hNQG->3Q%95Ssk$KaiLwr}W@n zC`Mb24anrE0&HpGq1$W}p8F4OZ@q6^;rQV`cHjGWxdg6f&Tc=k9_TUROfZ^5;G%bF zs1&_$L)wSbl;HjInW?NdhI~UlC~wd8fs^HWVqv`x4fS2OWbW2yYkn2sJr*JCt`cD@ z=&_<@*xK3y*$WwMaBWsUHEH-S8sZsa3KsFyCas!A`4}d$$ATnW1`VQ1vSBUDoFKx= z79%}MS}64Tb9ThIW9TFj^NADX+5lxoP@jCIUO5!@fBEaJ%_oG0Ubkmu#2)$6N6+{r z1-cR8Dq`i!ePUEAQuoUyLy#j3nt9wK%-7eSt^U&9;xa%~fA=41P#ToiBm-%yIZWa+ zWmR|z9aB+v{C+R)Y~tBxmvu+3MnM%N=HUq0Z9iApHoc zP4_~?S(z$v^R_{K=Tq1}Knk0^>h{j}ch}+8jIOZ|XJ5RFn36P1l?%N=uY>276Vaa#@rOD1c^_6yy65?hKJ)7fmh`&{W?u|0IzB;}<8Y6^GHf2gMW2C}4V_j|;lA=I(fbl=PV{IvRWW5o@{FA1UTMd!99YL$Ua!D)Rgw2=jp=6-Dgg>s&Mn&%ycfy4lWgUDNoN zs%i6Wa|b8SO?@oYH=jHtV0I8RP5fu*6f(A+bC2?kFhoo!?_>|o$yQ=3bU>2A7i&6S zPFk{n%7ILVw5zHw^m;vLrnXOHv6q&})MO>fxZHH761TnHf$0iE^VRd01K;lz3+I<{ zfXnh`;IkbclQdnJN1Y^UanrxOnnQHK)hTF96xoGV=yFV9N8uUoWX;vO{dqy@Vomeo zH0^k7NelUT+c`^^4rl0$BllnCd)&&&JOTm{=iC7_pISTYBMU{hcWU$wtJ*?<^41Hp zr;imCxdFj-c#+uW*Y$3CZ(8=Db@Ln!#Oi)p;TcO^=i+YF6SYPp;rxA8QYxQ+@?`V@ zm=^g0wQT}irg86sPVu~(L}9~tO_(K%7XA*jNx5R!N8?Y&32_j4F(4u1*dd||dLt8} zw32%bGWo$FA!urWD+4@Vw)-ROH5xn94;mgYQ{nHlikA6sZY;4HOb7-3W{+q)uvCgn z&=I6>qik(E<(c|cZa$IDp$?wrDlB)CjksYoFv@A8+*9dhwLWqEy3-bsX)_(_)`=>2 z3q)%)y9S}aEuK#oCs@Q5(e{zS+vU5+_4W_!lUmWW1F==Zj4O&-S>_2_px^re9 z$#+w$8mFToh{AYg#=${jaDhD|p|Ff&=SVDqK9F=fGU)1(_t<#`X#q}mTOg(Dgi*{8 z?CZy!JN|A(F&bo7A>mwOVWDc-Rpg<4=g6{<;(ArC)%E6Ybj7W;>R}70lExFFIMfDu zkTZV7EerJ6Z`5jJGha?ghII`8AGEz?RFvNv_dA4u!~oKr0wRqx(xn1|(p}QsNO!lC z2vQ;;-Q6WEAV_yNNW+{x{{GK;);e#_t21ks3w4-#-?6WK#pn9&C4`M75ftCIMCvLp zXi5-twyA=|zdrwRtPymQKsM&M@s2;hmRNy#-5K$^wGPK~_vw0HlIBD7&&@m~78)v& z!1?ix6Vxf;k$L5`9H#z!?(N%)m;EiLA8WeOlE&u3OMP#Ny=+SMNhdtUQ6`MLaHG8U zD2ZdC>Oy%F?;as^_}-8?>v%poYx6g6ApX-pc2c(Va*OQh3tk)c!Pjg4fR>j-Jq)=N z{^hXDukDquVn1|ohkT1%jP-y$7$PHmXD*<}$8PbHtb?KLY!7Wc{~8-2dZWv79jFa@ z;!=-PChF}|A@bO4@U{Lf>1fj05EZgJPJ`)nNS3-!C6%oN@x*gxQ&E*>OX=#q;_q$s z)z`&$g-{nTGql~(MYUd_MD)zoGsca?CPy0IV$)s>d+z0yBl($=$Cr5#RrI4dRScMu zl{_1$ZY8SJ3tt?C?FfP2Hwf}r@vPWCqw-%ovv?lp^i;pZ^$O5-qTM6qx2Lx`Ec&N`G)_v4(1m) z=g9pa0=Y$}=<0A*E@nap0|FEAbLwv%%ByR-{Z#%#Q}_mSje=uNza zCS4W!Z65f!Wy5#394w1z7@W~K&Uz_@1a49_F-;$ME8Z0b!580;r*(q!ABFiQ7j8N4 z=0B#|wjzL96H1_nr!@JMQd>KcoIT?2ih^BSZC=6fPcpT2tX zYv)BTUmJ8!`=0}cRv8fP>5Fod0>cJL?sPI23Gkrki$En?7R=nxjZ83&V@0v1zj}u? z%q$~|r#^g{y07|;u_b!{oN$qYYLirs@c=f=i83X~HfSxOHSNCL(U%R4RTKJh#;}Q= zS`VWEWoEX~JWUIsCo!>6h;Jt^9f$A=k#M7guQ88amf&fz#n}Eq>ADbX**e3|Gt-ke zx2JNdcnpAmKL?Y4NiTeFX_J>;yfIXNP3L*#64gvF{r86Popv*hG&H^Ng7Zx}Xrc?F z;1Aj_(=TvkA~2qDLNjJ>3D9BdOTXEn2aZ|NYnq2$HDWT8e3Sf1Cw98Tfn%RI!K@9V zn>rA!z3zEj8L(Z&PLn>&MMRcLjRqVOB?+H<7+TujQli z+uAZ?M{8Try`Bp-08^&@_vpztSa~f4y0np>N%iz)iVKr|m`;rW!2+m#|hercA96y z-&gZyGvc8T6?<8crS+h0uI<`ci!1nBN4gD_u-K)s;DduKPYhYni+IQBt3Q8TnuIoY z*7p@XbT;2>9e&~Kg*+nIL$sJqL*RF5d z*+0eC<@<_g$Osyo{W9zxR+jS#)sJln!lyCM^B9CwB7$h*mNDNVuIZ4Nbm|jy*BJ8uxulK_6B!}Dw>tU*k-cC02z{@3msCSN-b0n+aooD@@+P}u6l+gJ;P(`7?G2u!9trN-;p-7 z?O74bmwn0Y8>Q6m^-I5DlU;nd=u(o@3l|l3Z=2_wDaArg5k&vW+IkX<@(og#({VOg z$QCy&t=(Q3bs4rF5zgPa8G`T|>wL z;__^}AqT@qQ_#Xy^yh@RHQycqw#WE!5gAxX{eJVX{l(rZ4;*3XLgGZ5J8D5?9TYPB zJ44O%RPKZ`&#fik>iw;~<67e>)y?WQJ$f)=Q?G)&m1RHO+6~+4PV*y-wmaNv{>AGL zy`_8Q`%u)2hXo3`4@=iITaqzR;>jPN1y*6nk-OVLBkH>n%Q17DzTpRx?3_2tu-vy@ z*0+cki!Msj=C1>B!F9!x#svakpv1C9R3dh0AZqxuO}p&)!zoO{q|E1}|616o z!vApq1Tcp{Ug39)E2d86le6D#i#V5m2Xn#-t$rIiSUm^zy%dvox`ws92qji5z4^{9 zF~^I(9j9$tfr&)XRUMP^&COoZrFQ(-q4WX%ruy;4=*f2*G&HV^2u5ycCPn$ zlwycr_&DqaABDHM1#|K|dvrCRO-Jpafun8D4R?1wtb)c{;$60cGX8&e;3l)h1GiJ% zb(mP=J5I~i1pi$@?YK0Cu>RGPWSw<^i+ZeVY~ApFaPpCI%J`c`f#7C<8U#Rt@!k*` zRNJAgJd9h0x-815vH8{2k%61Un;u=|s-m7+qL4Mu^V`K>Jm$AHyGUvI`**nAZq|L> zBZ2*Sri&eRez&@O9XZA?AWFiuEQv^wo8Oqw@hRG1F;*#Ef@=;wYuK^R_aRy5%M`?d z{AXrm7_I3pf>%Tn!9lIk$Qc+5kzc0vmQRM=z0RMWiwZiSb`j^dUeKD>UJXS~FTW@b zAB|L-S6%~i5)^@foDZnCroCa88o7yKUHqJK-eBN9O&Zi?2N%`O!ot}2#J$-b06q0MaX)YMJ zUVBj0%oe5&Gdo8;NM7ULtMhDFjNs@HOwC z;1E3LPbL=LQ-~Vq;?nb4OB~KfT3jab+m421s%e<=o<*T7Om94IWDm^IVnCC)P7!G| zbRG2)4(`nUqhH9tl`4==$U1SkvU7s>Oza58mr>Gi$Tj2xzsH-9*h*5e<*PNugtmW#p{Dy5W7z(fHv z5EP$ywgb^$Lg%+-X&zG-ytMVVdFH3-nnI+lv!N*jiE|QU3&MExv*B%x_@K0a{cK^i z6T?=_QaJbh-dm$lw_>4k!r1^2S{i|>k+UF}2>>0vDgDHm$Fwc{V`=nB9vkGniP7WO@=U+O~cj`G`yLIMBQSJTJ)N z1a{cpurm}X|F=jaBZ{Qvzq`>{8x;+!O$*lDrM@|8MO_=krX<_e^BcJ>{k1V$^{jrM zgYx+yf4RA005#C30)lPSTMj!)^9T)Ft~8$aE@KyuxpeOsHI73=9kyv~db<&BZN7?` zT}H9LyT$RO)jZL7k$(sUSo@|o*0|&N3}FB*It~E^;fC#ENa1=?x#gw*h%Ywb-5)D{ zci*K7#;Eeei)TOF_50?YbE5hN+6WT3J*~r2Oi65*2?F)HW<9%W;vAnqgwTDp^L;_g z#JsajTQeFv9%J)`N5>_4{y;bmSO)$K#YHoarYD(4t}dc))Uc_f;PN9{yrj1N^tSHfkvA3QNwsgY zF<5>7s_NWjGdaG064gr0QoCjrdqzgpdF8$#i2#|R?)*K~(Oky4q2ny5bX;!`xu-ne z7BQ|sCAD`u8~f6={jyKLv!^bK=4EmS@piz3kdt~bxzXrLs70-B5n`Sa1~3pHa1>Uova#D2w|}?9?KUcv#~rr*v>4}bhi!C5AVZPTQw+<$M;C9bvDe76 z*mfFcnEU-J{v8y?!M@Vaqk3yR=N9%d{M1&G&$?@y-!@u+llbJ+_;>osi1w2cb{N{) z5{yY=vFp>>S})J&7p2c z$Zo~6wjCU4pfwYjIil$7>`YCJ*|}nG-y1`U!rk!L-0sI_rs6_re6*B54@Dnk+A?gd zOdQ=toY1HKw;rNzlZ`E(=HpPfvo-5CyW`x+Uq)7Gh=ExN#Td)yUEa3wz!$l#+tyhZ zkx;z9gU&g^hY>Cfv-F_2 zd>q)YF8^KNK_g4wWNHel5gTtq+M`S$E(R`H*GhZAV6gWJBtQt8_62F6A=I@x8Ix8< zNHVNME6Tu=7_3adh63Jp=)EOBm{(#AR{M71vxb4s5{2%GGQR!7n~Q5MM6x}&A72dr zy_BXYpRXj}X!-@iG=Lbwp?RVNf%J}WER{b73;}R6O9`oRbW6}ED8{!W#!HB=uhgPk z_0W!@iMsx*gbvV33^T?bEd^ecP18|LZT%u8@H_bFGT+)HW6@x)*MR@+Z&`;5(~k2u z%*sn2sL;{h&YRY~m8L8_!j#9ByfOQ&C1Iis7zrbNzMF`8SA^$WM2{hhwv{CR$bhB= zVuuC}l4Ck9Ug+pJT4xuY{W^2o%G{@kkcv_qt`>^pkbqPov@9Ul3mgbQMiE8^la(oV z83Lni>Kbhv>1jCIT6aoBawh=wVfXt0vnSc#T!Xzxnns*16{?ob%4k)vflB^GU{2_M^bY!XIzC<;hk`Mc|Rp+oEx8A z=s|FaX5PwKitX>Ty;>5~>G1WgJ-Wm{efu&Z{`<&!O_HicL!Pj`Dch4{S0_obNZ=j- z_$2D~UamUSfjZvr8CQ$}jLGX{(u4I6OKNl&ig4<_P3SDC-{_X)%$6h*e!%EfVBebm zl;wsE*te(P7=SHEIR}X+p@f^^Vi} zx`-`BMDgP*b_qpBR6=CHr1Pc&HUW5*Qa{&%teABV%Fioo2|!?UL{_NG?WEjjPcm5t zo$mI?N@7Th;wWqNYmj3c_dx+H0F>X^oBkgbAU!xi zu9NU>N3wiZ($CKL0ZA1_>qi)IShT;O&wsHARq8RKi||G1VFSKF>m?;%M5?Q++t*G$ zMGAt}l|O=(=3ZMiPqe0IxXVy0cty!`leFkuJCE~-#czm2rEfCya&vQfkR5g;T%!wz zta*V#6j0tauy(-K(OxQYl_Ovjus;5g!FI@RUZ|_ZRy(vOE=cZYCH389NA;8Le58_9 zScBYm5C?+8|HnTf`a?imUHOLv@DAVyki`PQ9e6Xmek%3)X@4aqsIkeigymdaWFne! zd#UZ6b9tp;fWR6&Xs%7(9|g`UauNhy4g2-zCZ_)3q10`_j~Q2(g1#cE@Sw22Z3e}w zG~PIXArk9XAouWHcIix7Azkgp{Vw&J-ZGYL>;*<3w>YJX=hU%AvWQ6)()~saoD~Pr zPBpOlpxOuKJD@q~Umf4xgVbXGh9d~~;eQfFf;T9+>MUDqU6Mxko_gd1pY*r!qs$(o zXGf{S(NhI~?9b<@cI+4b?`I&>-3c3SC6R6v?7v|LD8g8ey#$DcjnfBHgKzy z+^wmMDQK}#ga}_VpB^dz%|c{=PZ}9sQye$bLbcdYVHv8*8J_fJtkoIUDSiZGwKg>Q z59*PDK&EDLHWNCa7l>SD%Zw_}Kui+Yp(G;v_Ey(Z5nr0nd9s@S#)fvI)PdS>X!pYu z^!ut&22FjF;0#ZGVpxub-h;7T4Q8Uv!-TIgg%ZN2MPCZ700bZavgt*U3JQ^XY?1@> z#L`M52Yx3vgUe^vsgcej)g%H{e=q^w3mgbA1mJ7{?O?ca5x`8py?d-z=GJI<;0(-p zJAhM7xE%6hK2t7vr}qz)R-D~DkF#<3`VhG*HEu0+^Rot!qM$193IH>J6Iwcw1$ytN z5j;$vcSU7?StVz?{Cy4PY^r<}g{4f5sVQ6S@KMitlbWhf-dR3kfAf}OkdRPXq>A$F zkIY)+_qW#54?l({D^lq`l0`N#ygwujl>i??XTmxS;cqs5rX@HFs$1{5h%o_E1&)k% zaY0@A@fFCPvp=fCE4^$Z1CfPVagu<(tm$UXSptt-HEJ=%FOP8ja)`ew5eHFtm?dP% zKYa*PQthvwbhGK`fYkh)NjlZ@b9PNN4J&ebBXr+7}wVDfI`rIUOShYQX+BNc@4gv z1c0R=_Xme{H94pT(#xcOuKjS;Fq3)|=W|40-gfvJh<)>N@6HeD>}#~3C-Uh&{-Z>- zG@3INwU25iFv@_m5@$(;^krJI4e|Z#t{gO~|wIYgH5@iHToo4dI8ls%s z+(3}jd=3CPAo2{Df#eV5Et&zRLo)701D2t#uZyUuUAi{Vmh4$U00qJ*OccqQuADPx z9k$XW&L2$X-mZ92PXY0e@vg&G`sO#;c#DyMQ+!xKF9@ZKxSM)^fz;x&WE^+b_rpZ) z%zoKZkt@y4tU!Ae+qMmvAHz1Ereb^p<4X84=RXfl^s@5XzZ30tTW4_7nZDAs!o~F)t14?}nlhc% zK;S5MB_U7IgXPA9f>syN?G z-C3}~LMbqfl_*pPn(BLt?iCMehNuROg@pQ(SY6TT#)|=u{vEYvHOBOSv`)ARH(4ip zHk(40D~z~)9nqalFZ#bDHd_Q*mQ4eJ8jyqKu&!H^Qzw&1ck9G^tIEnNjgPC_f;{4; zAD&st2JR+5Ids!A@G}pQw;rbTpO{*{i*}t)MTFWTwms_vRyg(M1cHKssgY7rJW)qO zFRZ5B$F}?p?@f_!X{Vsr5S%kmNA%*6z}QML+Xn{ab*exCFHk}S$S^-Su?+@IgA3#A z<#|We(80Tn>ZQPaEOqK?XHK9q1Q%+q`ok}|uncgFurB`-58d*%Y68}-H7C+obOR$p zqID}aaiG-;zpYTf;XuA`lQ!vY&sC7Eur?W%{9@4?FmG=^^-xk{kug&zYU<4+1LgP3 z$F%@xgu5+GoaI?$zcX%eiOBVhONW2u>w}(&3=B1J2W^;yCjc1D6#W z3KH>b3--kV>Izw;_-IKkzOvYlmtmc|AMDvR!+<{WCM~XV#`1RRPsJ%7%DqFs4{Lj9 z7t+oYN?({r&yCJkH_UeqCHTorr&FEH{y~9*fmX47f#w`xCz))R(z!Snlrn?yH1&8p z5xVcWNO6v!xy~!^>NhX582_(>5e#}{*~%5RKQ*{_Ji(NbF<5kgu*%YvtJqH@ed&sr zxl=4CPVSue9l-`4&H_jnGp5y8&98Qi=OUHwi}EOE^C&p3QvcD#su7@+(0@bYvqt6~TVJLLEf# zX4%TXq#(o!$19x`lFN51p9n4^yy~ED+N&HD9SpyQ%z^9o(bZIY(pLRdZMbNB6 z3MRxxe|f;c{u%Y_+^`NkZILm{p}E?Ta3F4AISkE9He|VEtiiw{6l?9JP5;nQ5F@_S z_t8+Crd}24SWZZ=5M*{1iGo(Qa8$o>=0YC~EbPWP;9UutU>jH84X^WghTcffJ+!>L% zX)JjsuZS6qIC{TBUdaek_L12&#}t<~lByLyDjE+#Z(eZkl5)+-jqmP zE;s=1q`~Y^RuS87?(6VW5$~ddGFy;;ChHb|N2t=8P*29}UhF z9m1E{XwzE%O5W|wc#0P(ibK+@FyJG@@73eujLeb2oyOi-8KA_?x-ktt3y5tg6;Mzv z$WdgOH68i=Zy&38pL*>_|9(mfIR?In#0t0ug8QBfdC2&yg{Z3zh}*d2s!)bIG!pIK=;6_h`A&TD3&JBXR9#7 z-*KrDJ{*V*N>ZjU5uJUzo|$58<@0N5&`$H$xpUtc{``SnAdssu;P@2zGRG9oS%TLl zsQJfz@MsKsjvtp9MO$MgS{ZsvgC&zC(@V`Tu`wNr;B}d>=YLBjEpf{SDPW~UJ1F6B zaci$IpwuB^37Oan{!ef_TUH_XzsodCQd007xXC75VF$C3=aK2uNAnos2?&tR3jObN z5FDfTV%F%t4v|tjBjq%PIrO|}gpXREutpNXT}7jc^8VcX_W#D_{GGrBoc_Q76NBE2 z-(3hRPA>z(7fnt#h9EE8)83LWoB0THJ4SMV!Hi9%bnKjf-wgq51^m36LGC%ChZf{s zWxndh?$fpT$FZyY$Pyx0*~Y1qrIJ}P9&Nw>?(6q^@OQ^bYO5@q@1*_jj^|<6)Up8{ zuCk0OQS>8(-(Ko6=TNFs1-%T@TJ8?z(iig zk!gECLX*s$f?BA3Qz*-2Pm`JMgAwYreZ5>!mMlnO09#h!;!X+JJlk9cABOFXd}iH$ z@w3#M_-^+yE~*F2?V2tcLA(FHce@$R+ls_ibkIn(UbLLzqSh!1*dxofIS{Q@5J&Xv zF5<~KxBfRn#yy@Vy_SO2lU`NqDhJ7f>km%1c2#UwsUn&4TOG}$` z_KrCTH05)iw;SW!pa5P&AYO0IKif=C3RDMknErhfPTGQxI;rW!GPW+06$o5y6kvCQU*%yPcEs%9Zm2PCR3{t zC*A*d6q5J&kKlHL&s9wbf8lXN#CkFXz@&vIzw9FZ?_`W;|G1ux$<;`v;RWX+fyfqE zMz;TW+ZMp^7Qwm1HJ|B+QWa*JucMMU$YD9|^G5;HDgqxZ>A(N%k;sM^e0)sd6wfT3 z`~eWg#0*AL&<~3JUB(-?hf?upv?_D(!DN74o@fTSKoz-AL&}vYU?^K;{RTy8pDG|> zMB>qL^tU}6FBiTG@+(a02#!$6@{zp|Z*lf77+W2?f7^kXLYs=nqD#*ZQ1fu1KsXw|aA*yI9E0xoKiv0^ zJ7VIfotW#OtDGcV`!f{2NOD_hZNE>^5J=twjR~J!;O{L$BoPfFcCqDNtCd!RXCMoL zI_<2*?Zi1X9Xnw5o9^Bo#!qu3xmddcgh3R^=rh+`#?FWeaVY*UQbTU z8jUaaky5z%F}xa^E?pvRs4>B3%R2nnrlA>ukBbCm#RLHt{P0^u>Z@k#Dw&W!`qv#3 zbGzW9kYZe~%c*jT^zpS(#NoURBeslQz*B^YUUKD0%0BnR75DSlcz0#j3}xL@>oTh0 zBHEz`S%bvHME>KzTZ6fxz7S?+`#m%Jlc-fTp%<7|W_^Wx5&egq9c|Z7R^R(ka=SsO z?>ZDTZdR7So)7Dz$Wt#y{v(73kU}|6&N1X{XAu9+yreLbQdT03%6b7(SR2C=qv5pH zL?u$o`FqQnEdkubDlXtrPoM{GSXA3N`s!O@3>SBmy1jvTPWi=490uPL;x8#B(zmiA zXlB}BNLI{SMhu+6@u2|Q3RVzfD4y<7nr|SY6S_32?!h=xn9e?MvkMxwHDi01mYitG z#%DHN?dA$mqE>*?;iVW@?*(-67^7L~hyNCJrt`6TS4W(u^6>^X41gmC;IKs%6h*w_ z4L$jrj^lkJjSp2XH~zuY-}1nKqVJ0rA4j!#sS~}7HQjz_x8fJD`6Y)5etVre4R{Wn;(sbEHoTk^ioSX)5*pY>E__i>(P8IHaz^-hu&mrg7tJ8h z7PmjbaXw#DswSd`qJ<8$bTAWgo~~CB!#0eSs%~6&*H4&oM1AqcQ8WE+Tc)$%B-zUO7jhiGRE4-9a8gtTkS z8=D$-Y9+|}Lg;0KFEP^B2lj4T4{SlvI|P0mwoRkN=S%vcDLuNdH`~vNTp>6e-J2rk zY&!2A{&39bG=^j`qnl`&0=g;oXw3OFu-sFkK@Ugsk$0_03>d<{0&72bSsS3mHywpmZW&CWOmGvp9dxa{y+f7oJ)x;?J6ZsZ0aMU$=lqS; z87n)3JNVUntNN1Yk+k?`xEYwIY|ir+)5q+(Lps)uPP)tZA=t}#LK$l${i&RBQyyMf zHsruHv82G>%Sr@yT0$iD0hOxn!S~^^fqmapsh5%SyuogH+08es&>TNOjuI0Gk;Mqp_2j_YBIZ+LUagrG7mq2MY^MwLI?C?68 z|2!Ply?)rjG$kfKN&GW-A-##?VMB<9{=A6<=B4oRnmop9%NH=(`~|jRT5K1hr}V3^ zvo~lpH!s=nId5u?=qi2iFq#<{&=7+dgod=2PZU%bKkqRnF2?6D$&pjE`@i)@2u6|x ztuU`X4G^Q)!cb)NJOcyK1?@IEZKo-v+I;wsTU@DsWC5RX>~evM6GkTQ(R(k(IeRRM<aG2hkDnC0W|ZI~Xk zS_k%uB}(nv>TRL@y~E_ozXU*I4k$buqe5wJhCQj*Pp6A z1a1+RYSZAapY)IMmKuq2wQB*hZl*9-PAe!96K=PF!I@O(DraW1JFtc0vFpL6TcYecGiAi1O{$CJ*f|Dy903O=p z_KdTkde1V!w44StuG4mFpm5X+JC)4V*<=@ ze=Rq)e#;DJ^L(fr{pSWQ0NBC21oH_88Q!c)_#Np{3LtHV!j0O&UTE+gH(Ns#S%)2pFbLKPsO339K!KaCh^oXAuGG$7ngC-g&dx zU+R8^uo7$6k>-PFz_zZcSf&c>9l7I7nh5%m)=Zj#TPS~L7Mu0qfZ1JWR^Ye*56H+S zrFKqwWAjQSB0z$45Y|AXkO?~*1tog`yO{x)z@Fbv^$kti1p}tz(-Z=Xb~^p;Jw~jz zidWXYH+wS==N5YJ5gvWVs{IfNLVOzDKPT8KUsJy+$Z5w2Tm|0xd1V9QnGZp1wG|cj zYbt0KF;!ipIFqC5#?mgPQ2g-WEbQ)1dC^mgv08`R3#g@K|#dND>=sQk{7ycEflyG16R9-Ng zWe{i`q-w#Kk-u@8zBc`7m6sx;+A&P{403;8Y9)Vf3HK*HJK zzd&Zan?8uoRaJ=G8~+WluMd)0sg;fZ(UKR&s)n~+jwAC=ZB!gGVo-!d08b?-Hf(iz z$a#W-i7ZiJDX;rn*FP004@SHxRQREiKScl!qg1T7+>@NXFhQM#Y&64?Av+H#;7oJ!#of>v8w{l`V+|Hx(kn#awZW(N&_%n{LiUrjpX=rKR(@Ysuxt)Mh0If2h%m_5DOl|%Fkhq{5hLj{w zXH=HzO9)N8lu;kZBtLGS(;i`@%PogWf#~7z3A;7G2B)Bbrr8@tyGbQD%#BqB2e^qA z@(1pb4Kv8VfB*swF&l@0O&{x`E>LEF#Q+Z~6!J7!j8+@|VpaXU zD8%Qr-Dq$_Huy;5$eS+xaY-C4I^zQ3*V!Qga#fV{x`EX?Eadyeu1rp}RhJOJC73sv zf?|X_(TJ>x#amE83p;UnjE)ITK9q;pqIn zoR3mCLSDE7Tt3vv|HUG^Quqxf5lFkFc^f$#g355t^#w7gB-8&xJlMgWtu!Ut!Jp=o zLB-__3%TDxP7gJGO!w+cMl zw-jI5rbbUubc@!U=V639OG$Bq8wN3osyF(g*Uy}U$f=rfA9`#!G*#ttZ#k})jr*mf zQrQ~F)s8Br3Hsu7eIb>KqR{|oMtJ4H8 zJD)NB&pk5(r3X?KyJdm3NW>0{<2doUeJXeeKp#6O8G{r)IQE!mlFZSjt_#m*9H12z zok#?USf#YJ$-s@W<+Mr%i0BBpZH(tjh!`cg;dK1~Fp&TfyEDNY@e-f5B3ZiRWVyb5 zzFa=!?l=`}-m>By_HYHwE4%d_pYYtjUbQ9Hfk|(>5WjLTAWopKs8E)y*7<}&_y2*j z?lp^1_FrO&X*C9c;r=TEN`vPIj996@z%MtL_G8^qStR0H+(($YEri(wgJ8c7FePU` zWi|G!mOeJuHMX#qf~B)$h!D3B60`Q{zbdckn0ZW%7mPm*OGPxaegc{XD_PF48edr` zU|D#*o8CiHhv6kJxsv>-diX~6(00Sfzj>_j%ERkPC5w}oE*P~6qp_fVA%?$@ZQtF~ z+V^eU+kvoH5v-~Mj2X|AR#~o3GQDY$3Q}`A-vIXjlB!`jS#MQ2?fU#bvmKiRhWS6A zrmnw`02}kz3ouN*1hWi)h{f@o3uPZ}&R~H&bJ;L1cI_+hJkjiLD>mX!2AVl`q!=<4&s z3Ga|lDV%cMjp7pA`#&szq##ZEuL+FMH@E$KU4Q*!bM7}_!ToyotMO06fgb~m1E2}O zlmczp<8`$`fhf2bbq8ewp2x3ckYe;2Q2a62#bjkswY0PV#ji1=tZNLA4p7gI8v$L% z0(1q;5#i4OHkk@fA8Ibqar(drgYLM$${C!Nj;{5uO_=RIes0^-IqHMcDj+Xp5a~3i%n@X{Xaa$A@sr9FTeJ#$kwFo5xTb?KV@m?ciML#lb~vR5T+I^Dznfz!t0s$){-s z?drel%pmwR-r|zqtdKG75_Sxzs7^J6WjSSg##eo$5au=ui){^hkTqj_6=S$-#cs6u zTVk`vDr+nMua<-Ca34sqZaC7ALvukLyp>?kem!JxY-ytCwk7jBT_hrueW!O@K|SX{ z!;lCQ1?2QKXOtzEhyL+ePU0Tx+B27E2CWBVeH6iQA2;7Sx#9=NBm=b4boNrW?Z_9y z8sRpo@0ol{?ZG;K=3>nHQkk^D@AT7i(E51R8ZtC+X(Wwm%GR$U{CxbjW;FAdmhlG{ z#O7`nqZ37Jl!s!dXOkWc5d?d{B7n;YOf;yh(kh}Z?h=a~#RS@$o;gvf&+m1Q&3>?V zb2HLYC+h5r5e66+%RamU0%uewHgEh?o%K1Q>`sJ7R~XKJCuV^WN^d2F*g?H)1nb$eB}5;7V>Km-Iv;L zL=0kMV*@sU^&i}Tr(MqcNuj_~9s7~-UKv0A0;V|OVaGuXX(Os+YR^(>?57grd`zA7 z657#9*glS@$G{fC>eqk=O>+7Q=gb|8Vdv~3vW|yWLP8U55A+vaZc24~8IQAblN#h8 z`J%BUYR|##0hA1UhH7bXh={}lEyb=ZLNU9a9ACz^6TRt38_1aObRD3kJ*cK3Jf zgH}x=Ex~M#MsnBc4~52kt;$OEii-KN$i$H7>)C0aDu1FKNTBUI)u>HOsnGv4H;#X=?O8+9D?}NRKY1ie>wJ>3LM*$%>Kufd;f^kw$mEP}pvSzDk(k zwa_)HpQ8rK)pXsb9>2BnIhsqVX3qWii)enR(e8k$~3y}KOFBA zOVEAz@F)s4Of;@>!u(g=PPRJm9@Qf2Yeq8Lgmt8Z;8bfQdAj%`ZS6kCAlF3{T>Z{# zj0wE4qgj-10*N|lGCSdT=6$O!>QA!IpZ*~%1X46i5x=x@NT8vHnuN(IDHZkgVW1KC zZVb|ELq;$c^5r>o+;i$wb{dT$F?(H==LEo`GiDM()=XHIdlHcid5w$Y`T}zllg@yc z0~3iZKOAh<0n|&teqD0(hzb*+o%0r@x|DO?1~RO?Ci5$Rw~n(@w+B;FSv7{#&R{qu zDBq&I#Gb5^Ldok+b<$_m^o6=Hdb$s(r%3+VI#FBfuXp$>my4k*O{jt&{mKM|-FfB8 z7u=#vwN+LLNh2^D7VGb@bql}iwL3nzZVy+442uSj`#!vg@v+^X$KyJO-Ac}!mHP9k z87X=pu~$EvpJKs_7xS};U(6GT1Z4?8TEUsILj0c_T%ffBM2g@~>p373EZ(5j<=6u4 zbFg3U$Gsb$Zu1j$U!rQSWRXj7c5V2cLrsX*&VdPLA7BN*ZUe+2{y>lJUtU*|!Uhe~ zjZDmGa%S%>VrcBGuA;1pF+-FSUC_RUwR{d!?cqs(UvB$AVNF{<9k$V_H=mISfMdVy z{`M?Cs5{cUwJHh7wL<&;#QIVZ{nqFv{4)1QH_a(Fu-s>*ZLQtY zRO!nz33*H!d|i+C1<^f6J`^@#X%Gk_!P+mrk8i-SOn*7+hFW|E8?F_o6_?vI{cQni zW_o2nQMSF-2GYL0&6F^({%4A$2y8ztJ?#SYx6MEQo@ENQiQ^>=X~N19uw;Qcn>V%c zsgI3gJ%xP9_%`|C->q}CBS!hs>bh{w8~$hM7C(UMUR_Qr#oP>|%y3{1p&03Mp`nm} z)N)ti`J9o61%l0EH!-jW6LFuc4{EN^5`T*#<|WOOL(em-uh%aWy#$t$1tE|f5nJ}R z#k3JdRuHM_zrU};V%FLn$bl*k|CVbTkS>7ufqmM6tYI6$qM8rSQY`FZLZ;_>2P^A3 zyAaEC*=4(H#A!r-8_yfYSbmx48*~7>5R)y9b&ddYN~cPa0zEhj3%irI`a;Ki6F2I< z7#3mtHdErD*&+_5sLU5NRP>lfMU7W{)MhT5ezi4YU&$>y$!2`6rY2hbb9-kS%e-=tUVic6IjdAhYV52&#GYkrE0z?^9%Fi@Q37l3tF&2E;$ql0=go> z8wiL4Vh6L!uXL}(^XBSE#Kz=H!yH5_w>O?6d5z)xT4%0I^Q%@+p#N{p2Bl6klg=^1 zx%%vOff#y;0sF~RptC#T3Z=zmi8A4Eci%r1b>{ggTYlw9)lCcO7Z1xva?AD*J8BxE z(ma`c-N5>0g zBKrNf*_`iqnGe*M4`ycF$~Jqlv+~Va6r5@o1=yGn%m=VZFSihHm-k=#ZXV%FrH|9> zM%&9|b90_+*v5AcL@R8~C!{MGO*mQ}t>>LDep;z@kTDDK(q)8INiKX-tL;ggp zvrrm7^0q-OCs+Qk_S#`<00fDwFdm_dlkyzCF*Kckv5u6poV~@&QjgP zk>jkX#hJmLHCYTPp1rF99PX)PDafVMsO_}6+^p$yIBoNN)X=$+^6_J^G4bs&l~F^v zYl@wtohW4DMRumpTzuoi&svQ(2lg*67qFuIVkM|fU#*J#h^XoJ#^=Z}R3^#CHfaR;brnJ}7ZuSs8U3(w4 zKFg6YXBhd%2l?{IRGXgmltk2(r1=ipwV_j&kFLc6Io|@*4hLb7>%->S)B%GN8@^86!88-9$rq1m zntTy=oIl&dhxMC*bz|tK^4d)Xs`BIN9fK{XqZGn>R9CuqdB@3AwpR)CV71A6_w3y4 zS8AgL_7}=Udqz<%zZq6Ouot)FvVFDevtt$lf``->-iCRy6~j6*hhhn0tqAfj)Ln3Pn)>y}VnXFB~-Sd~tkN%RZ~ z>X=}C8&SDT#hA-Etqtt|X5^FNqDok2YPjG?2mj_2gZeo?U>4GEFAaR&_Z}sb&Q_90 z-G?m5eV-ub$se>_bo&gd-2D7#*ZJPWOPu>|n(BF$+Xai4l$cSrAs;jWohh3!O<1Lg zf7F6^O*yx1=}>_EtLdm0?1uQ?0odJ<8to@%nzo?$tNBYGbUC%vIX$-&h{;J;3ph(Y zvkZcS2RIrrC1r^HUUcdV*S4Ex@jDE2rZyOrq4_ivXd^&P&+E@-SGP@BmOL5JP5X~3 z)t;ujYQNq2D&gv$3a)-ZWI1EAcnLXAtqmFDqBl`cnJ;$sM#9p!lGmz94yQ3>aU=`f z%EpaG5jpKI6zWSc`W!f1(*qq|bsz72zhgT{VD5mtKJsL&^c=M%$HzpWd6lsAVVtM2 zoHf&{4&!o8)UP4#vZ?xwR{uqp_vKq76O$nLQ3pBZZ492vMw3OO^e(MId@tpuQJW)* z4EAkq<7ZoeR#tLuud^yp-~hWWZFzu%^jbm?-sgxFDyq*35I0Nb zQ0_;x%Xj8kUNM0?BEB~yJ(p9u){PO$arFzg;BUy%(@v;)>UFqx`Ne^)_eCY^6I>Un z5TTD}1rC?|hd*cRn!i9-#s}>7$hP2!1_Pn5 z7k-zl;x%t%N?oT$^S#XZ!E6i=ssXnYOorM^m)&2jai zQ>O|Jh6@`>{)yQAWop^zLK}Q(i(zD|&v4hd(4P3r`;~m=7qPo;5_+?gS>8l-^j(da z7ZAH6*KRHgxG+_`9I$L+6E7CuH~Q-ou_{_qBI*gnbkCT~C1ZI)2=N#Q`LHDxMIs(l z65vl+Xt|p_YYKR_bNEkh9P+R!r0Mk!ptM=rKQVWbz9^ynBuUgmtB7>r8cM#4Vh17nPjCaH{t{aNhA3YSTXhl zO*A*z%E`u_&KWTW_v|^QeohVY@Iox)c8a68{9LB4`e6v`FHPIi$T2a}`{W+@)d>U} zqbjiRSPFArJ>dFzwhO&|cj7G;? z&w>&kn{*n2%}-PF|Ln>Y7yYbl?a-}dwfz&c_C^40qDpDgiNjGE8RIGPo1{7&ixqUl z2=RLzZ9qIkA?(o04|bx#&Cy%q`rOFI?Shj|MAJ2gbzbbXr0YjPikad@MuaO8Bpdr zPX882uO=(M%|O{?$M&`eGzh!MoZ>AvKCchYD@dnW@Fx|$e_Gz`xi_Df4NW{zK0b;t zbzO3x7+TQ6Op#HNv`|_3T1&iLvM#Apa>%Ykb##aOhETj!7_MD4HS{fwI5)r$65J~r zC|||>yn)MI+&MPyreQzBGxe4aZ`vo!f`g?9yuWr!j#H4}xMVsmAcHR1{N)^u@is}d zsIQEBgDR!O^)ki13W;#7Kyj}*f~EuFWS3n1F+DtS%}T;$*cr`OG?!8Sinzi^-P)Ps zmlAch_|*@6ERP+J<P85)8V?@cLkpGLx=ToayOK)11k#eb$?1J;YA8RjWy8 zfWTMOw|Hc&+hDU$@qJ@uD(z>{(&*#FQs#)^H%HS8pCL3hfNV>0X7KUBrE(_}I{hYO z1U|Q$?8%R*FLHVlScti(EsY}?jrV_w&U3Q2{HUCn)KoOx7!G+qQo&=acC*AC#Y%Ya z2u_*~aSz6^oF;qEs4{mNkJmf(&F`|tbSKpA6SjMg3z3ew6Xbb}Q98^>bxd~!;=2Q* zP}VbU93X(eV6-L1r?_`rg3n^mqrsg$Ks^;T-o>A8Jrv&Hvl=EU9VI&1RfX@H3*VWl zLe6_~&~7OD?znI)Y_1ikU;e&Xw{H_%yFbF@y6=(BNO!@*G=9Mi}Y(g!lAO4HzW3YZl9)i{nTS~=YV@&2@8{fQ7VNB>cagQ3mPy#( z8A~fqX!=mRa}^>l^Q2Ow?KGZt*&9ArB`_Ulx6`y=BJVdshPBxty6ibGqW#+1HDv~_ z+ZR55@Iin0AU&DPisBw!S(Ew>(n2pZ>TJmCC?AGzmQM+z+&K;g9xdLvs*Q{nTW?KO zT9~@Fi<}9itJ`L3QQYVQ5hL$-6~{{l6Z|vDH6_ThEL7ZQ+gdlpyKBk5=o98zT}a}K z)EPdZp6X~yA4v*m3s8{ulx4(4f?1~#51H-sX!DId;sdF>LLlf;1)3>|>Hb!-{qIZ#aZn1k9jCg!ouEHKgmZV3YP=E3jPNna0 z>C#2DwiL~(t1=#~!-F3cF~s@Oi$NIz)M_0e+8ekozwoR=R|>wpa-C$#3OVUR*6%KI zZhvA#G%4zq4|S*K_W~<#=8f!YItjOwxTxW9NU7JqfLl5Ry$XA2%S|&o$m|9Gb3|=g zb-w2^$6ZdM3P6J%|AA>4N-z$y6EAj=**u?GTeJ)H-Ew8uh!3XWM%kUWv^lu1^RT>l z!L*obv7CaRpBwa@tI)h!JK=fY?Q26m4Zn>HmTHfU6Vg7p>g%cf{BpGI6KO zHbuNP2;Ugd>HG5_dMgT4YwqmdVrZ@2UYu@5QEx@;KPp`MpmM#EaQc)@)0b_d=8(?I z6>GCXN7qQ^Ki-oeBGRVIHtRc4#lq&zg&PY!J2WGRT10fmSl5IGf`UPK@`fSxdpo)ll)KbCE=7|s9^}h=n#t1Rhin}$0I8m|$aNl^Q zZ+YXH1!ZTS!HvKP848!4wYS1CxGB|db{Z)e@38Je+nj!xdWO_%>MFU&_p<%pK_5~{ zd`S=0VV?D`L{((Okn^&)g0V}fPyAXn&Lgz#~yVIFJ(?+jM%|&{M%kVa9TUnaMj7^q( zp0J*^Atq`t9lOCWxVFJ}gXhnvSVH@N5dXo|X$Lh4{j-tT)NlLe)_*(w79bX3m?E6+ zp?!Ok4@^#!6_U|vlu`Glf&a~dOey&&O|Iatzs^qV$unv$G#_`Jr@c&LuGS8Lk~VVvP%yQf{A4 zN&;%-=h4`xRDUm1wr?xl%b%nOxG26Cxa>+WcyI4F;VcY~$z2{*()%6UZ_Q~{Zc6h! zUWCff`L|!qLo!IO#~shQYF*XXWFWWh@Ty$8I`@3m{z$PIR@Eo;$NYdr?EZwJ$?x8~ z&x-c%976|~s$u0-&VZmhaJkhbD$+$hx0~(_fms@F9T%Q1`gvy9lW@H)$fVAbDQqSs zM%)X;R2gYp#v*;`rzj4ipFmcF?yx0qcz(L7Q1Mzh--&h~Ec5NXw!*@a#rJzdujaa? z)8Fa(vj!`XJC<+Xh)^@RH#nf(Hby>cj~{t-k?h5aWoS*h-`gZmw`^v7tis$zv%`3O z?}+GjK%Md?KP8vj(vZpGa7%}9E%f7pp9981bHYHN?UC;ximfY4)-4^Wvp!}Hq{;y_ zVP!@?Qj(NT$P=3_6z}mpxW!ggBM6cs6gnBT!f=>vQ;sxrRTnfh=EPo za{pBUg>|~p!e^qJ1$CqjZG6s_dD*fK7EB~@TR-Z5B}y4)M}Ae`=d8K0#Z_KoAtdo@ zN74HE-r2~#b>Xe0CC#_Afv3Scd(8U_Bf^JC{Jv683EQ)10_^9M!sU_u6Ljyk6BN}n zXiS$pq)GNVH&mo4NE8kc^jJ!2YHEHjV>CkT>=mmRmK05@jq=wV1^hkGmhaH(*WsA3 zD3f1ZAr&$tCe}lD(btZ9e!pefw!WajOEWAMQ^jGi2phC2c*ZTaZ!W=OT}^WrYcY-# z#$F4bFkWd0dhE01MzOmk(gb1coA#onbNuIND4LW6o}!S+O84y_M2up&8(!Md1k}le zG)@`y@nKJ0r%2$FxHR#dWQ~|oks5(;Itpg*-Pr(fPHaM5!-Ig9P3CZ~WgeNe z`abRAzFlOHCtoNxTvvic&2HvSUE4iYD&GY-%iUXliHjKOHqTJ`ht+{KYd z17VUTQP*O)k#b!)H90Gb!mgzI()uj(=dz!jb&)N&;`#ezxYtezp!F24tg!;2FqN-_ z$rsl=w559c=Fw*nYQ{^H2{}jg^qAr3f0a#xKw#gmD#W&#hwrZNYs>#m8k;hV{^7#e zv^m3p0`;(JIt(bSevvo^A|+l#%$l6Ts|@l6>kR5NuRUijX{@a^NL)gG%u2yqpGhJZ z;6i=7>2#ZP%P^YhHR1Tm&-)8zl%gNO}HwTAmy#g%uXHHO*|7 zeWnQ)(<+sLv1Ke8tScDsu7U8m?5hHccni6V;N~G4lw6Fm0!L8M-1D-`lqQCYP{O4A zc`6}h>@m$k8vy~6|9O7ro&p7x!F=tNKCWWyAd7tG6^1dOb{9wGUbNF7Bo>%%A#|o`- zLAs%mEykT?=2=K^u-tn)wn@f#ZI4;Cm#wl7cX$+0*kr|{m%969M}6tk9^Ol`MKeZD z7`HpwU5OLL489%9M#l<~%DCA|Hy&As_K@6=sbr!626){?o+`_O2ZbF2k~`Dh%e=(Z zKU`!N?C!9viqt*&QYfw3?e5Wss*=mkhm=R-ssiaFU%T^-I;yS9ZLMiiRTdwM3JYYs zY^6=N*SX-@P%T17wsKZ}*6n@+ZUo`N;Oq!SDTb{nh&=Y0JgRFmOa-I}j|xIbD(Q-U zLr|gVOW14CNp090sYi_M1p*oyYBelM3Yn_`^fIHmi#Eo2WwSVaiRQj2<)j2mb!@r) zEugejx^e8)Jd`9d0t^j*Xjc`Pon~wN5iNFKPJyIw6nnkKUa7hNU7@zRx~PIo@IUZU zM}Jopw2gq(bLaB}6`9uA8JCmR{1Pk%-qUIT#B})IHx?pF`3E){7d5)bAMJ@1*vet# zs$5W{FGhwXaLhM-b-Ed?`6BxAi|CKHaj_*Sv1=52p%8v#t^e`%q~9ynOqrR%&i~?+ zJoM4VHZ-Gj(Y#yY7|1GJ9T%OR5UY`p5Bl)&e3n+{@!Qw>b_Oe7JxoleyTHS2@R3*Q z1kKN-C3V=Fyfou2ilsK4UVVNhvrlP*4{YnEA=`3MNVmxpd z{uI9iS=R#$hYSi8-dy^65F_@S!^eD??)Di()wkW1?(jFt7dk}EFV~k>&6Bnfb9U(^@O4(d_ve?cyHeHL=E%9=W9Y)tc3JU{eWj_$f<7d85f{*a4z3_-VDKSJU4n z-@(9hmU;4WdxKs4mk@}GoyMz>fC!b5tKM8qv%4PW_EV_=lf8kI6>Zh3^MZ znM@m4hz#L2Q;+Ph6fF7Nh@F&5`&;|Ut$ygM4zgfFoJjDNgtaU#4(q6;?R2L-ehy74}dJim8rj@RNfg56_#&*@e5lu)kzULhw3re={dp8ZJ9Yu>H9!%(d8uj3CiDg z7u~rtC=b4tIn8XSA~yy9=>DQ7pdWiggBIb$bnsJ9F|4MOcCIm(rD|--5hckGkaN#M z^%VS5rxhQ;mVtoof&ch4;g^dn`}le@AgDMWN)8VOBBZBb^nyk1jMvX&|kso=vXGK9D7l9~C6bJq|fDuhWAAI(SJxC%-j zK-|>bc%UxK;Ag@_t>!ESPZ*I}gFF18P8ui}!flT{b|1v{4J5i?Z__=jl{Ze})73MF z(;P#n=!UasN+6k(1hnGFcMmCY9*h!oE@kv;sM17NPw-`JZNbOmZ_^;K{`gx|{p+Oo zzP6^j%5$&o;tkrX9u@U09~<#mzK%h78voRHxZmdn?Lo9U>?yhAbJ%IGS42r*?qjA5 zh%pVjkWYf_Y-q+Nng-Do*o=$KdjLDboexhhq}$jMSWwQ-4ooFR3YbDVk30Dz7d{7v zzkG1m58Q1ZI1}oH`l_Jxn`cPa6cmX?57OHm{@%XOm+8|gb&y;ewSq|#_a=k7S0@99 znfBYKj}DdF?Mw?^*0cJ+Av@)AuiyuvjFYkSOV;8h$cYKJ{YamJB#tlcc|RP1*2r+Q zCWEZuUE_IYM%tpVbTfbs7EZYlTpoE#G=B4e67ZIx=F(mhT;B%VgG|z@>AZ>F5rjnWEd*ffAp(HoP9+FJqGf0$sil@gcpluK_Kv9*@tWYZRWdt1IJZc z(|XzK+N@qX(Z8TtRK7p<04VKHKLH0J^p!*PsBMOT1)a>C9-odg2W|jRfv<)>>bokI zW#mflRU&(94!k1f3+b-Qa#DWdI;So#!PAQ>*x9V z?o-4PoOf0(5YqE+So_JrmT6F?prGJN)C9o-`xX$(Azz6}gtLJBC50=L=!;T7wn#Im z$+b}N;bfb7mvk+`N9+AOSEuWZJ=$cIwf~EOh7b*pY0Yx~e+_YG`*Gc(B5auhf=Jx& zWb8Q-;}f*~u^MThya{Q2u-i#FcGqyDjz=+j%>Pfb`znsCuk?0zFP$)-W_#3aUtKnE zs?DxL-2nsukU;Kp0^r$U9tH+ba`1~8;jD&2y*P6)KH38Qz_&0&1~oUU(QR!#W@T@Q zwQjoJp?XWO-T=w1E5HK;F2@n_F+>q>2K84R3f5PjsRiSXexm?ZK-!oDP6sTk**NKr zP)}a|rvW+c3=aH4>1l@D#6=DHe2}b!I1egj0W5>kSlk}#5cDdQ$fmL$X zbfOqodP=7KF^5uohRLEOAoRX?&Z_h&|W1dU_tttN3gp09G@81Ue9I{cL zO{q4{dh+~f&N2Ls3l1LaSXBTHlyH=mF-Byc>?tSvVtarZqTwc$@%MOdj`Z7)jz{%M z9-vH?LVZp;udOw`cW)YaE+0?RUvfRBA`sjova7J=jgbOW+E;xJ#MN;bi89D1L!@pX zcQ#Obf7@Fk5~yl4rL615Klis7gR{1ew++jr^fDe?_=dyh339%77#D-Buc}IbSDrtm z@c`pJ*FO$Vl(L>FZ}J!E&5 z)1N29!{YQ|OxxXB>6lG%h&HcxZPXnZ@WDj6adH%rXN(<&pdZn-1wjHN%3Aj3_fklm z2_A1_#>RVYDf-_iB%|U0;*;+-C7p9Pnb*E*fV z)+|z$#ZrSNWW2AbI_mxTSiYo7%k!<@@mzFmaIs6n;@vW<-&Fy2uGx=t|1;F+r@i*= zt=^ea*xC`(#t5(QW_2yR8-@ zW!Jt`9H+Yg*T|{qzM6pDqpI}aTVp$zqAJtK39h=D@K02!s}T8oP~4G$$jY#9t(q=F z@6Q+s{Wyr@Qrszj*f#(o-Y9QJMy?*YGAciN^3TnvCCT5`_g)Sk%P#$f;n7OFQE0y& z>5liH5D0WMgjd-yFSs~ZH*n!qioCxmvNb|4*WwQ>55xgQ0fiL`;<~VV;;*l$Ee^y3 zD7}LWxcg_o?tWuyRjxEVXMMkM>55#2=Ol6dH$f`N7b$`Z6owj14NY%8m!)qbg~lbGli^HE7BRuW38%Kl`V3SgK(u9Af| z#+uAU=)RY<)NZer1|O0pmvS_)VcVOz%#3QH-)CDQlzib-w!JA^L~ZrB8wasTtqqTA zZFt*hu>Qe!^^)37j||&;h-8gLMvrY!+2(C_iCxf*}}7Rq^)-F1pmQ^ z`rz$*8CH)J2B8cowCWz`4g;K1MCGAwy_J<=eDS@WBcFwy4ck9UXPBSM>{b zkMsM^rt^zRdM%oa>uD<1VmiCOWC$^uexe?%L6$Ht23N5k92kWcEbbIx1UxZXIs^o$ z^xDD^32%{n&&bXG4*XW3=%#kqplrSrJ~rM{Al7? zymG~V(hYb%3u&V6Hqw5GG@PFKlN;8?_IIa`>*&QpUR~?x{X>!5s^{NxorjI zktjcV^k5f4W+YL*N%Zl>W?yIj>eoxg-t+9F)|QJoG)kLs9*B2S5%E2k!@1G6bFZ`1 z2`78sF%U5QR0T`T>(o%5jEZkCPdpf{&$f)9_qi|-x&C}hDqvu2mp8{^&SsCN*ni4q zPpf99E8e)+RSuIfrc`sxqedo_Vz&wn`4(~Fs25^@Eh4%EWh4Ct2ClQo+7p*)DUv!k zpNcwRFmOsQZP-ra$C044P^tVERAwteS{X)_!yYe3zJAPJ;L+Is+G*zM$`q~P-*!50 z&h9$oD&RST_ew!Dps;0RT>L?v&GJK4duK#S?nftqTx25;Kp$V03n zYX|poL;E@cRUYv-;?U7Dv4ThvGKNqF{x{-i!B|VD<@{b3zIO64FNKAV0` z3cxCW0#Ba_CKwr<+h6JSj(2X(p_*60RE^-e523iBg}FOT5D#vd{simQp~)A+#Kwl2 zD0(I)9}6g@(CJDKx|X2_IQ|_z*61nuYZAeC2Uin#X5-Na-BEAWJ4c>)$Cn9Sl|Pp@ z;w5y@vNYc8iq?duIDQnx{}pF=RQu(rrz*R94laE~{`x(7>dWF=pnd%-%3$dFYo{cE z-~;R)IM=vHnc{h$yJHShyz?f@n8BirE~?VlO$V}*0{swv5JnA{KuaZ=DXk3nhE`S? zZf`5iuT!fb-Uv^`=Kol8q#^2LKbNJwUX2pw)f67B;>_#%{5Q<_gBo&YNOn`WLf{Jr zgbv;FE+@_RnWXP_r{XxD5i zN7G>C=k=jxQ|@K9in`?rLHow_gjy4R(}Cj<7vX}wOda6VjGC#>{aHh0(C??vV?g4P zDlbigu1q-Ak&}Ht1?rC|#Oa~gL=Mn)Y0IuP2? z{>;er`4sm-fe0?dDEeV4)=p1M=O-6BPH-WbT2P Date: Mon, 7 Mar 2022 22:10:08 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E4=BF=AE=E6=94=B9es6+=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 88d7a939..cf3a01be 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ - [前端知识体系](notes/Frontend/前端知识体系.md) - [Angular 基础知识](notes/Frontend/Angular.md) -- [ES6+ 语法全解析](http://es.xiecheng.live/) +- [ES6+ 语法全解析](https://notes.frankfeekr.cn/docs/frontend/es6/%E9%A1%B9%E7%9B%AE%E5%87%86%E5%A4%87/%E5%89%8D%E8%A8%80) From 1403b4c8a502539ade7eeafc1f8b12b553014c48 Mon Sep 17 00:00:00 2001 From: Frank <1002039945@qq.com> Date: Tue, 22 Mar 2022 23:13:03 +0800 Subject: [PATCH 17/19] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf3a01be..9ea6b304 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ -
+ From 113790db86c60ffbd6e4eadb168171eb4ee33ca5 Mon Sep 17 00:00:00 2001 From: FrankFeekr <1002039945@qq.com> Date: Sat, 3 Sep 2022 19:10:13 +0800 Subject: [PATCH 18/19] no message --- README.md | 4 +--- assets/zhishixingqiu.JPG | Bin 0 -> 145897 bytes 2 files changed, 1 insertion(+), 3 deletions(-) create mode 100644 assets/zhishixingqiu.JPG diff --git a/README.md b/README.md index 9ea6b304..2c711b56 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,7 @@ 『技术博客』:www.frankfeekr.cn | 『开源贡献』:⊱ 英雄招募令 | 『微信订阅号』:全栈开发社区

- - - +

diff --git a/assets/zhishixingqiu.JPG b/assets/zhishixingqiu.JPG new file mode 100644 index 0000000000000000000000000000000000000000..afdc791a54b767be2ed311dfcccf2da08e2f08d8 GIT binary patch literal 145897 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

O>(Swi?*|W$B=;R+( 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 literal 0 HcmV?d00001 From 566d7368741e805bc7e5f4f4e3abfb5f9eecc598 Mon Sep 17 00:00:00 2001 From: FrankFeekr <1002039945@qq.com> Date: Sat, 3 Sep 2022 19:10:43 +0800 Subject: [PATCH 19/19] no message --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c711b56..0a492743 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ 『技术博客』:www.frankfeekr.cn | 『开源贡献』:⊱ 英雄招募令 | 『微信订阅号』:全栈开发社区

-

+