LeetCode 刷题笔记 20170201

时间来到了二月,转眼间刷题五天了,简单的写一个总结,然后继续刷题。easy刷了不少,medium没几个,涉及到数组、链表(插入、删除)、字符串(前缀串)、DP(01背包、斐波那契相关)、二叉树(遍历、平衡二叉树),用到了C++中的vector、unordered_map、unordered_set。尽管没有什么质变,但因为本来水平也不高,算是重新拾起C++。都是为了保研和实习,越做越认识到自己编程能力的不足,对基本算法和数据结构的掌握也是浅尝辄止,更不要说高级数据结构和算法。时间还有,希望自己能够坚持住,一定能够取得一个满意的结果,也不辜负自己在东北的寒冬中留校付出的努力。

1.Balanced Binary Tree 是一个平衡二叉树问题,对于平衡二叉树的定义,本题默认的是AVL树,即满足一下两个条件①左右子树高度差不能超过一;②左右子树都为平衡二叉树。对于二叉树应该首先考虑递归, 所以 一个递归函数求树高度,另一递归函数判断左右子树是否为平衡二叉树。

由于开始对于本题的平衡二叉树定义不明确,思路是求根节点到叶子结点的距离,判断最大值和最小值之差,但是对于如下的左树不适用。后来又单纯判断左右子树是否为平衡二叉树,但对于如右树不适用。所以改变思路,然后AC;

       

2.Pascal's  Triangle(杨辉三角形) 求某一行可以从上一行的倒序入手;

3.Buy and Sell Block II 假设价格序列为 [a, b, c, d], d-a = (b-a)+(c-b)+(d-c) 因此只要利润大于零,可以连续的买入卖出,就能够获得最大值;

4.Valid Palindrome 判断字符串是否为回文串,需要考虑:同一字母大小写看做相等,除了字母数字以外的其他字符不考虑,空字符串,都为空格的字符串。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值