# Monthly Archives: March 2015

## [leetcode] Path Sum II

Path Sum II Given a binary tree and a sum, find all root-to-leaf paths where each path’s sum equals the given sum. For example: Given the below binary tree and sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 […]

## [leetcode] Jump Game II

Jump Game II Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Your goal is to reach the last index in the minimum number of jumps. For example: Given […]

## [leetcode] Sudoku Solver

Sudoku Solver Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by the character ‘.’. You may assume that there will be only one unique solution. A sudoku puzzle… …and its solution numbers marked in red. 深搜加回溯剪枝。 class Solution { public: void […]

## [leetcode] Combination Sum II

Combination Sum II Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. Each number in C may only be used once in the combination. Note: All numbers (including target) will be positive integers. Elements […]

## [leetcode] First Missing Positive

First Missing Positive Given an unsorted integer array, find the first missing positive integer. For example, Given [1,2,0] return 3, and [3,4,-1,1] return 2. Your algorithm should run in O(n) time and uses constant space. 关键是只允许常数空间。这里要突破思维定势，要改变给定数组的结构。 对于A[i]，如果A[i] > 0 && A[i] <= n，则将它与A[i] – 1 位置的元素互换位置。 遍历一遍后，再从左到右找到第一个A[i] != i + […]

## [leetcode] Merge Two Sorted Lists

Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 简单题，归并排序即可。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * […]

## [leetcode] Trapping Rain Water

Trapping Rain Water Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6. The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units […]

## 1. Yii — MVC 开发 — M,V,C各自的职责

Model 表示网站内在的数据结构，它的代码中不应该包括HTML，CSS等前端语言，并且不应该处理\$_GET, \$_POST的用户请求。前者是Controller来做的，后者是View来处理的。 它的职责是对数据库进行增删改查，并且在进行数据库操作前进行数据合法性的校验。 View 面对用户呈现数据最终的表现形式。 它应该包括HTML代码，和简单的遍历，格式化，渲染数据的PHP代码。 它不应该包括对数据库的操作和对用户请求的处理(\$_GET, \$_POST) 他可以调用Controller或Model的成员变量或是方法，但它应该仅仅用来呈现数据。 View可以有不同的复用形式： Layout： 页面中共同的表现区域，比如header，footer就可以放在layout的view中 Partial views：partial view渲染时不会被layout装饰，也即它不会带上layout的渲染代码。它可以被用来作为页面区域的复用。 Widgets：如果partial view中需要很多的逻辑计算，那它就是一个空间(widgets)。它可以是一个HTML的标记区域。包含复杂的逻辑。 Helper class：如果view中我们需要一些代码片段来格式化数据或者生成HTML标签。我们就可以把他们放在helper class中而不是直接放在view中。Yii有一个强大的CHtml helper class可以产生常用的HTML代码。Helper Class可以放在自动加载目录中，这样它就可以不用显式地加载就可以被使用。 Controller Controller就像胶水一样，把model，view和其他components粘在一起，共同组成一个可以运行的网站应用。Controller负责直接处理用户的请求，也就是说，controller: 1. 直接访问\$_GET, \$_POST，和其他包含用户请求的PHP变量。 2. 创建model的实例并且控制它的生命周期。比如，在一个典型的model update的动作中，controller可以先创建model的实例；然后用用户输入填充这个model实例。在成功存储model后，controller可以把用户浏览器重定向到model的详情页。注意，实际的存储model的实现代码需要写在model中而不是controller。 3. 应该避免包括SQL语句，它应该在model中。 4. 应该避免包括HTML语句，它应该在view中。   在一个设计良好的MVC应用中，controller应该非常短小，可能只包含几十行代码。大量的代码在model中，因为它需要处理数据。并且每个应用的model的业务逻辑都不尽相同。