- 博客(22)
- 收藏
- 关注
原创 [转载]C#倒序遍历原因
用List存放事件监听者,同时监听对象如果存在响应事件后删除自身(移除出列表)的监听者,就表示在列表的遍历过程中,列表的长度和索引会发生改变。使用for循环并正序遍历:遍历第i个监听者A时,若A将自己从List中移除,这时列表会前移,继续遍历i+1,实际遍历到的是i+2。作者:幕云汨水 https://www.bilibili.com/read/cv20318056 出处:bilibili。使用倒序遍历就不会有这个问题,即使发生移除,移除对象也总是在List的尾部,索引能确保索引到每一个对象。
2023-08-17 21:52:10
334
原创 数据结构补充
70:用队列实现栈:622:设计循环队列class MyCircularQueue { final int[] array; // 用于模拟队列的数组 final int maxSize; // 数组的最大长度 int front; // 指向队首元素 int rear; // 指向队尾元素 public MyCircularQueue(int k) { this.array = new int[k];
2021-11-12 13:22:22
4171
原创 算法学习Day16-Leecode200,547【算法】【并查集】
200.岛屿数量:看蒙了class UnionFind {public: UnionFind(vector<vector<char>>& grid) { count = 0; int m = grid.size(); int n = grid[0].size(); for (int i = 0; i < m; ++i) { for (int j = 0; j <
2021-08-26 10:59:07
74
原创 算法学习Day15-Leecode102,107【算法】【BFS】
在leecode上看见了一个积累模板的思想:负雪明烛,这位大佬的文章:BFS使用队列,把每个还没有搜索到的点依次放入队列,然后再弹出队列的头部元素当做当前遍历点。BFS总共有两个模板:如果不需要确定当前遍历到了哪一层,BFS模板如下。while queue 不空: cur = queue.pop() for 节点 in cur的所有相邻节点: if 该节点有效且未访问过: queue.push(该节点)如果要确定当前遍历到了哪一层,B...
2021-08-25 08:36:08
109
原创 算法学习Day13-Leecode22,78,77【算法】【回溯法】
22. 括号生成class Solution { void backtrack(vector<string>& ans, string& cur, int open, int close, int n) { if (cur.size() == n * 2) { ans.push_back(cur); return; } if (open < n) {
2021-08-19 12:45:20
99
原创 算法学习Day12-Leecode169,53【算法】【分治法】
169. 多数元素class Solution { int range(vector<int>& nums, int target, int lo, int hi){ int count = 0; for(int i=lo; i<=hi; i++){ if(nums[i] == target) count++; } return count; }
2021-08-18 19:26:22
82
原创 算法学习Day11-Leecode509,206【算法】【递归】
509. 斐波那契数class Solution {public: int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; return fib(n - 1) + fib(n - 2); }};func fib(n int) int { if n < 2 { return n } p, q, r := 0, 0, 1
2021-08-17 09:53:57
89
原创 算法学习Day10-Leecode209,1456【算法】【滑动窗口】
209. 长度最小的子数组func minSubArrayLen(s int, nums []int) int { n := len(nums) if n == 0 { return 0 } ans := math.MaxInt32 start, end := 0, 0 sum := 0 for end < n { sum += nums[end] for sum >= s {
2021-08-15 16:22:36
84
原创 算法学习Day9-Leecode704,35,162,74【算法】【二分查找】
704. 二分查找class Solution {public: int search(vector<int>& nums, int target) { int pivot,left = 0 , right = nums.size()-1; while(left<=right){ pivot = left+(right-left)/2; if(nums[pivot]==target){
2021-08-14 10:30:50
119
原创 算法学习Day7-Leecode215,692【数据结构】【堆】
215. 数组中的第K个最大元素不整花里胡哨的,直接上c++自带的堆数据结构class Solution {public: int findKthLargest(vector<int>& nums, int k) { // 小顶堆 priority_queue<int, vector<int>, greater<int>> pq; int sz = nums.size();
2021-07-21 09:19:25
77
原创 算法学习Day6-Leecode144,94,145【数据结构】【树】
144. 二叉树的前序遍历1.递归:class Solution {public: void preorder(TreeNode *root, vector<int> &res) { if (root == nullptr) { return; } res.push_back(root->val); preorder(root->left, res); ..
2021-07-08 09:09:19
71
原创 算法学习Day5-Leecode217,389,496-【数据结构】【哈希表】
217:存在重复元素class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_set<int> s; for(int x:nums){ if(s.find(x)!=s.end()){ return true; } s.insert(x.
2021-07-07 07:58:35
290
原创 算法学习Day4-Leecode20,496-【数据结构】【栈】
20. 有效的括号class Solution { public: bool isValid(string s) { int n = s.size(); if(n%2 == 1){ return false; } unordered_map<char,char> pairs = { {')', '('}, {']', '['}, .
2021-07-04 19:48:30
132
原创 算法学习Day3-Leecode933,239-【数据结构】【队列】
933:class RecentCounter {private: // 用于存放结果的队列 queue<int> q;public: RecentCounter() {} int ping(int t) { // 首先把要添加的时间放进来 q.push(t); // 不断检查队列头部元素,看看它与当前时间之差是否大于3000 while (t - q.front() > 3000)
2021-06-30 19:30:09
71
原创 算法学习Day2-Leecode203,206-【数据结构】【链表】
203:给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。class Solution {public: ListNode* removeElements(ListNode* head, int val) { if(head == nullptr){ return head; } head->next = removeEle...
2021-06-29 18:23:40
91
原创 算法学习Day1-Leecode485,283,27-【数据结构】【数组】
研一下学期才开始刷题,着实有些晚了,作为一个非科班生,更要好好学习算法这些基础。希望机械专业对我的工程思维的培养,能够在算法学习中发挥作用。485:给定一个二进制数组, 计算其中最大连续 1 的个数。示例:输入:[1,1,0,1,1,1]输出:3解释:开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3.C++语言实现:class Solution {public: int findMaxConsecutiveOnes(vector...
2021-06-27 22:19:55
225
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人