ARTS打卡19-微习惯的力量

Algorithm做算法题,Review点评英文文章,Tip总结技术技巧,Share做技术分享。每周打卡一次,这就是ARTS打卡。

1. 做算法题

LeetCode78. 子集

题目描述:

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。

示例:

输入: nums = [1,2,3]
输出:
[
  [3],
  [1],
  [2],
  [1,2,3],
  [1,3],
  [2,3],
  [1,2],
  []
]

解题思路:把所有的子集列出来过程中,有些规律可以遵循。以nums = [1,2,3]为例,二进制位为1处取出数字合成子集,从000到111即可穷举所有的子集。子集数量为2N,子集存储空间最少为0,最大为N,所以算法空间复杂度为O(N*2N)。每个子集都要从二进制位为1的位置取数出来,时间复杂度为O(N*2^N)。

1 2 3位
0 0 0 -> [     ]
0 0 1 -> [    3]
0 1 0 -> [  2  ]   
0 1 1 -> [  2 3]  
1 0 0 -> [1    ]
1 0 1 -> [1   3] 
1 1 0 -> [1 2  ]
1 1 1 -> [1 2 3]

解题代码:

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        l_num = len(nums)
        subsets_L = []
        for i in range(2**l_num, 2**(l_num+1)):
            bitmask = bin(i)[-l_num:]
            subsets_L += [[nums[j] for j in range(l_num) if bitmask[j] == '1']]
        return subsets_L

2. 点评英文文章

阅读《Concise Guide to Databases》第一章,主要讲数据作为组织重要资产的发展历史。大组织(如公司、教会、政府)的兴起,不仅把资源聚集起来,也把数据汇集在一起,需要大规模存储和深度分析处理,给组织带来价值。各行业的发展历史也是数据的发展历史,不同阶段对数据的使用有不同的需求,也有不同的技术满足这些需求。

3. 技术技巧

此文介绍了一个搜索引擎的技巧,在搜索某个知识点时,在关键词后面加上vs会自动带出相关的信息。例如搜索database vs,可以找到相关的概念。

[图片上传失败...(image-391ec3-1593967772842)]

4. 技术分享

这里分享一本书《微习惯》,书大意是设置一些简单到不可能失败的习惯,比如每天做一个俯卧撑。微小的习惯几乎不会消耗什么精力,但能积累出良好的生活、学习、工作习惯。每天看一页书,几乎没什么困难,可是一旦看起来了,很可能就放不下来。原本以为根本不可能读完的书,也许花几个月就读完了。其实每天做一个俯卧撑和每天做一百个俯卧撑的开头都是一样的,只不过一想到要做一百个,很有可能就放弃了。

你可能感兴趣的:(ARTS打卡19-微习惯的力量)