LeetCode刷题笔记——HashTable

705/706. Design HashSet/HashMap

这里主要是参考了python源码中对dict的实现,可以参考我的博客中对python内建dict的相关文章。这里主要采用的策略是:

  1. 使用开放寻址法解决冲突
  2. 使用与python内部一致的二次哈希函数
  3. 桶数按照实际使用量“used”进行控制
  4. 负载因子的阈值设置为2/3
  5. 因为元素都是数字,所以使用字符串“dummy”表示dummy态的桶

Read More

LeetCode刷题笔记——BFS

279. Perfect Squares (bangbang)

这道题我看到之后的直观想法就是一个一维的动态规划问题,但是时间效率却是平方级别。这种结果在leetcode通常都是算慢的…但是也没考虑到更好的解法。看到BFS的标签才想到了一种宽度优先搜索解空间的方法。就是目标值一定可以拆出来一个平方数,然后我去看一个目标数怎么最快的拆出0。然后 discuss 区有一个思路是从 0 往上加,看怎么可以最快的通过完全平方数加到目标数,在这个方面上,这两种方法没有本质的区别。而重要的区别是我和黄同学讨论这道题的时候所发现的,我的思路是为了避免重现重复的计算,比如1+4=5,同样的,4+1=5。为了避免这种交换律导致的重复,我在搜索时通过人为规则保证路径上的数字递增或者递减。而 discuss 中的方法(其实也是BFS的正确思路),是通过visited避免重复路径。

Read More

LeetCode刷题笔记——UnionFind

并查集介绍

首先接触到并查集,是通过本科的数据结构课本《数据结构、算法与应用——C++语言描述》。课本中在三个比较偏僻的角落,分别引出了等价类的概念、离线等价类问题和在线等价类问题。在第一处,课本给出了等价类的定义:等价类是指其中的元素具有等价关系的集合,而等价关系是指一类满足反身性、对称性和传递性的二元关系。然后明确了在线等价类问题和离线等价类问题各自的定义。最后分别使用数组和模拟指针两种方法对定长的在线等价类问题给出了初步解决方案。第二处对离线等价类问题进行了解决,第三处对在线等价类问题进行了解决。

Read More

《指数基金投资指南》

第一章 投资新手的建议

首先是告诉我们,想要成为富人,就要“抠门”。说是抠门,其实是指限制消费,并将其转化为资产。注意,资产一定是长期可以增值的东西,比如古董、房地产、邮票、基金等等,甚至在我来看,知识、一技之长也是资产。而现金却不是,因为整个社会的钱是在变多的,而我们手中的绝对数值的现金对于整个社会的相对价值就会不断降低。当资产足够多的时候,我们也就“财富自由”了。

对于“节俭”这一点,我有着二十多年的经验,我相信应该会做得特别好。节俭的真正意义在于金钱的时间价值:越“早”的钱价值越高。但是对于生活而言,适度即可,如果总是考虑复利所带来的指数效应,那么就一分钱我都不敢花了。总的来说,最好的投资品就是自己,还是那句话,在我看来,理财其实是一个因子(即使这个因子在指数上)。

在选择资产的时候,能否产生现金流也是我们需要考虑的因素。比如国债会每年得到现金利息,这种就有现金流,因此债券是靠现金流增值的,其自身不会增值,到期之后会将本金退还我们。而黄金只靠本身的价值增值的,自身不会产生现金流,买了一公斤黄金放一百年只要不卖出,我们就一分钱都拿不到,类似的还有古董、艺术品、错版的收藏印刷品、纪念币等。因此从这里可以看出能不能产生现金流其实是在于资产的价格驱动因素是什么。能产生现金流的资产,其价格主要取决于现金流的大小和稳定性。不能产生现金流的资产,其价格主要取决于供求关系。所谓“盛世珠宝,乱世黄金”,原因就在于黄金是硬通货,在乱世时供小于求。而这两者相比,能产生现金流的资产通常比不能产生现金流的资产长期收益率更高;能产生现金流的资产中,现金流越高,长期收益率更高。

而且数据也的确证明,从长期来看,收益率最高的是股票,其次是债券,最后是黄金。

Read More

本站总访问量