算法
秦枫-_-
慵懒的程序猿
展开
-
航班预订统计(差分数组)
解题思路: 差分数组对应的概念是前缀和数组,对于数组 [1,2,2,4][1,2,2,4],其差分数组为 [1,1,0,2][1,1,0,2],差分数组的第 ii 个数即为原数组的第 i-1i−1 个元素和第 ii 个元素的差值,也就是说我们对差分数组求前缀和即可得到原数组。 ans数组刚开始记录的是每个数和他前一个数的差值即表示为差分数组,那么我们可以举例[1,2,10],ans[0]=10,ans[1]=0,ans[2]=-10,表示的就是此时idx=1跟他前一个数idx=0相差为0,即num[0]=.原创 2021-08-31 20:39:34 · 113 阅读 · 1 评论 -
监控二叉树(基于二叉树的动态规划)(后序遍历的进阶)
解题思路: 这道题目其实不是那么好理解的,题目举的示例不是很典型,会误以为摄像头必须要放在中间,其实放哪里都可以只要覆盖了就行。 这道题目难在两点: 需要确定遍历方式 需要状态转移的方程 我们之前做动态规划的时候,只要最难的地方在于确定状态转移方程,至于遍历方式无非就是在数组或者二维数组上。 本题并不是动态规划,其本质是贪心,但我们要确定状态转移方式,而且要在树上进行推导,所以难度就上来了,一些同学知道这道题目难,但其实说不上难点究竟在哪。 需要确定遍历方式 首先先确定遍历方式,才能确定转移方程,那么该如.原创 2021-08-20 18:19:06 · 277 阅读 · 1 评论 -
1~n 整数中 1 出现的次数(密码锁问题)
就像生活中常见的密码锁,就是那种几个滚轮的密码锁,固定其中的一位密码,拨动其他位置的密码。 class Solution { public int countDigitOne(int n) { int digit=1,cur=n%10,low=0,high=n/10; int res=0; while(high!=0||cur!=0){ if(cur==0)res+=high*digit; else if(cur==1)res+=high*di...原创 2021-05-18 20:49:06 · 116 阅读 · 1 评论