Algorithm
lane_L
这个作者很懒,什么都没留下…
展开
-
二叉树的深度
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int max = 0; void Tree原创 2015-05-03 12:06:26 · 368 阅读 · 0 评论 -
求1+2+3+...+n
class Temp{public: Temp(){ N++; sum += N; } static int getResult(){ return sum; } static void reset(){ N = 0; sum = 0; }private: s原创 2015-05-04 13:25:36 · 870 阅读 · 0 评论 -
不用加减乘除做加法
class Solution {public: int Add(int num1, int num2) { int sum,carry; do{ sum = num1 ^ num2; carry = (num1 & num2) << 1; num1 = sum;原创 2015-05-04 16:47:47 · 517 阅读 · 0 评论 -
把字符串转换成整数
class Solution {public: int StrToInt(string str) { if(str.length() == 0) return 0; bool flag = true; int k = 0; if(str[0] == '+'){ k++; }els原创 2015-05-04 17:02:50 · 739 阅读 · 0 评论 -
二维数组中的查找
解法1:class Solution {public: bool Find(vector > array,int target) { int rows = array.size(); int columns = array[0].size(); if(rows == 0 || columns == 0) return false;原创 2015-05-01 13:33:15 · 443 阅读 · 0 评论 -
旋转数组的最小数字
class Solution {public: int minNumberInRotateArray(vector rotateArray) { int start = 0; int end = rotateArray.size() - 1; while(start <= end){ int middle = (start原创 2015-05-01 15:27:59 · 462 阅读 · 0 评论 -
二进制中1的个数
class Solution {public: int NumberOf1(int n) { int num = 1; int count = 0; for(int i = 0; i < 32; i++){ if((n & num) % 2 != 0) count++;原创 2015-05-01 15:48:00 · 357 阅读 · 0 评论 -
数组中重复的数字
class Solution {public: // Parameters: // numbers: an array of integers // length: the length of array numbers // duplication: (Output) the duplicated number in the原创 2015-05-04 22:10:23 · 694 阅读 · 0 评论 -
构建乘积数组
class Solution {public: vector multiply(const vector& A) { vector result; if(A.size() == 0) return result; result.push_back(1); int temp = 1; for(int i原创 2015-05-04 23:09:42 · 996 阅读 · 0 评论 -
跳台阶
class Solution {public: int jumpFloor(int number) { int fb[3]; fb[0] = 1; fb[1] = 1; fb[2] = 2; if(number <= 1) return 1; if(number <= 2)原创 2015-05-01 12:02:07 · 445 阅读 · 0 评论 -
孩子们的游戏(圆圈中最后剩下的数)
class Solution {public: int LastRemaining_Solution(unsigned int n, unsigned int m) { if(n < 0 || m < 1) return -1; int last = 0; for(int i = 2; i <= n; i ++){原创 2015-05-03 23:41:44 · 551 阅读 · 0 评论 -
[LeetCode]-006-ZigZag Conversion
网址:https://leetcode.com/problems/zigzag-conversion/题意:转换一种编码格式?类似于这种意思吧...反正挺无聊的一题...找规律...模拟题分析:特别注意以下numRows等于1和字符串长度小于numRows解法:按照行列来划分,常规的就是满列,非常规的就是每隔(numRows)就存在的(多余)值代码:http原创 2015-04-28 21:36:17 · 680 阅读 · 0 评论 -
数组中只出现一次的数字
class Solution {public: void FindNumsAppearOnce(vector data,int* num1,int *num2) { if(data.size() < 2){ *num1 = 0; *num2 = 0; return; } int num原创 2015-05-03 14:44:09 · 485 阅读 · 0 评论 -
左旋转字符串
class Solution {public: string LeftRotateString(string str, int n) { if(str.length() == 0) return ""; n = n % str.length(); string left = str.substr(n,str.length()-n);原创 2015-05-03 21:23:48 · 422 阅读 · 0 评论 -
翻转单词顺序列
class Solution {public: void ReVerse(string &str,int start,int end){ if(str.length() == 0) return; while(start < end){ char c = str[start];原创 2015-05-03 22:39:54 · 468 阅读 · 0 评论 -
扑克牌顺子
class Solution {public: bool IsContinuous( vector numbers ) { int special = 0; bool flag = false; int last; sort(numbers.begin(),numbers.end()); for(int i = 0; i <原创 2015-05-03 22:52:14 · 578 阅读 · 0 评论 -
和为S的两个数字
class Solution {public: vector FindNumbersWithSum(vector array,int sum) { int head = 0; int tail = array.size() - 1; vector result; while(head < tail){ if(array原创 2015-05-03 16:17:46 · 450 阅读 · 0 评论 -
数组中的逆序对
class Solution {public: vector copyData; vector data; int InversePairsCore(int start,int end){ if(start == end){ copyData[start] = data[start]; return 0;原创 2015-05-03 11:20:03 · 490 阅读 · 0 评论 -
和为S的连续正数序列
class Solution {public: vector > FindContinuousSequence(int sum) { int small = 1; int big = 2; int num = small + big; vector > result; while(small * 2 <= sum){原创 2015-05-03 21:16:17 · 388 阅读 · 0 评论 -
[LeetCode]-004-Median of Two Sorted Arrays
网址:https://leetcode.com/problems/median-of-two-sorted-arrays/题意:给了两组有序数,找出他们总的中位数提示:中位数是左右相等数目数的值,如果不存在,则取左右相等数目数的两个数的平均值.解法1:把两组数合并成一组数.也可以是O(m+n).但空间复杂度是O(m+n).明显有更好的解法.解法2:因为两组数原创 2015-04-28 19:17:35 · 868 阅读 · 0 评论 -
[LeetCode]-005-Longest Palindromic Substring
网址:https://leetcode.com/problems/longest-palindromic-substring/题意:找出最长回文字符串.解法1:自然是暴力枚举,把每一个元素从中间往左右遍历,如果是且是最长的存下字符串.比如abccba.定位元素是2->c.找左1->b.不行找右3->c.可以->找左右同时->找左右同时找左右同时.不行思路就是原创 2015-04-28 21:02:53 · 738 阅读 · 0 评论 -
替换空格
class Solution {public: string replaceSpace(string str) { int count = 0; int oldLen = str.length(); for(int i = oldLen - 1; i >= 0; i--){ if(str[i] == ' ') co原创 2015-05-01 13:53:35 · 348 阅读 · 0 评论 -
重建二叉树
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Soluti原创 2015-05-01 14:39:20 · 424 阅读 · 0 评论 -
树的子结构
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: bool MakeSureHave(TreeN原创 2015-05-01 18:11:59 · 462 阅读 · 0 评论 -
二叉树的镜像
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void Mirror(TreeNode *pRoot)原创 2015-05-01 18:25:34 · 347 阅读 · 0 评论 -
正则表达式匹配
class Solution {public: bool match(char* str, char* pattern){ if(str == NULL || pattern == NULL) return false; return matchCore(str,pattern); } bool matchCore(char* s原创 2015-05-05 10:20:50 · 649 阅读 · 0 评论 -
数值的整数次方
class Solution {public: double Power(double base, int exponent) { if(exponent == 0) return 1; if(base - 0.0 -1e-9) return 0.0; double result = base;原创 2015-05-01 15:55:40 · 428 阅读 · 0 评论 -
表示数值的字符串
class Solution {public: bool isNumeric(char* string) { if(string == NULL) return false; if(*string == '+' || *string == '-') string++; if(*string == '\0')原创 2015-05-05 16:20:30 · 726 阅读 · 0 评论 -
字符流中第一个不重复的字符
class Solution{public: int num[256]; int index; Solution(){ for(int i = 0; i < 256; i++) num[i] = -1; index = 0; } //Insert one char from stringstream vo原创 2015-05-05 21:08:24 · 536 阅读 · 0 评论 -
栈的压入、弹出序列
class Solution {public: bool IsPopOrder(vector pushV,vector popV) { stack s; int k = 0; for(int i = 0; i < pushV.size(); i++){ if(pushV[i] != popV[k]){原创 2015-05-02 11:46:31 · 459 阅读 · 0 评论 -
[LeetCode]-010-Regular Expression Matching
网址:https://leetcode.com/problems/regular-expression-matching/题意:输入的字符串是否被规则序列完全覆盖.其中 . 代表一个任意字符其中 * 代表任意个任意字符分析:其实就是对正则的一部分实现.都是很实用的技能和技巧.难点在于对于*的取舍.*可以是0,也可以是任意值,但却未必是最大值.尝试用迭代法做.原创 2015-05-18 15:24:05 · 820 阅读 · 0 评论 -
[LeetCode]-012-Integer to Roman
网址:https://leetcode.com/problems/integer-to-roman/题意:模拟题...自己去查罗马数字怎么转化的就ok.代码:https://github.com/LiLane/leetcode/blob/master/java/012-IntegertoRoman-201505181637.javahttps://github.com/Li原创 2015-05-18 16:40:16 · 832 阅读 · 0 评论 -
反转链表
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead == NULL)原创 2015-05-01 17:35:09 · 433 阅读 · 0 评论 -
斐波那契数列
class Solution {public: int Fibonacci(int n) { if(n == 0) return 0; if(n == 1) return 1; int result[3] = {0,1,1}; for(int i = 3; i <= n; i++){原创 2015-05-01 15:36:28 · 383 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
class Solution {public: void reOrderArray(vector &array) { int even,odd; int len = array.size(); if(len == 0 || len == 1) return; for(int i = 0;i < len; i++){原创 2015-05-01 16:40:38 · 399 阅读 · 0 评论 -
用两个栈实现队列
class Solution{public: void push(int node) { while(!stack2.empty()){ stack1.push(stack2.top()); stack2.pop(); } stack1.push(node); } int pop() { while原创 2015-05-01 14:49:06 · 371 阅读 · 0 评论 -
链表中倒数第k个结点
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { if原创 2015-05-01 17:27:11 · 453 阅读 · 0 评论 -
合并两个排序的链表
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* pHead2) { ListNode* h原创 2015-05-01 17:46:49 · 421 阅读 · 0 评论 -
变态跳台阶
class Solution {public: int jumpFloorII(int number) { int result = 1; for(int i = 2; i <= number; i++) result *= 2; return result; }};原创 2015-05-01 12:09:31 · 378 阅读 · 0 评论 -
顺时针打印矩阵
class Solution {public: vector printMatrix(vector > matrix) { int rows = matrix.size(); int columns = matrix[0].size(); int i = 0,j = 0; vector result; bool flag[ro原创 2015-05-01 19:02:27 · 393 阅读 · 0 评论