- 博客(27)
- 收藏
- 关注
原创 LeetCode 453. Minimum Moves to Equal Array Elements
描述给出一个数组,每次对n - 1个数加1,问经过多少次所有的数相等解决对n - 1个数加1等价于对1个数减1,答案就是所有数的和减去数组长度乘以最小数的积class Solution {public: int minMoves(vector<int>& nums) { int sum = 0, min_val = INT_MAX; for (auto va
2016-12-24 13:21:54 627
原创 LeetCode 76. Minimum Window Substring
描述找出s字符串中最小的窗口包含所有的t字符串种的字符解决2个索引值遍历class Solution {public: string minWindow(string s, string t) { int16_t arr[128] = {0}; size_t length = t.size(); size_t cnt = length;
2016-12-23 20:42:45 651
原创 LeetCode 86. Partition List
描述根据值x划分链表,小于x的部分在前面,大于等于x的在后面,每个节点的相对顺序保持不变解决利用两个临时链表分别存两个子链表,最后把链表合在一起/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : va
2016-12-22 23:37:39 490
原创 LeetCode 81. Search in Rotated Sorted Array II
描述在循环数组中,查找是否存在目标值解决二分查找class Solution {public: bool search(vector<int>& nums, int target) { int length = nums.size(); int l = 0, r = length - 1; while (l < r) {
2016-12-19 15:14:56 454
原创 LeetCode 61. Rotate List
描述把链表循环右移k个单位解决先算出链表长度,然后把末尾节点指向头节点,然后再从头节点右移length - k 个单位,得到新链表的头指针,并设置末尾的空节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int
2016-12-17 11:53:13 360
原创 LeetCode 69. Sqrt(x)
描述实现sqrt解决牛顿迭代法,利用迭代公式 fn+1=(fn+1+x/fn)/2.0;f_{n} + 1 = (f_{n+1} + x / f_{n}) / 2.0; class Solution {public: int mySqrt(int x) { if (x == 0) return 0; const double zz =
2016-12-14 17:53:48 415
原创 LeetCode 63. Unique Paths II
描述从左上走到右下右多少种走法,中间可能有障碍物解决动态规划,把存答案的数组初始化所有为0,然后从左到右,从上往下遍历下去即可class Solution {public: int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) { int r = obstacleGrid.size();
2016-12-12 20:07:24 469
原创 LeetCode 113. Path Sum II
描述求根节点到叶子节点的路径和等于目标和的所有路径解决左右递归/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right
2016-12-12 19:29:21 344
原创 LeetCode 145. Binary Tree Postorder Traversal
描述后序迭代遍历二叉树解决用stack存节点,当当前根结点的左右节点为空或者右子节点被访问过,就把根节点加入vector中/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int
2016-12-11 21:46:45 319
原创 LeetCode 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), lef
2016-12-11 19:56:46 327
原创 LeetCode 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
2016-12-10 23:16:55 392
原创 LeetCode 49. Group Anagrams
描述把由相同字符构成的字符串,组成一个字符串向量,分别存在一起解决涉及到1对多的问题,利用map即可class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { unordered_map<string, vector<string>> m1; for
2016-12-10 21:51:36 337
原创 LeetCode 165. Compare Version Numbers
描述判断两个版本号的大小解决从左往右,以’.’为分割,逐次比较class Solution {public: int compareVersion(string version1, string version2) { int length1 = version1.size(); int length2 = version2.size();
2016-12-09 16:55:12 349
原创 LeetCode 299. Bulls and Cows
描述给出两个字符串A和B,判断A、B有多少个字符位置与字符都相同,有多少个字符在B和A中都出现了,但是位置不同解决用map去存A中字符(位置与值不同),用vector存B中独有的字符,最后遍历vector中的字符即可class Solution {public: string getHint(string secret, string guess) { int length
2016-12-08 15:44:23 628
原创 LeetCode 284. Peeking Iterator
描述实现PeekingTterator这个类的方法解决调用父类的方法,用两个成员变量保存值和状态// Below is the interface for Iterator, which is already defined for you.// **DO NOT** modify the interface for Iterator.class Iterator { struct Da
2016-12-08 15:12:37 408
原创 LeetCode 279. Perfect Squares
描述求一个数最少由几个平方数求到解决动态规划class Solution {public: int numSquares(int n) { vector<int> res(n + 1); for (int i = 0; i <= n; ++i) { res[i] = i; for (int j
2016-12-07 13:36:18 294
原创 LeetCode 287. Find the Duplicate Number
描述把10进制数转换成16进制的数解决如果是负数,c++做>>会被当成算术右移,在前面补0,把所有的数转换成unsigned格式即可class Solution {public: string toHex(int num) { string res = ""; string zz = "a"; unsigned num1 = num;
2016-12-07 13:13:21 336
原创 LeetCode 405. Convert a Number to Hexadecimal
描述把10进制数转换成16进制的数解决如果是负数,c++做>>会被当成算术右移,在前面补0,把所有的数转换成unsigned格式即可class Solution {public: string toHex(int num) { string res = ""; string zz = "a"; unsigned num1 = num;
2016-12-06 10:39:06 401
原创 LeetCode 257. Binary Tree Paths
描述找出从根节点到叶子结点的路径解决左右递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NU
2016-12-06 10:16:12 283
原创 LeetCode 278. First Bad Version
描述给出一个数组,代表版本号,找最开始出错的位置解决二分查找// Forward declaration of isBadVersion API.bool isBadVersion(int version);class Solution {public: int firstBadVersion(int n) { int l = 1, r = n; whil
2016-12-06 09:44:11 284
原创 LeetCode 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(
2016-12-06 00:23:15 365
原创 LeetCode 77. Combinations
描述n个1~n的数,找出含有k个数的组合解决回溯class Solution {public: vector<vector<int>> res; vector<int> tmp; vector<vector<int>> combine(int n, int k) { help(res, tmp, n, k, 1, 0); return res
2016-12-03 17:18:08 279
原创 LeetCode 41. First Missing Positive
描述给出一个未排序的数组,找出丢失的数,从1开始的解决遍历数组,交换数,使得每个数对应索引号。最后再遍历看哪一个数不对,返回即可。class Solution {public: int firstMissingPositive(vector<int>& nums) { int length = nums.size(); for (int i = 0; i <
2016-12-03 16:33:34 268
原创 LeetCode 72. Edit Distance
描述问一个字符串需要多少的操作才能变成另一个字符串解决动态规划class Solution {public: int minDistance(string word1, string word2) { int length1 = word1.size(); int length2 = word2.size(); vector<vector<i
2016-12-02 15:32:00 238
原创 LeetCode 42. Trapping Rain Water
描述给出一些柱子的高度,求这些连续柱子所能存储的水的体积解决找出最高的柱子,然后遍历左右两边即可class Solution {public: int trap(vector<int>& height) { int length = height.size(); if (length <= 1) return 0; i
2016-12-02 15:15:20 307
原创 LeetCode 56. Merge Intervals
描述把有重合的区间合并在一起解决先排序,然后贪心遍历/** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0), end(0) {} * Interval(int s, int e) : start(s), end
2016-12-01 14:29:17 270
原创 LeetCode 31. Next Permutation
描述实现next_permutation函数解决1.先从右往左遍历找到第一个非递增的数,记为val,并且记下位置。如果从右往左遍历时发现数组是递增的,直接reverse整个数组,否则接着下一步 2.从右往左找第一个大于等于val的数,记下位置 3.交换刚才记录的那两个位置 4.reverseval右边的数class Solution {public: void nextPermuta
2016-12-01 14:04:59 249
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人