12 2019 档案
摘要:先对words中的单词排列组合,然后对s滑窗操作;部分样例超时,代码如下:
阅读全文
摘要:这道题关于链表的操作,中间指针操作略复杂。 改进一下代码:
阅读全文
摘要:这道题想到的就是dfs,在累加的和大于或等于target时到达递归树的终点。 代码如下:
阅读全文
摘要:做了几周的hard之后,这道题居然轻易就解出来了,稍微debug了一下就ac了,算是有了一丢丢提高把; 思路 这道题因为和三数之和很像,所以充分利用双指针的思想;先排序,然后再固定一个数i,i取值从【0,n i】, 然后对r=i+1,l=n 1利用双指针来找最近的数 下面是直接应用abs 和sort
阅读全文
摘要:solution 1: 动态规划 solution 2: 数学演绎法,求卡塔兰数 直接利用公式进行计算:c(i+1)=c(i) (2 (2n+1)/(n+2));
阅读全文
摘要:O(n^2) time 应用heights[r]& heights) { int n=heights.size(); int res=0; for(int r=0;r=0;l ){ if(heights[l]<h) h=heights[l]; int cur_s=(r l+1) h; if(res<
阅读全文
摘要:来自leetcode题解:扫描线法AlgsCG
阅读全文
摘要:m == mat.length n == mat[0].length 1 <= m <= 3 1 <= n <= 3 mat[i][j] 是 0 或 1 。 BFS, 代码来自花花leetcode https://mp.weixin.qq.com/s/cxr4xp8iBRN6T2kgxWVTrw 可
阅读全文
摘要:动态规划 time O class Solution { public: int maxCoins(vector<int>& nums) { nums.insert(nums.begin(),1); nums.push_back(1); int n=nums.size(); vector<vecto
阅读全文
摘要:这道题第一思路是用二分查找 因为使用二分法:所以复杂度为O(n*logk), k介于 left=sum/threshold(向下取整) 和 right=num_max之间;而right<=10^6, left>=1; 故logk <=6log2(10) ~=18; 主要是估算可能除数的上下界,上面的
阅读全文
摘要:class Solution { public: vector<vector<int>> groupThePeople(vector<int>& groupSizes) { map<int, vector<int> > m;//每个size组包含的元素 set<int> s;//记录用户组的size
阅读全文
摘要:class Solution { public: int subtractProductAndSum(int n) { int add=0; int prod=1; while(n>0){ int r=n%10; n/=10; prod*=r; add+=r; } int res=prod-add;
阅读全文
摘要:class Solution { public: int numSquares(int n) { //初始化vector<int> dp[i]=i i=[0,n]; //状态转移方程 dp[i]=min(dp[i],dp[i-j*j]+1) i-j*j>=0 && j=0, j++; //time
阅读全文
摘要:答案参考:https://www.zhihu.com/people/cxyxiaowu/activities time O(n) space O(1): 双指针法,计算的中心思想为: 左右(包括自身)最低的柱子决定能装多少水,装水的体积为 water_i = min { l_max, r_max }
阅读全文
摘要:time O(n^2*k) space O(n^2) class Solution { public: int palindromePartition(string s, int K) { //分成两步:第一步递归求将下标【i,j】变为回文子串的最小代价cost(i,j); //cost(i,j)=
阅读全文
摘要:a:excellent几乎一次ac或只有点小bug很快解决;半年后再重刷; b:经过艰难的debug和磕磕绊绊或者看了小提示才刷出来; c:经过艰难的debug没做出来,看答案刷的; 艾宾浩斯遗忘曲线数列:1,2,4,7,15,31 当天做的题目为0,将标注1 2 4 7 的题目做一遍,每天 1(n
阅读全文
摘要:排序后取数组第k个元素,遍历需要n^2的复杂度,查找插入logn,时间复杂度O(n^2logn)。方法很笨,完全就是STL过于牛x运行通过的。 class Solution { public: int kthSmallest(vector<vector<int>>& matrix, int k) {
阅读全文
摘要:1. 首先考虑排序后交替插入 首尾交替插入,这种方法对于有重复数字的数组不可行; class Solution { public: void wiggleSort(vector<int>& nums) { //因为一定存在最优解,所以一定可行的方法就是先排序,然后将最小的数逐渐插入到最大里面; //
阅读全文