算法
文章平均质量分 94
安德鲁JANKENPAN
本科毕业于北京交通大学,中国科学技术大学软件工程硕士在读
展开
-
德鲁周记14--树状数组详解(Leetcode-307详解)
树状数组详解树状数组介绍如何建立树状数组树状数组的几种变式(区间更新,区间查询)单点更新、单点查询单点更新、区间查询区间更新、单点查询区间更新、区间查询 最近在刷LC时遇到了这样一道题: 这题我第一反应就是前缀和,修改时更新前缀和就行,但是一直超时,最好通过题解才知道了这一种数据结构–树状数组,今天也来给大家介绍一下。 这里给出这道题的代码 class NumArray { public: int n; vector<int> tree; vector<int&g原创 2021-02-25 14:31:14 · 161 阅读 · 0 评论 -
德鲁周记02 --Leetcode二分查找题目类型总结
德鲁周记02 --Leetcode二分查找题目类型总结二分查找Leetcode题目1552. 两球之间的磁力LCP 12. 小张刷题计划410. 分割数组的最大值 二分查找 上周因为国庆放假,家人来学校看我所以没有太多时间学习,就把在leetcode上刷到的二分查找的三到类型题和大家分享一下。 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。 算法查找过程很简单,相信大家都玩过猜数的游戏,玩家说猜一个数,游戏会告诉你大了还是小了,根据这个再继续猜数。原理类似,这里就不再介绍了原创 2020-10-11 21:56:36 · 1614 阅读 · 0 评论 -
德鲁周记07--千奇百怪的排序算法(排序算法总结)持续更新补充
千奇百怪的排序算法快速排序归并排序插入排序冒泡排序选择排序快速选择排序桶排序荷兰国旗问题排序 快速排序 C++可以直接通过std::sort()快速排序,但是能够手写快排也是一件很重要的基础。 void quick_sort(vector<int> &nums,int l,int r) { if(l+1>=r) { return; } int first=l,last=r-1,key=nums[first]; while(first<last) { whil原创 2020-11-16 16:20:27 · 280 阅读 · 0 评论 -
德鲁周记08--Leetcode回溯算法题目类型总结
回溯算法什么是回溯法回溯法解决的问题回溯法的解题办法思维代码模板回溯法的对应题目 本文参考自公众号代码随想录 什么是回溯法 回溯法也可以叫做回溯搜索法,它是一种搜索的方式。 我理解的回溯就是对N叉树深度搜索的过程,回溯法解决的问题都是抽象为树状结构来解决 。(这也是思维层面最重要的过程,一旦画出了抽象树,剩下就是代码的问题了),因为回溯法解决的都是在集合中递归查找子集,集合的大小就构成了树的宽度,递归的深度,都构成的树的深度。回溯是递归的副产品,只要有递归就会有回溯。递归就要有终止条件,所以必然是一颗高度有原创 2020-12-01 15:15:06 · 127 阅读 · 0 评论 -
德鲁周记10--15天从0开始刷动态规划(leetcode动态规划题目类型总结)
动态规划什么是动态规划题目类型基本一维动态规划基本二维动态规划分割类问题子序列问题背包问题字符串编辑问题股票问题 什么是动态规划 这里我们引用维建百科的描述:“动态规划在查找有很多重叠子问题的情况的最优解时有效。它将问题重新组合成子问题,为了避免多次解决这些子问题,它们的结果都是逐渐被计算并被保存,从简单的问题直到整个问题都被解决。因此,动态规划保存递归的结果,因而不会在解决同样的问题上花费时间。动态规划只能应用于有最优子结构的问题。最优子结构的意思是局部最优解能决定全局最优解(对有些问题这个要求并不能完全原创 2020-12-20 16:44:12 · 253 阅读 · 0 评论