MeiYL's Blog


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

剑指offer-变态跳台阶

发表于 2016-01-24 | 分类于 算法 | | 阅读次数:

剑指offer上的题目,在牛客网上刷题通过,下面记录相关思路。

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

问题分析

好吧这次真的是变态青蛙,居然可以一次直上n级台阶。
设跳到第n级台阶有f(n)种跳法。不同于普通青蛙,这次最后一跳跃就有了n种选择:

  • 从第n-1级台阶跳上1级
  • 从第n-2级台阶跳上2级
  • 从第n-3级台阶跳上3级
  • ……
  • 从第0级台阶跳上n级(即从起点起跳)

则可得到递推公式:

f(n) = f(n-1) + f(n-2) + f(n-3) + … + f(1) + f(0)
且f(0) = 1,f(1) = 1

阅读全文 »

剑指offer-跳台阶

发表于 2016-01-23 | 分类于 算法 | | 阅读次数:

剑指offer上的题目,在牛客网上刷题通过,下面记录相关思路。

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

问题分析

设跳到第n级台阶的方法有f(n)种。则最后一次跳跃有两种选择:

  • 从第n-2级台阶跳上2级
  • 从第n-1级台阶跳上1级

则可得到递推公式:

f(n) = f(n-1) + f(n-2)
且f(0) = 0, f(1) = 1, f(2) = 2

有了公式很容易构造程序,不难看出这是一个斐波那契数列。

阅读全文 »

剑指offer-二维数组的查找

发表于 2016-01-20 | 分类于 算法 | | 阅读次数:

剑指offer上的题目,在牛客网上刷题通过,下面记录相关思路。

题目描述

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

问题分析

对于有序数组,二分搜索是一个有效且复杂度很低的算法,一维有序数组的查找通过二分搜索很容易实现。假设数组递增,将目标元素与数组中间元素比较,若目标元素较大,则要查找的元素位于中间元素右边,反之位于左边,相等则找到目标元素,结束算法。重复上述步骤,即可在O(logN)时间复杂度内得到结果。通俗来说,上述步骤就是重复地将数组对折,依次减少查找空间,那么二维数组如何达到这样的效果?

阅读全文 »

JavaScript提升机制

发表于 2016-01-08 | 分类于 JavaScript | | 阅读次数:

引子

在讨论这个问题之前,我们需要先弄清楚一个语文问题:什么是声明,什么是定义?在很多讲编程语言的书籍中喜欢混淆这两个概念,读者也就无所谓了,大概就是“新建一个变量”。
通俗的来讲,var i;是声明一个变量i,但没有赋予初值,var i = 0;是声明一个变量i,并定义它的初值为0。后面统一使用该标准来描述。为什么要啰嗦这些呢,因为语义的原因,在JavaScript中出现了令人不解的现象。首先来看一段代码:

1
console.log(a);    // Output: ReferenceError: a is not defined

很显然在打印之前并不存在变量a,会报ReferenceError。那么再看下面这段代码:
1
2
var a;
console.log(a); // Output: undefined

这里有人就会说,我明明在打印前定义了变量a,为什么还说没有定义呢。因为var a;只是声明了变量,而并没有定义它的值是什么。完整的声明并定义应该是var a = 'hello';,这就是语义所产生的误会。
阅读全文 »

[转]AngularJS开发者最常犯的10个错误

发表于 2015-11-28 | 分类于 JavaScript | | 阅读次数:

AngularJS是如今最受欢迎的JS框架之一,简化开发过程是它的目标之一,这使得它非常适合于元型较小的apps的开发,但也扩展到具有全部特征的客户端应用的开发。易于开发、较多的特征及较好的效果导致了较多的应用,伴随而来的是一些陷阱。本文列举了AngularJS的一些共同的易于也问题的地方,尤其是在开发一个app的时候。

MVC目录结构

AngularJS是一个缺乏较好的term的MVC框架,其models不像backbone.js中那样做为一个框架来定义,但其结构模式仍匹配的较好。当在一个MVC框架中作业时,基于文件类型将文件组合在一起是其共同的要求:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
templates/
_login.html
_feed.html
app/
app.js
controllers/
LoginController.js
FeedController.js
directives/
FeedEntryDirective.js
services/
LoginService.js
FeedService.js
filters/
CapatalizeFilter.js

这样的布局,尤其是对那些有Rails背景的人来说,看起来挺合理。可是当app变得越来越庞大的时候,这样的布局结构会导致每次都会打开一堆文件夹。无论你是用Sublime,Visual Studio,还是Vim with Nerd Tree,每次都要花上很多时间滑动滚动条浏览这个目录树来查找文件。如果我们根据每个文件隶属的功能模块来对文件分组,而不是根据它隶属的层:
阅读全文 »

1…456…8
MeiYL

MeiYL

一本正经地胡说八道

36 日志
10 分类
34 标签
GitHub Stack Facebook Twitter 知乎
  • thewangcj
© 2015 — 2019 MeiYL
由 Hexo 强力驱动
|
主题 — NexT.Pisces