开学第四周总结

这几天主要是把算法笔记上二叉树的部分又重新看了一遍,做了做洛谷上二叉树的题。图论的话是看了一半还没有看完,然后还看了一点思维题。

先说说二叉树。1.二叉树的话一般是先建立一个结构体,用来说明当前访问节点以及它的左右孩子节点(用指针和数组都可以,但我觉得指针好像更形象一些)。之后可以进行一系列的访问,插入,删除,修改等操作。2.可以根据中序遍历再加上其他任何一种遍历来确定一棵二叉树。我目前知道有两种方法。一个是截取字符串然后再递归,另一种是直接递归。这二者思想是一致的。其中洛谷上还有一道题,知道一棵树的前序和后序遍历,求有多少种中序遍历。核心思想是只有一个儿子的节点才会在前序和后序确定的情况下有不同的中序遍历。3.如果是平衡二叉树(AVL)可以通过左旋或者是右旋来平衡数的平衡因子,从而降低访问的时间复杂度。4.如果想要查找节点的前驱或者是后继,可以用multiset的lower_bound和upper_bound来实现。

图论的话看完再说,下面挑两个来说一下思维题。

1.小红的375。题目大意:将一个数重排,使它可以整除375.

这里可以将375写成3*125。3的倍数不必多说,125的倍数满足末尾三位数字为“000”“125”“250”“375”“500”“625”“750”“875”。有一个很巧妙的地方是,可以先减掉上述8种125倍数的出现的次数,然后再将结果从大到小输出,最后再加上减掉的。这样可以去掉前导0,又可以保证这个数是125的倍数。

2.The Number of ProductsProblem - 1215B - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/problemset/problem/1215/B

题目大意:给你一个值全不为0的数组,分别找出有多少个连续子串的乘积小于0,大于0;

dp思想。dp1[i]表示以a[i]结尾的积为正的区间个数,dp2[i]表示以a[i]结尾的积为负的区间个数。如果a[i]为正,则dp1[i]=dp1[i-1]+1,dp2[i]=dp2[i-1];如果a[i]为负,则dp1[i]=dp2[i-1](负数乘以负数转化为正数),dp2[i]=dp1[i-1]+1(正数个数+1=负数个数);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值