随笔分类 -  树状数组

摘要:题目 题意:一个只有0-9组成的字符串,每次选择任意一个子串,按照数字从小到大排序。问从源字符串能否经过若干次操作转换成目标字符串。 题解:首先题目只问了是否,而没有问多少次,所以可以判断出,我们不关心过程是怎么样的,只关心结果能否到达。所以不太可能是动态规划,搜索什么的。 既然是看结果,那估计是个 阅读全文
posted @ 2020-09-21 12:57 Shendu.CC 阅读(171) 评论(1) 推荐(0) 编辑
摘要:题目 动态就区间和,线段树,树状数组都可以 class NumArray { public: int n; int c[100005]; vector<int> nums; NumArray(vector<int>& nums) { this->nums = nums; memset(c,0,siz 阅读全文
posted @ 2020-06-03 15:30 Shendu.CC 阅读(117) 评论(0) 推荐(0) 编辑
摘要:"题目" 题解: 现场想到了从结果的二进制的每一位考虑,每一位都是由比它低的低位决定的,但是规律没找好。 举个例子,结果的二进制的第3位(从0位开始)上是否为1,是由0 到 2^4 1 之间的数决定,就是 0000 1111 之间所有数两两相加决定的,所以数组要先对2^4取余。 而相加的结果,只有在 阅读全文
posted @ 2020-03-21 19:57 Shendu.CC 阅读(106) 评论(0) 推荐(0) 编辑
摘要:"题目" 题意:找到数组里每个元素的右边有多少个元素小于当前元素 题解:单点更新,区间查询。线段树或者树状数组都可以。注意要离散化 阅读全文
posted @ 2020-03-13 20:06 Shendu.CC 阅读(216) 评论(0) 推荐(0) 编辑
摘要:"题目" 这道题目乍一看,我以为是动态规划。可是LeetCode 从来不给数据范围。,又是hard难度的题目,所以我猜测数组长度至少10万吧。 然后仔细一看,发现,每一步走的步数不是固定的,那就可以用贪心了。每次走的时候都跳的那个nums[i]+i 的值最大的那个点。 于是问题就变成了快速的求某个区 阅读全文
posted @ 2019-08-18 19:21 Shendu.CC 阅读(100) 评论(0) 推荐(0) 编辑

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