- 博客(43)
- 资源 (9)
- 收藏
- 关注
原创 4. Median of Two Sorted Arrays
在寻找两个已经排好序的数组的第k小的元素的时候参考了下面一篇博客 http://blog.csdn.net/beiyeqingteng/article/details/7533304/class Solution {private: int findK(vector<int>& nums1,int pa,vector<int>& nums2,int setpa,int k) {
2016-05-30 10:29:36 339
原创 108. Convert Sorted Array to Binary Search Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-27 09:17:46 314
原创 47. Permutations II
class Solution {public: vector<vector<int>> permuteUnique(vector<int>& nums) { vector<vector<int>> ret; if(nums.size()==0) return ret; sort(nums.begin(),nums.en
2016-05-26 21:36:24 346
原创 46. Permutations
class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<vector<int>> ret; if(nums.size()==0) return ret; vector<int> temp; temp.
2016-05-26 19:19:05 347
原创 349. Intersection of Two Arrays
class Solution { public: vector intersection(vector& nums1, vector& nums2) { sort(nums1.begin(),nums1.end()); sort(nums2.begin(),nums2.end()); vector<int> a; int i=0;
2016-05-26 16:36:18 310
原创 93. Restore IP Addresses
枚举class Solution {public: vector<string> restoreIpAddresses(string s) { vector<string> ret; string ans; for (int a=1; a<=3; a++) for (int b=1; b<=3; b++)
2016-05-25 10:19:10 541
原创 95. Unique Binary Search Trees II
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-23 19:54:36 308
原创 117. Populating Next Right Pointers in Each Node II
/** * Definition for binary tree with next pointer. * struct TreeLinkNode { * int val; * TreeLinkNode *left, *right, *next; * TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {
2016-05-22 11:18:51 254
原创 116. Populating Next Right Pointers in Each Node
/** * Definition for binary tree with next pointer. * struct TreeLinkNode { * int val; * TreeLinkNode *left, *right, *next; * TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {
2016-05-22 11:00:20 262
原创 107. Binary Tree Level Order Traversal II
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-22 10:43:49 322
原创 102. Binary Tree Level Order Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-22 10:28:53 266
原创 114. Flatten Binary Tree to Linked List
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-22 09:58:06 259
原创 99. Recover Binary Search Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-18 11:01:17 269
原创 110. Balanced Binary Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-18 10:12:34 233
原创 103. Binary Tree Zigzag Level Order Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-17 10:01:31 264
原创 106. Construct Binary Tree from Inorder and Postorder Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-16 11:48:45 261
原创 105. Construct Binary Tree from Preorder and Inorder Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-16 11:37:38 218
原创 111. Minimum Depth of Binary Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-16 10:44:12 203
原创 104. Maximum Depth of Binary Tree
遍历所有可能的情况, 到了叶节点 则更新最大深度/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(
2016-05-16 10:16:15 254
原创 113. Path Sum II
遍历所有的路径 并将遍历的路径保存下来 遍历到叶子节点的时候 将满足条件的路径加入ret中 最后返回./** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x)
2016-05-16 09:59:16 225
原创 112. Path Sum
枚举出所有路径 然后看所有的路径和中有没有所要的数/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), righ
2016-05-16 09:35:59 247
原创 129. Sum Root to Leaf Numbers
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-14 23:16:15 192
原创 94. Binary Tree Inorder Traversa
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-14 22:52:52 345
原创 145. Binary Tree Postorder Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-14 22:40:05 215
原创 144. Binary Tree Preorder Traversal
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-14 22:20:39 221
原创 100. Same Tree
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class
2016-05-14 22:02:50 223
原创 75. Sort Colors
left指向存放0的位置 middle指向正在扫描的元素 right 指向存放2的位置 当middle 指向1的跳过 指向 0时和left交换 指向2时和right交换 但是注意到middle>=left 所以left指向的元素为1 所以和middle交换后 直接left++ middle++ 而right指向的元素不确定所以和middle交换后 right– 而middle却没有变
2016-05-13 20:11:31 298
原创 79. Word Search
class Solution {private: int m; int n; bool dfs(vector<vector<char>>& board,int i,int j,string word) { if(word.size()==0)//如果要搜索的词长度为0就返回存在 return true; else
2016-05-13 19:16:39 424
原创 31. Next Permutation
参考了这篇文章http://wordaligned.org/articles/next-permutation#toc5 不得不说外国人写的真的很详细 这篇文章讲解了寻找字典序中的下一个序列的原理 在字典序中 所有的元素按从小到大排列是最小的字典序 所有的元素按从大到小排列是最大的字典序i,ii指向相连的两个元素 从后向前遍历寻找第一个满足*i<**ii的元素 这样整个序列就可以分为h
2016-05-10 17:59:35 319
原创 73. Set Matrix Zeroes
class Solution {public: void setZeroes(vector<vector<int>>& matrix) { int m=matrix.size(); int n=matrix[0].size(); vector<int> row(m,1); vector<int> column(n,1);
2016-05-10 09:23:05 512
原创 18. 4Sum
class Solution {public: vector<vector<int>> fourSum(vector<int>& nums, int target) { int i,j,left,right; int temporaryt; int n=nums.size(); vector<vector<int>> ret;
2016-05-10 08:54:56 505
原创 3Sum Closest
class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int i,left,right; int n=nums.size(); int sum,difference; difference=0x7ffffff;
2016-05-09 23:26:42 292
原创 15. 3Sum
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { sort(nums.begin(),nums.end()); vector<vector<int>> ret; int n=nums.size(); if(n<3)
2016-05-09 11:41:15 289
原创 1. Two Sum
使用unordered_map 比map 查找单个元素要快 unordered_map使用的是红黑树来实现底层的public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> ret; unordered_map<int,int> m; for(int i=0
2016-05-09 10:01:41 234
原创 11. Container With Most Wate
题意是 给一个数组 数组中的每个数代表了一个线段的高度 求两个线段所能乘下的最多的水 本来我以为题目和42. Trapping Rain Water一样 但是后来才发现 线段是不计算宽度的 也就是说 两个线段中间存在一个比这两个线段都高的线段是没有关系的。 可以枚举出所有的可能的组合 求出最大的面积 但是时间复杂度是n*n 还有一种o(n)的方法 就是从最左边和最右边开始遍历 刚刚开
2016-05-09 09:24:40 311
原创 48. Rotate Image
要把整个矩阵顺时针旋转90度 可以变成 将矩阵先沿着从左上到右下的对角线做对称变换 然后再沿着竖直中心做对称变换 感觉旋转似乎都可以转换成对称变换class Solution {public: void rotate(vector<vector<int>>& matrix) { if(matrix.empty()) return ;
2016-05-09 08:40:20 194
原创 54. Spiral Matrix
class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> ret; int l=0;//记录是最外面的第几层 int m=matrix.size(); if(m==0) retur
2016-05-08 11:45:35 405
原创 41. First Missing Positive
class Solution {public: int firstMissingPositive(vector<int>& nums) { for(int i=0;i<nums.size();i++) { while(nums[i]>0&&nums[i]<=nums.size()&&nums[i]!=nums[nums[i]-1])
2016-05-08 10:50:16 220
原创 88. Merge Sorted Array
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { vector<int> copynums1; for(int i=0;i<m;i++) copynums1.push_back(nums1[i]);
2016-05-07 22:43:18 245
原创 27. Remove Element
class Solution {public: int removeElement(vector<int>& nums, int val) { int scan,complete; scan=0; complete=0; while(scan<nums.size()) { if(nums
2016-05-07 22:19:28 213
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人