06 2020 档案
摘要:题目 这是一道字符串的题目,题目呢要求找到两个字符串没有重复的字符,且两者长度的乘积最大。暴力可以过。但是在比较字符串的时候可以用位运算,这样时间会大大缩短。 关于字符串,限制在只有小写字母的时候,位运算是可以运用起来,把一串字符用一个数字表示。两个字符串是否有重复,只需要位与一下就可以了 clas
阅读全文
摘要:题目 给你一个无向无环图,这个图的任何一个节点都可以当成一个树的根节点。让你找到形成的树的高度最小的那几个根节点。 首先,这个根节点要么只有1个,要么只有2个。 而且就在图中最长的一条路径上,如果这个路径上的节点数为偶数,那就是2个,否则就是1个 那么怎么找这条最长路径呢?首先从任意 一个点出发,找
阅读全文
摘要:鉴于现在,工作比较闲。业余时间比较多,比如这篇博文就是上班时间写的。我想好好开发一下个人站点。 之前本人自己于业余时间搭建了一个人网站,http://oj.kanghekeji.cn 是一个在线OJ刷题网站。 目前采用前后端分离,所谓前后端分离,就是我自己建了两个Asp.net core3.1 的w
阅读全文
摘要:题目 寻找第n个丑数。 首先我们维护一个丑数的数组,所有的丑数必然是前面的某个丑数乘以primes数组里的某个数字得来。 所以我们在维护一个primes数组对应的最小丑数数组下标pos,primes[i]*pos[i] 就是未来的某个丑数,按照从小到大一个一个计算。 class Solution {
阅读全文
摘要:题目 动态规划 dp[i][0] 表示当天什么都不操作 dp[i][1] 表示当天买进 dp[i][2] 表示当天卖出 状态转移就好写出了 class Solution { public: long long int dp[10005][3]; int maxProfit(vector<int>&
阅读全文
摘要:题目 动态就区间和,线段树,树状数组都可以 class NumArray { public: int n; int c[100005]; vector<int> nums; NumArray(vector<int>& nums) { this->nums = nums; memset(c,0,siz
阅读全文
摘要:题目 简单小模拟 class Solution { public: std::string::size_type sz = 0; bool isAdditiveNumber(string num) { for (int i = 0; i < num.length(); i++) { for (int
阅读全文
摘要:题目 二维的,那就二维前缀和数组 class NumMatrix { public: int prefix[1005][1005]; NumMatrix(vector<vector<int>>& matrix) { memset(prefix,0,sizeof(prefix)); for(int i
阅读全文
摘要:题目 求区间,固定的数组,用前缀和数组 class NumArray { public: vector<int> prefix; NumArray(vector<int>& nums) { prefix.push_back(0); for(int i=0;i<nums.size();i++) { p
阅读全文
摘要:题目 删除最少的括号,让所有括号匹配起来。 大部分都是用DFS,或者BFS。我用的DP,也可以过 dp[i][j] :means it need remove at least dp[i][j] characters to get vaild parenthese from position i t
阅读全文