文章分类 -  数据结构

米奇妙妙屋,领略数据结构的奇妙
摘要:原题在这里(简版题两两交换在这里) 概述题意: 要求k个为一组翻转链表,且不能是直接修改链表的值,必须改动节点。 1.非要求算法,写了个 k个节点为一次递归调用的函数 class Solution { int num, pd; queue<int> q; queue<ListNode *> st; 阅读全文
posted @ 2022-03-25 18:08 Renhr 阅读(34) 评论(0) 推荐(0) 编辑
摘要:原题在这里: 概述题意: 给定数组中,求满足和>=target的子数组的最小数组长度。 1.暴力是不可能暴力的,再怎么说都是维护dp[i]=nums[i,r] class Solution { public: int minSubArrayLen(int target, vector<int> &n 阅读全文
posted @ 2022-03-24 15:41 Renhr 阅读(21) 评论(0) 推荐(0) 编辑
摘要:原题在这里: 概述题意:给定数字n,在数字范围[1,n]中,找到根据字典序的第K小数字。 我首先想到的是构造,然后构造构造着就变成了dfs暴力(指严严实实地从第1小找到第k小) 然后因为1<=k<=n<=1e9,所以T了,然后就是考虑剪枝优化 因为时间关系就没考虑怎么剪枝了,直接看了题解,下次再做吧 阅读全文
posted @ 2022-03-23 22:19 Renhr 阅读(53) 评论(0) 推荐(0) 编辑
摘要:原题在这里: 概述题意,给一个数组,求填平数组(凹处的高低差)所需面积。 想过双指针两端考虑高点收缩; 想过从每一个高度入手; 也想过单调栈(但没想明白怎么用)。 然后debug一个小时用了一个自己的解法: 去重找峰值,删除峰的凹峰【此后数组类型就是(递增+)递减了】,然后遍历。 class Sol 阅读全文
posted @ 2022-03-17 21:20 Renhr 阅读(84) 评论(0) 推荐(0) 编辑
摘要:原题在这里, 概述题意: 在给定数组中,能否找到任意一组元素,下标和值都递增。 这个题我是被三元组给忽悠了,觉得很难,所以直接pass 然后后悔 解法一: 双向遍历,由于只需要找三个,那么从中间元素考虑,左边和右边分别维护最小最大值 对于维护过程也是只需要两次遍历即可,那么final即为O(3n), 阅读全文
posted @ 2022-03-17 19:01 Renhr 阅读(28) 评论(0) 推荐(0) 编辑
摘要:原题在这里, 看这个题就想起了前面写过的合并区间,我寻思(瞎搞)着可能差不多,于是对区间左端点排序然后双指针遍历, 然后发现写不出来(爇鞲)。。。 我又想这肯定dp也能做,但是dp我真不太行(真懒,一点都没有思考),索性直接看题解了, 果然解法一:dp 因为是dp,所以无论左端点右端点排序都行,转移 阅读全文
posted @ 2022-03-17 11:54 Renhr 阅读(21) 评论(0) 推荐(0) 编辑
摘要:本来是一道很普通的水题,但是水出了质量。 一个矩阵元素满足,左->右 and 上->下 递增,问是否含有target数值。 暴力搜索(python): class Solution: def searchMatrix(self, matrix: list[list[int]], target: in 阅读全文
posted @ 2022-03-16 17:14 Renhr 阅读(35) 评论(0) 推荐(0) 编辑
摘要:题目在这里 概述:给定s,p两字符串,在s串中找p的异位串的所有起始下标 常规思路: 由于是小写字母构成的字符串,那么用前缀和sum迭代统计p.len长度的字母,再与p字符串的桶存数组比较即是ans class Solution { public: vector<int> findAnagrams( 阅读全文
posted @ 2022-03-15 20:47 Renhr 阅读(38) 评论(0) 推荐(0) 编辑
摘要:原题在这里 概述题意: 给定一个数组a,定义ans=(l-r)*min(a[l],a[r]),(l>r),问最大ans。 很直挂的思路是O(n^2)的暴力遍历,但是本题n<=1e5 我原来的思路是, 根据公式有,l-r,当双指针向内收缩的时候,l-r的数值是固定不变的-1, 所以只需考虑怎么移动双指 阅读全文
posted @ 2022-03-15 19:43 Renhr 阅读(22) 评论(0) 推荐(0) 编辑
摘要:题目在这里,题意就不多说了。 基本思路是: 每次用指针遍历list头节点选择一个min最小值 添加入链表并将当前min标记的非空list头节点后移一位 代码如下: struct ListNode { int val; ListNode *next; ListNode() : val(0), next 阅读全文
posted @ 2022-03-15 16:05 Renhr 阅读(16) 评论(0) 推荐(0) 编辑
摘要:第一种直接用数组的方法就不写了。 第二种是用一个二维数组,减小数组的稀疏空间,也不写了。 第三种是用hash链表数组,关键是注意指针节点是否为空和二级指针的使用。 (由于一个remove没有写return 导致我删除节点后访问了空节点,debug一个小时,掏出了文本对比器,非常无语。。。) stru 阅读全文
posted @ 2022-03-14 17:54 Renhr 阅读(16) 评论(0) 推荐(0) 编辑
摘要:很经典的一道题目。 但我初次遇见的时候就觉得这个模拟写出来非常麻烦就没去学习(菜🐕表示只能模拟) 后来也是大概遇到了两三次也是忽视了(当时想的是,做这种模拟题还不如学我算法刷我图) 然后这次在数据结构里面遇到这个题,标识着“双指针” 我就理所应当的考虑着两层遍历i,j指针,然后(一通乱写,我是真的 阅读全文
posted @ 2022-03-14 15:29 Renhr 阅读(62) 评论(0) 推荐(0) 编辑
摘要:XennyYYDS 【树状数组】重点解决单点,修改区间查询的问题。 学习树状数组最重要的是理解x&(-x),树状数组就是x&(-x)的运用。 一份lowbit示例代码: #include <bits/stdc++.h> using namespace std; #define MX 2022 #de 阅读全文
posted @ 2022-03-10 19:32 Renhr 阅读(36) 评论(0) 推荐(0) 编辑
摘要:适用于【区间修改,单点查询】 差分原题, 概述题意: 给定0<=num[i]<num.size的数组,求有效元素(i>=num[i])最多的轮换次数k(有效元素数量相同则取最小k)。 我的分析: 1.暴力处理,但是O(n^2)时间复杂度过高, 2.滑动窗口,每轮对有效值记录,无效值入缓存,每次只需要 阅读全文
posted @ 2022-03-10 18:46 Renhr 阅读(77) 评论(0) 推荐(0) 编辑
摘要:刷题刷到了就记录,毕竟用的少不熟悉(迭代写法)。 节点定义: class Node { public: int val; vector<Node *> children; Node() {} Node(int _val) { val = _val; } Node(int _val, vector<N 阅读全文
posted @ 2022-03-10 13:15 Renhr 阅读(37) 评论(0) 推荐(0) 编辑
摘要:学过前缀和、差分、树状数组, 但是,没有系统性学习过,今天遇到个差分的题给整神了,用树状数组能解但是写不出来(无能狂怒)。 【于是系统性学习来了】 总结一下: 数组 不变,区间查询:前缀和、树状数组、线段树。 数组单点修改,区间查询:树状数组、线段树。 数组区间修改,单点查询:差分、线段树。 数组区 阅读全文
posted @ 2022-03-09 17:15 Renhr 阅读(114) 评论(0) 推荐(0) 编辑
摘要:由于HDU挂了,这个算法先搁置整理 搜索 复制 阅读全文
posted @ 2022-03-05 18:06 Renhr 阅读(14) 评论(0) 推荐(0) 编辑
摘要:原题在这里。 概述:求给定数组的 所有子数组的极差 之和。 基本暴力: class Solution { public: long long subArrayRanges(vector<int> &nums) { long long ans = 0, l = nums.size(); int mx, 阅读全文
posted @ 2022-03-05 17:24 Renhr 阅读(52) 评论(0) 推荐(0) 编辑
摘要:可能是因为做过图论的原因,做这个题的时候直接是最巧妙的解法, 原题1:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/ 原题2:https://leetcode-cn.com/proble 阅读全文
posted @ 2022-03-01 11:41 Renhr 阅读(4) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉搜索树的根节点,问是否存在两个元素之和为k。 节点定义: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} T 阅读全文
posted @ 2022-02-28 18:40 Renhr 阅读(28) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示