
algorithm
文章平均质量分 60
牧羊人Full
你可以不受约束,不承担任何责任,对此博客任意评论。
展开
-
Remove Duplicates from Sorted List II simple and fast
class Solution {public: ListNode* deleteDuplicates(ListNode* head) { ListNode dummy(-1), *pre = &dummy, *iter; dummy.next = head; while (pre && pre->next) { if原创 2015-06-28 09:39:25 · 613 阅读 · 0 评论 -
Symmetric Tree: 简单的实现方式
class Solution {public: bool isSymmetric(TreeNode* rootl, TreeNode* rootr){ if (!rootl && !rootr) return true; else if (rootl && rootr && rootl->val == rootr->val原创 2015-06-30 15:06:00 · 711 阅读 · 0 评论 -
Sum Root to Leaf Numbers : 精简实现方式
class Solution {public: int helper(TreeNode* root, int target) { if (root && !root->left && !root->right) return target * 10 + root->val; else if (!root) return 0;原创 2015-06-30 16:20:15 · 620 阅读 · 0 评论 -
Binary Search Tree Iterator: O(1)时间复杂度,O(h)空间复杂度
class BSTIterator {public: BSTIterator(TreeNode *root) { while (root) { lst.push_back(root); TreeNode *tmp = root->left; root = root->left; }原创 2015-06-30 17:35:57 · 1587 阅读 · 0 评论 -
Sudoku Solver : 53 lines and 12 ms
class Solution {public: bool helper(int r, int c, int mpRow[][9], int mpCol[][9], int mpGroup[][9], vector >& board) { if (r >= 9) { return true; } if (c >= 9){ c = 0; if (helper(r原创 2015-07-09 09:13:29 · 929 阅读 · 0 评论 -
Longest Substring Without Repeating Characters: 12ms
class Solution {public: int lengthOfLongestSubstring(string s) { int hash[256] = {0}; int len = s.size(); if (len <= 0) return 0; int maxLen = -1, curL原创 2015-07-02 17:29:46 · 727 阅读 · 0 评论 -
Restore IP Addresses : 0ms
class Solution {public: void helper(int dot, int pos, int len, vector& res, string& s, string& target) { int deltaLen = len - pos; if (dot == 3) { string tmp = s.substr(pos, de原创 2015-07-09 10:06:09 · 540 阅读 · 0 评论 -
N-QueensII : 4ms and short
class Solution {public: void helper(int row, int &res, int n, vector& solution) { if (row == n+1) { ++ res; } for (int i = 1; i <= n; ++ i) { if (canPlac原创 2015-07-09 15:45:09 · 614 阅读 · 0 评论 -
计数排序、基数排序、桶排序
#include #include #include #include #include using namespace std;class MySort {public: MySort(vector v):m_num(v) {} virtual ~MySort() = 0{} virtual void Sort() = 0; void display() { cop原创 2015-07-17 10:21:56 · 664 阅读 · 0 评论 -
Reverse Nodes in k-Group short and 24ms AC
class Solution {public: ListNode* reverseKGroup(ListNode* head, int k) { if (!head || k <= 0) return head; int len = 0; ListNode dummy(0), *iter = &dummy; dummy.next = he原创 2015-06-27 21:08:59 · 633 阅读 · 0 评论 -
leetcode:Container With Most Water 6行AC
class Solution {public: int maxArea(vector& height) { int start = 0, end = height.size() - 1; int imax = INT_MIN; while (end > start) { int res = (end - start)原创 2015-06-23 10:20:29 · 542 阅读 · 0 评论 -
归并排序、二分法查找的递归实现
一、归并排序// 归并排序// 2014-2-22#include using namespace std;void Merge(int* array, int p, int q, int r);void MergeSort(int* array, int p, int q);int main(){ int array[10]; for (int原创 2014-02-22 14:42:55 · 1566 阅读 · 0 评论 -
最大子数组的递归实现
源代码//找最大子数组 数组索引从0开始//2014-2-23#include using namespace std;int* FindMiddle(int* array, int low, int high, int middle);int* FindMax(int* array, int low, int high);extern int* gresult原创 2014-02-23 21:08:11 · 1408 阅读 · 0 评论 -
优先队列的c++实现
一、优先队列c++实现源代码#include #include using namespace std;//function: 返回最大值int HeapMaximum(int* array);//function: 返回最大值并删除int HeapRactMax(int*& array, int n);void Exchange(int* a, int原创 2014-02-27 22:15:00 · 2222 阅读 · 0 评论 -
二叉搜索树的c++实现
一、二叉搜索书的基本概念、难点前驱:大于该结点关键字的最小关键字的结点后继:小于该结点关键字的最大关键字的结点 删除操作分为三种情况,都调用了结点替换函数;较复杂的情况为要删除的结点有两个孩子,要进行两次替换,第一次将该结点的右子树中的最小值与该结点的右孩子替换,第二次将该结点与该结点的右子树替换。最后都会调用delete释放内存。 二、完整源代码#include原创 2014-03-04 22:12:10 · 1177 阅读 · 0 评论 -
红黑树c++实现
一、红黑树的基本概念性质:1、根结点的颜色是黑色2、红结点的两个孩子都为黑色3、根结点的父结点,所有叶子结点都为黑色(在程序中用NIL替换)4、每个结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点 黑高:从某个结点出发(不含该结点)到达一个叶结点的任意一条简单路径上的黑色结点个数称为该结点的黑高 二、c++源代码#include using原创 2014-03-06 21:23:12 · 1341 阅读 · 0 评论 -
拓扑排序c++实现
源代码//拓扑排序//2014-3-13#include #include using namespace std;#define MAX_VERTEXS 100class Graph{public: typedef struct _ArcNode //顶点 结构体 { int nkey; _ArcNode* next; _Ar原创 2014-03-13 21:52:00 · 2772 阅读 · 0 评论 -
BFS、加权图最短路径的c++实现
一、测试数据输入顶点数和边数:7 12请输入边:第1条边:1 2 2第2条边:1 4 1第3条边:2 4 3第4条边:2 5 10第5条边:3 1 4第6条边:3 6 5第7条边:4 3 2第8条边:4 5 2第9条边:4 6 8第10条边:4 7 4第11条边:5 7 6第12条边:7 6 1请输入起始结点和终止结点:1 6BFS:原创 2014-03-16 20:25:25 · 3339 阅读 · 0 评论 -
排序算法总结
#include #include using namespace std;class MySort {public: MySort(vector v):m_num(v) {} virtual ~MySort() = 0{} virtual void Sort() = 0; void display() { copy(m_num.begin(), m_num.end(),原创 2015-07-16 20:28:08 · 605 阅读 · 0 评论