![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
50Hum
http://www.wlhan.top/
展开
-
LeetCode 力扣 刷题记录 热题 HOT 100(226,234,236,238,239)题目+算法分析+Cpp解答
GitHub链接:https://github.com/WilliamWuLH/LeetCode如果你觉得不错可以 ⭐Star 和 Fork ❤226.Invert Binary Tree递归:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *lef...原创 2020-05-04 16:19:49 · 651 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(206,207,208,215,221)题目+算法分析+Cpp解答
206.Reverse Linked List保存每一个链表结点:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class ...原创 2020-04-27 23:51:10 · 972 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(155,160,169,198,200)题目+算法分析+Cpp解答
155.Min Stack存储最小值 + 不断更新最小值:class MinStack {private: stack<pair<int,int>> minstack;public: /** initialize your data structure here. */ MinStack() { } void pus...原创 2020-04-27 23:43:40 · 1048 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(141,142,146,148,152)题目+算法分析+Cpp解答
141.Linked List Cycle方法一:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution...原创 2020-04-20 11:32:15 · 1097 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(121,124,128,136,139)题目+算法分析+Cpp解答
121.Best Time to Buy and Sell Stock维持一个最低价 + 一个最优解:class Solution {public: int maxProfit(vector<int>& prices) { int len = prices.size(); int ans = 0, low = INT_MAX; ...原创 2020-04-20 10:58:13 · 1238 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(101,102,104,105,114)题目+算法分析+Cpp解答
101.Symmetric Tree迭代法: 大问题变成小问题,不断迭代到可以进行判断,再返回判断结果。 判断两边:首先判断两个根结点是否相同;再判断左边根结点的左子树和右边根结点的右子树是否相同;再判断左边根结点的右子树和右边根结点的左子树是否相同; 在判断是否相同时:两个根结点均为 null,返回 true;两个根结点中有一个是 null,有...原创 2020-04-10 23:07:59 · 1598 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(78,79,94,96,98)题目+算法分析+Cpp解答
78.Subsets回溯法:class Solution {public: vector<vector<int>> ans; vector<vector<int>> subsets(vector<int>& nums) { vector<int> temp; bac...原创 2020-04-10 22:51:34 · 1428 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(62,64,70,72,75)题目+算法分析+Cpp解答
62.Unique Paths动态规划: 保存每个位置可能到达该位置的路径数目。class Solution {public: int uniquePaths(int m, int n) { int map[m][n]; for(int i=0; i<m; i++){ for(int j=0; j<n; j...原创 2020-04-09 14:17:19 · 1384 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(46,48,49,53,55)题目+算法分析+Cpp解答
46.Permutations回溯法: 使用回溯法。 额外的空间开销是 map<int,int> use,用于记录哪些元素已经被使用了。class Solution {public: vector<vector<int>> ans; vector<int> temp; map<int,int> ...原创 2020-04-08 10:18:38 · 1240 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 76.Minimum Window Substring 题目+算法分析+Cpp解答
76.Minimum Window Substring滑动窗口: 滑动窗口的思想:双指针,左右指针都从 0 开始,右指针负责找到合法的有效区间,左指针负责优化这个合法有效区间。初始化时左指针 left 和右指针 right 都从 0 开始,left 和 right 夹起来的区间称为一个“窗口”。右指针 right 向右(向尾部)移动,扩大窗口,并且不断判断区间是否合法(符合题目要求...原创 2020-04-01 16:23:22 · 1180 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 56.Merge Intervals 题目+算法分析+Cpp解答
56.Merge Intervals排序 + 双指针: 首先将给定的数字区间进行排序。 使用双指针,一个指针指向当前答案的最后一个区间元素,另一个指针指向还未进行判断的下一个区间元素。 如果当前还存在没有判断的区间元素,继续进行判断:如果当前的区间元素是给定的第一个区间,直接插入答案中。如果当前答案的区间元素最大值小于当前判断的区间元素的最小值,则将当前判断的区间元...原创 2020-03-30 12:02:02 · 1136 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 39.Combination Sum 题目+算法分析+Cpp解答
39.Combination Sum回溯法( DFS 深度优先搜索 ): 首先将给定的数组进行排序,方便后面的判断以提高性能。 回溯法,其实也就是 DFS 深度优先搜索,也就是递归。 递归就需要有一个目标数值,有一个判断返回的条件。 判断递归返回的条件是建立在目标数值上的,在本题中是使得目标数值为 0。 目标数值为 0 说明找到了一个可行的答案,需要将答案...原创 2020-03-28 11:33:22 · 1130 阅读 · 0 评论 -
LeetCode 力扣 刷题记录(31 - 35)题目+算法分析+Cpp解答
31.Next Permutation找规律: 找到下一个按照字典序的排列,所以思路应该是从排列的尾部开始找。 首先从排列的尾部往前找,找到第一个 nums[ i-1 ] < nums[ i ] 的位置,此时说明通过将 nums[ i-1 ] 和排列在 nums[ i-1 ] 后面的并且比 nums[ i-1 ] 大的数 nums[ j ] 互换位置,将得到更大的排列。 ...原创 2020-03-23 16:12:25 · 1232 阅读 · 0 评论 -
LeetCode 力扣 刷题记录(19 - 23)题目+算法分析+Cpp解答
19.Remove Nth Node From End of List开 vector 保存链表各个 node: 特殊情况:删去链表的第一个和最后一个。 第一个:直接返回链表的第二个 node,其为新的链表头。 最后一个:在 vector 的最后再存入一个 NULL,就可以应用到通用公式。/** * Definition for singly-linked list...原创 2020-03-23 15:53:58 · 1182 阅读 · 0 评论 -
LeetCode 力扣:15.3Sum + 16.3Sum Closest + 18.4Sum 排序 + 双指针遍历 题目+算法分析+Cpp解答
15.3Sum排序 + 双指针遍历: 首先,将给定的数组进行排序(从小到大的顺序)。 遍历排序后的数组中的每一个数,如果这个数之前已经讨论过了则可以跳过。 将取出的数作为“目标”,使用双指针在排序后的数组中找另外的两个数: 一个左指针指向该取出的数的后一个数,即此时的最低位。 另一个右指针指向数组的最后一个数,即此时的最高位。 由于数组已经是从小到...原创 2020-03-20 14:02:43 · 1089 阅读 · 0 评论 -
LeetCode 力扣 刷题记录(11 - 15)题目+算法分析+Cpp解答
11.Container With Most Water双指针法: 高度低的指针必须向着高度高的指针的方向靠拢:通过高度弥补宽度的减小。class Solution {public: int maxArea(vector<int>& height) { vector<int>::iterator left,right; ...原创 2020-03-20 09:58:14 · 1190 阅读 · 0 评论 -
LeetCode 力扣 刷题记录(1-5)题目+算法分析+Cpp解答
1.Two Sum一次哈希: 将数值作为索引,在哈希表中找此时数值对应的另一个数值,若存在则取出该数值的编号,若不存在则将此时的数值和它的编号存入哈希表,以供后面使用。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { map<...原创 2020-03-17 17:10:50 · 1228 阅读 · 0 评论