LeetCode
Thisisit_Gao
软件工程本科生
系统结构研究生
展开
-
Unique Paths
Unique Paths 题目描述的很清楚,只能向下或向右移动,那么到达任一个格子的可能路径为应该为 current = up+left。因此只需要一个一维数组,在第零行的时候因为上面没有格子,因此只能是从左面过来,所以初始化初值都为1一个长度为n的vector。当到第一行时,对于每个格子,在数组相应位置存储的是其上面格子的路径数,而根据我们之前的公式所以此时v[current] = v[cur原创 2015-09-05 11:54:08 · 305 阅读 · 0 评论 -
Word Search
Word Search 这道题我们有用到什么高深的算法,就一个深度搜索搞定,只是其中的判断条件比较多,需要仔细思考到每种情况,还要注意一个字母只能使用一次。-变量,函数声明解释tag数组:用来标示该字母是否已经使用过flag:全局变量,如果标示是否已经找到匹配,如果为真立刻返回dfsSearch函数:深搜函数直接上代码bool flag;class Solution {public:原创 2015-09-05 11:30:34 · 306 阅读 · 0 评论 -
Two Sum
刚拿到提很自然的想到了排序之后首尾指针扫描,但是排序会改变数组原来的位置,因此最终给出的index是错的。网上看来别人的思路之后豁然开朗,可以定义一个结构体,结构体中存放数值和原来的index,之后在=再排序,使用首尾指针,当然排序函数得自己写。struct Node{ int value; int pos;};bool cmp(Node a,Node b){ return a.v原创 2015-09-07 11:01:26 · 328 阅读 · 0 评论 -
Valid Anagram
题目很简单,就是看两个字符串是否具有相同的字符。初始化一个长度为26,初值为0的数组。s中存在c,则在数组相应位置加1,t中存在c,则在数组相应位置减1.最终如果数组中存在不为0的项,则返回false,否则返回true。直接上代码class Solution {public: bool isAnagram(string s, string t) { int n = s.le原创 2015-09-07 10:41:56 · 345 阅读 · 0 评论 -
Unique Paths II
与上一个题目类似,只是矩阵中有些障碍,那么任何障碍点的到达路径数为0,因此我们依然只需要一个一维数组保存上层每个位置的路径数,只是当遇到障碍时要置0,使用一维数组的思想在上一篇博客中Unique Paths。接下来直接上代码#define MaxSize 120class Solution {public: int uniquePathsWithObstacles(vector原创 2015-09-07 09:55:22 · 449 阅读 · 0 评论 -
Triangle
刚那道题立刻想到动态规划,从顶开始向下走,使用二维数组存储每个位置当前最小值。没有什么思想可说,直接上代码。class Solution {public: int minimumTotal(vector >& triangle) { int size = triangle.size(); // int len = triangle[0].size();原创 2015-09-07 17:18:14 · 669 阅读 · 0 评论