ARTS WEEK 5

Algorithm:每周至少做一个leetcode的算法题;

Review:阅读并点评至少一篇英文技术文章;

Tip/Techni:学习至少一个技术技巧;

Share:分享一篇有观点和思考的技术文章。

A    771. Jewels and Stones

题目描述:

You're given stringsJrepresenting the types of stones that are jewels, andSrepresenting the stones you have.  Each character inSis a type of stone you have.  You want to know how many of the stones you have are also jewels.

The letters inJare guaranteed distinct, and all characters inJandSare letters. Letters are case sensitive, so"a"is considered a different type of stone from"A".

Example 1:

Input:J = "aA", S = "aAAbbbb"Output:3

Example 2:

Input:J = "z", S = "ZZ"Output:0


解题思路:

1.通过遍历字符串S和J,两两进行比较,判断stone中有多少颗jewel。

代码实现:


2.通过hash的方法,先将字符串J中的每个字符串当作key存起来,再遍历字符串S,检查是否存在这些key。

代码实现:



R

Distributed systems theory for the distributed systems engineer

作者在文章中向我们讲解,分布式系统理论包括FLP不可能原理,Paxos算法,拜占庭将军问题等等。分布式系统工程师到底需要学习分布式理论。首先,学习和阅读书籍,了解分布式系统工程师在构建分布式系统过程中,会遇到的难点、问题。其次,注重更加复杂的分布式问题细节研究。设计分布式系统需要知道的一些基本知识和需要做的东西:故障检测、弹力设计,与一致性相关的二阶段提交、三阶段提交,还有 Gossip 算法,还有 CAP 定理等等。

T

关于unordered_map

官方文档传送门:unordered_map - C++ Reference

unordered_map 是一个模板类,需要我们提供5个魔板参数。依次为:key值的类型, value值的类型,hash函数, 等价函数, 容器分配器。其中后三个有默认参数,不一定只需要提供前2个模板参数就可以使用了。

当我们使用的key为内置类型时(如int, double, float, string等),后面三个默认模板参数在STL内有其特化版本,故可以直接进行使用。可一旦你的类为自定义类型, 其中的hash和equal就得由你自己提供。

===

HUSH

hash_map基于hash table(哈希表)。

哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。

这里附上一篇写的很详细的博客,供参考

C++ STL中哈希表 hash_map从头到尾详细介绍 - yousss的博客 - CSDN博客

S

How to Become a Better Softer Developer

作者在文中通过多个方面完整地讲述了如何成为一个更好的软件开发者。如果有兴趣的话,不妨读一读,相信会有一些收获的。

你可能感兴趣的:(ARTS WEEK 5)