自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 [leetcode] Combination Sum IV

思路:记忆化搜索,定义函数查找以index开始,值为target的个数,顺便对nums排序减少不必要的搜索。代码如下:class Solution {public: int combinationSum4(vector& nums, int target) { int result = 0; if(nums.empty() || target ==

2016-07-26 01:34:19 399

原创 [leetcode] Single Number III

同Single Number,异或后按照得到的结果中bit位为1的将数组分为两组,结果必然各存在于这两组中,分别异或得到结果。代码如下:vector singleNumber(vector& nums) { int tmp = 0; vector result(2, 0); for(auto num : nums) { t

2016-03-21 15:01:48 298

原创 [leetcode] Word Pattern

注意一一对应即可:class Solution {public: bool wordPattern(string pattern, string str) { int i = -1, pos = 0; unordered_map mp; unordered_set st; while(++i < pattern.leng

2016-03-19 00:15:05 358

原创 [leetcode] Self Crossing

class Solution {public: bool isSelfCrossing(vector& x) { /*solution 1: only in three cases when cross /* i-2 case 1 : i-1┌─┐ └─┼─

2016-03-18 15:13:38 300

原创 [leetcode] Invert Binary Tree

和最近比较火的一条Twitter相关,题目本身其实并不难...递归和非递归代码如下:/*if(!root) return root; TreeNode* lf = root->left; root->left = invertTree(root->right); root->right = invertTree(lf);

2015-06-14 15:18:48 396

原创 [leetcode] Maximal Square

动态规划,dp[i][j]代表以i,j为右下角的正方形的最长边长。代码如下:int maximalSquare(vector>& matrix) { int result = 0; if(matrix.empty()) return result; const int n = matrix.size();

2015-06-03 16:40:36 1182

原创 [leetcode] Combination Sum III

简单题,和前面两个类似。代码如下:class Solution {public: vector> combinationSum3(int k, int n) { vector > result; vector num; dfs(k, n, result, num, 1); return result; }pri

2015-06-03 15:49:24 1101

原创 [leetcode] House Robber II

和I类似,II变成了环形,即首尾只能取一个。调用两次即可。代码如下:int rob(vector& nums) { if(nums.empty()) return 0; if(nums.size() == 1) return nums[0]; int val = *prev(nums.end());

2015-05-23 18:40:53 308

原创 [leetcode] Add and Search Word - Data structure design

字典树,代码如下:class TrieNode {public: // Initialize your data structure here. TrieNode() { for(int i = 0; i < 26; ++i) next[i] = NULL; end = false; } void ins

2015-05-23 17:46:31 424

原创 [leetcode] Word Search

dfs,代码如下:class Solution {public: bool exist(vector > &board, string word) { const int row = board.size(); const int column = board[0].size(); vector > visited(row, vecto

2015-05-23 17:28:29 351

原创 [leetcode] Word Search II

直接用word search暴力果断超时,根据提示可对words先构建字典树,然后dfs。代码如下:class TrieNode {public: // Initialize your data structure here. TrieNode() { for(int i = 0; i < 26; ++i) next[i] = NULL

2015-05-23 17:27:48 780

原创 [leetcode] Course Schedule II

和Course Schedule类似,记录下结果即可。代码如下:vector findOrder(int numCourses, vector>& prerequisites) { vector result; vector into(numCourses, 0); for(int i = 0; i < prerequisites.size();

2015-05-15 14:41:10 289

原创 [leetcode] Implement Trie (Prefix Tree)

实现字典树基本功能,包括查找key和前缀。代码如下:class TrieNode {public: // Initialize your data structure here. TrieNode() { for(int i = 0; i < 26; ++i) next[i] = NULL; end = false;

2015-05-08 13:59:16 268

原创 [leetcode] Reverse Linked List

链表简单题,遍历头插法即可。代码如下:ListNode* reverseList(ListNode* head) { if(!head) return head; ListNode dummy(-1); dummy.next = head; ListNode *cur = head; Lis

2015-05-07 14:56:48 293

原创 [leetcode] Course Schedule

图算法,判断有向图是否存在回路。拓扑排序即可,代码如下:bool canFinish(int numCourses, vector>& prerequisites) { vector into(numCourses, 0); for(int i = 0; i < prerequisites.size(); ++i) into[prereq

2015-05-07 14:52:21 700

原创 [leetcode] Isomorphic Strings

简单题,map记录下即可~代码如下:bool isIsomorphic(string s, string t) { if(s.length() != t.length()) return false; unordered_map mp1; unordered_map mp2; for(int i = 0;

2015-04-30 15:29:48 425

原创 [leetcode] Happy Number

简单题,模拟并记录即可~代码如下:bool isHappy(int n) { unordered_set appear; while(n != 1){ appear.insert(n); int tmp = n; n = 0; while(tmp){

2015-04-22 11:01:31 290

原创 [leetcode] Bitwise AND of Numbers Range

简单题,当m和n不相等时,即区间内必存在奇偶数,故低位AND后取0,故结果为m和n从高位开始取相等的那些位得到的值。代码如下:int rangeBitwiseAnd(int m, int n) { int p = 0; while(m != n && m != 0){ ++p; m >>= 1;

2015-04-20 21:47:14 342

原创 [leetcode] Number of Islands

BFS或DFS,利用grid数组来标记是否访问。代码如下:int numIslands(vector> &grid) { if(grid.empty()) return 0; const int m = grid.size(); const int n = grid[0].size(); int dir[4

2015-04-14 16:56:34 305

原创 [leetcode] Binary Tree Right Side View

dfs,记录已经访问到的层数即可。代码如下:vector rightSideView(TreeNode *root) { vector result; int curLevel = 0, level = -1; dfs(result, curLevel, level, root); return result; }

2015-04-07 22:09:32 371

原创 [leetcode] House Robber

简单题,代码如下:int rob(vector &num) { if(num.empty()) return 0; int pre = 0, cur = num[0]; int result = cur; for(int i = 1; i < num.size(); ++i){ re

2015-04-07 22:07:30 258

原创 砝码分块全称重问题

问题描述:一个M重的砝码,最少分成N块,使得所有1-M重的物品都可以用这N块砝码称出。分析:1、很容易想到二进制的方法,即每一块可以取也可以不取,即0和1,分类即1+2+4+...+2^(N-2)+X=M。    证明:由二进制可知1-(2^(N-1)-1)都可以称出,设现在需要称出2^(N-1)-1+Y的重量(Y可由前N-1个砝码中去除重量和为X-Y的砝码,加上第N个砝码后重量为

2015-03-03 10:36:01 500

原创 [leetcode] Department Top Three Salaries

简单连接统计~~select d.Name as Department,ee.Name as Emplyee,ee.Salary as Salaryfrom Department d,( select * from Employee e where (select count(distinct Salary) from Employee where

2015-01-26 17:36:54 1162

原创 [leetcode] Consecutive Numbers

用用户变量记录出现次数即可~select distinct NUM from( select NUM, @count := if(@prevNum = NUM, @count + 1, 1) as cnt, @prevNum := NUM from Logs, (select @prevNum := NULL) pn, (select @count := 0) ct o

2015-01-22 16:28:04 1562

原创 [leetcode] Largest Number

bool cmp(const int &a, const int &b){ string sa = to_string(a); string sb = to_string(b); return sa + sb > sb + sa;}class Solution {public: string largestNumber(vector &num) {

2015-01-21 13:11:34 362

原创 [leetcode] Dungeon Game

动态规划,代码如下:int calculateMinimumHP(vector > &dungeon) { const int m = dungeon.size(); const int n = dungeon[0].size(); int dp[m][n]; dp[m - 1][n - 1] = getMin(1 - dun

2015-01-09 15:21:54 633

原创 [leetcode] Fraction to Recurring Decimal

细节题,余数出现相同时即循环节。代码如下:string fractionToDecimal(int numerator, int denominator) { int flag = 1; long long lnum = numerator, lden = denominator; if(numerator < 0){ lnum =

2014-12-19 09:27:04 350

原创 [leetcode] Compare Version Numbers

细节题,代码如下:int compareVersion(string version1, string version2) { int index1 = 0, index2 = 0; while(index1 < version1.length() || index2 < version2.length()){ int temp1, te

2014-12-17 09:56:15 404

原创 [leetcode] Merge Intervals

细节题,代码如下: bool comp(const Interval &a, const Interval &b){ if(a.start == b.start) return a.end < b.end; return a.start < b.start;}class Solution {public: vector me

2014-11-13 13:51:45 306

原创 [leetcode] Insert Interval

细节题,代码如下:

2014-11-13 13:42:46 284

原创 最近点对问题

编程之美,最近点对问题(二维)。代码如下:

2014-10-16 14:58:58 421

转载 Pattern Searching using a Trie of all Suffixes

以下是构造banana\0的后缀树:

2014-09-04 16:41:25 361

转载 树状数组

树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。  在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。          但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。          可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需

2014-07-16 10:55:37 260

原创 [leetcode] Longest Valid Parentheses

用栈,并改变匹配的括号在s中的位置的值为‘0’。最后统计连续0的geshu

2014-07-04 17:34:37 308

原创 [leetcode] Minimum Window Substring

代码如下:class Solution {public: string minWindow(string S, string T) { unordered_map count; unordered_map found; int index = 0, minLen = INT_MAX; int num = 0;

2014-07-04 16:42:25 468

原创 求最长回文子串

求最长回文子串,大概有以下几种方法:1、

2014-07-03 16:22:35 638

原创 c++手动和STL实现堆排序

好久没看最小堆和最大堆了

2014-07-02 17:08:02 1296

转载 2-sat问题

什么是2-sat问题?2-sat问题就是2判定问题,是一种特殊的逻辑panduanwen

2014-06-10 10:35:05 640

转载 tarjan算法

由Robert Tarjan发明的求有向图强连通分量的算法。

2014-06-09 15:09:51 340

转载 拓扑排序

对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。

2014-06-09 14:26:49 466

悟透JavaScript

悟透JavaScript是一本学习JavaScript很好的教材

2011-06-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除