C++
文章平均质量分 75
50Hum
http://www.wlhan.top/
展开
-
并查集系列:1202 Smallest String With Swaps
Smallest String With SwapsYou are given a string s, and an array of pairs of indices in the string pairs where pairs[i] = [a, b] indicates 2 indices(0-indexed) of the string.You can swap the characters at any pair of indices in the given pairs any number原创 2021-02-08 14:27:06 · 350 阅读 · 1 评论 -
并查集系列:959 Regions Cut By Slashes
Regions Cut By SlashesIn a N x N grid composed of 1 x 1 squares, each 1 x 1 square consists of a /, \, or blank space. These characters divide the square into contiguous regions.(Note that backslash characters are escaped, so a \ is represented as "\\".)原创 2021-02-08 14:23:32 · 341 阅读 · 0 评论 -
并查集系列:947 Most Stones Removed with Same Row or Column
Most Stones Removed with Same Row or ColumnOn a 2D plane, we place n stones at some integer coordinate points. Each coordinate point may have at most one stone.A stone can be removed if it shares either the same row or the same column as another stone th原创 2021-02-08 14:18:47 · 333 阅读 · 1 评论 -
并查集系列:839 Similar String Groups
Similar String GroupsTwo strings X and Y are similar if we can swap two letters (in different positions) of X, so that it equals Y. Also two strings X and Y are similar if they are equal.For example, "tars" and "rats" are similar (swapping at positions 0原创 2021-02-08 14:17:13 · 273 阅读 · 0 评论 -
并查集系列:778 Swim in Rising Water
Swim in Rising WaterOn an N x N grid, each square grid[i][j] represents the elevation at that point (i,j).Now rain starts to fall. At time t, the depth of the water everywhere is t. You can swim from a square to another 4-directionally adjacent square if原创 2021-02-08 14:12:49 · 285 阅读 · 0 评论 -
并查集系列:684 Redundant Connection
Redundant ConnectionIn this problem, a tree is an undirected graph that is connected and has no cycles.The given input is a graph that started as a tree with N nodes (with distinct values 1, 2, …, N), with one additional edge added. The added edge has tw原创 2021-02-08 14:10:35 · 196 阅读 · 0 评论 -
并查集系列:547 Number of Provinces
Number of ProvincesThere are n cities. Some of them are connected, while some are not. If city a is connected directly with city b, and city b is connected directly with city c, then city a is connected indirectly with city c.A province is a group of dir原创 2021-02-08 14:06:44 · 390 阅读 · 0 评论 -
纪念一下 2020 的 1024
纪念一下 2020 的 1024#include <iostream>using namespace std;int main(){ cout <<2020-1024 <<" : It's your life!";}原创 2020-10-24 20:42:15 · 4399 阅读 · 0 评论 -
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 · 662 阅读 · 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 · 984 阅读 · 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 · 1075 阅读 · 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 · 1111 阅读 · 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 · 1262 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 热题 HOT 100(101,102,104,105,114)题目+算法分析+Cpp解答
101.Symmetric Tree迭代法: 大问题变成小问题,不断迭代到可以进行判断,再返回判断结果。 判断两边:首先判断两个根结点是否相同;再判断左边根结点的左子树和右边根结点的右子树是否相同;再判断左边根结点的右子树和右边根结点的左子树是否相同; 在判断是否相同时:两个根结点均为 null,返回 true;两个根结点中有一个是 null,有...原创 2020-04-10 23:07:59 · 1629 阅读 · 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 · 1443 阅读 · 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 · 1402 阅读 · 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 · 1253 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 76.Minimum Window Substring 题目+算法分析+Cpp解答
76.Minimum Window Substring滑动窗口: 滑动窗口的思想:双指针,左右指针都从 0 开始,右指针负责找到合法的有效区间,左指针负责优化这个合法有效区间。初始化时左指针 left 和右指针 right 都从 0 开始,left 和 right 夹起来的区间称为一个“窗口”。右指针 right 向右(向尾部)移动,扩大窗口,并且不断判断区间是否合法(符合题目要求...原创 2020-04-01 16:23:22 · 1193 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 56.Merge Intervals 题目+算法分析+Cpp解答
56.Merge Intervals排序 + 双指针: 首先将给定的数字区间进行排序。 使用双指针,一个指针指向当前答案的最后一个区间元素,另一个指针指向还未进行判断的下一个区间元素。 如果当前还存在没有判断的区间元素,继续进行判断:如果当前的区间元素是给定的第一个区间,直接插入答案中。如果当前答案的区间元素最大值小于当前判断的区间元素的最小值,则将当前判断的区间元...原创 2020-03-30 12:02:02 · 1153 阅读 · 0 评论 -
LeetCode 力扣 刷题记录 39.Combination Sum 题目+算法分析+Cpp解答
39.Combination Sum回溯法( DFS 深度优先搜索 ): 首先将给定的数组进行排序,方便后面的判断以提高性能。 回溯法,其实也就是 DFS 深度优先搜索,也就是递归。 递归就需要有一个目标数值,有一个判断返回的条件。 判断递归返回的条件是建立在目标数值上的,在本题中是使得目标数值为 0。 目标数值为 0 说明找到了一个可行的答案,需要将答案...原创 2020-03-28 11:33:22 · 1141 阅读 · 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 · 1277 阅读 · 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 · 1195 阅读 · 0 评论 -
LeetCode 力扣:15.3Sum + 16.3Sum Closest + 18.4Sum 排序 + 双指针遍历 题目+算法分析+Cpp解答
15.3Sum排序 + 双指针遍历: 首先,将给定的数组进行排序(从小到大的顺序)。 遍历排序后的数组中的每一个数,如果这个数之前已经讨论过了则可以跳过。 将取出的数作为“目标”,使用双指针在排序后的数组中找另外的两个数: 一个左指针指向该取出的数的后一个数,即此时的最低位。 另一个右指针指向数组的最后一个数,即此时的最高位。 由于数组已经是从小到...原创 2020-03-20 14:02:43 · 1102 阅读 · 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 · 1199 阅读 · 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 · 1248 阅读 · 0 评论 -
人工智能 实验一:搜索算法问题求解 罗马尼亚问题(宽度优先搜索,深度优先搜索,一致代价搜索,迭代加深的深度优先搜索,贪婪最佳优先搜索和A*搜索) 算法详解 + 完整代码
人工智能 实验一:搜索算法问题求解(最后有完整代码!)实验标题:实验一:搜索算法问题求解实验目的:了解4种无信息搜索策略和2种有信息搜索策略的算法思想;能够运用计算机语言实现搜索算法;应用搜索算法解决实际问题(如罗马尼亚问题);学会对算法性能的分析和比较实验的硬件、软件平台:硬件:计算机软件:操作系统:WINDOWS应用软件:C++实验内容及步骤:使用搜索算法实现罗马...原创 2020-02-11 19:50:06 · 30422 阅读 · 5 评论