正式找工作第三天

今天晚上要去面试蘑菇智行还挺开心的,感觉是家A轮公司,应该要求会低一些的吧,然后还针对性地看了些CNN和目标跟踪的问题,结果人家上来就问nccl库有什么特点,这一看要求我就达不到,果然聊了没几句我们就散了。有点受打击了,明天还有两家,好好加油吧。


今天只有上午复习了PRML和LeetCode,下午在看之前面试的面经了。
一、PRML
今天复习了PRML的两节,第三节其实没看懂啥,讲的是顺序轨迹,其中有一个重要的结论是顺序序列收敛于根。第四节的话讲的是指数族分布,其中讲到了从伯努利分布推导出sigmoid函数的过程,还有从多项式分布推导出softmax的过程,还是很有用的,感觉有些东西一下子就通透多了。后面讲了充分统计量和无信息先验等等就不细说了。
二、LeetCode
(以后再抄别人代码感觉要放上链接了,老是这样好像不太好,罪过罪过)

46# 全排列

看了一个比较容易写出来的写法,但是理解起来不那么容易,就是说我用列表里的所有字符去判断,我加上第一个字符,然后递归地深搜,深搜的参数是初始的nums和加完一个字符的这个列表,最后再把这个字符删掉,继续循环。这样其实就是我弄完1开头的,再排2开头的。

class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        self.res = []
        self.dfs(nums, [])
        return self.res
    
    def dfs(self, nums, subList):
        """
        回溯的思路,就是加上一个然后递归求加完的这个列表
        然后再删掉它
        """
        if len(nums) == len(subList):
            self.res.append(subList[:])
        for num in nums:
            if num in subList:
                continue
            subList.append(num)
            self.dfs(nums, subList)
            subList.remove(num)

48# 旋转图像

这个题目比较有意思的点是你得能看出来要换位置的元素是哪个。我抄的思路呢,是先把数组逆序,就是只逆序最外层,比如[[1,2,3],[4,5,6]]逆序成[[4,5,6],[1,2,3]],然后要逆序的地方其实除了i和j相等的位置,其他都要换,换的方式是i换成j,所以代码就是

class Solution(object):
    def rotate(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        # 先把矩阵整体翻转,也就是把各个类别的顺序倒过来
        matrix[:] = matrix[::-1]
        
        n = len(matrix)
        for i in range(0, n):
            for j in range(i+1, n):
                matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]

49# 字母异位词分组

这个题目我一开始想到要统计每个词出现的字母的次数,次数一致的就应该分到一起,但是其实很多个字典,不太好比较。我没想到的是,其实可以用一个数组来表示所有的字符串,只要用26个位就好了,这样表示出来的向量如果相等的就应该分到一组。而且作者还很机智的用了一个特殊的数据结构,是python里的defaultdict,它的作用是可以一个key对应多个value,所以就能存储最终的结果了。只要在一开始创建一个空的defaultdict,通过一个循环统计出每个字符串的向量,然后tuple函数把list转成tuple,最后把这个字符串加到defaultdict里面就好了,最终返回defaultdict的values。代码:

class Solution(object):
    import collections
    def groupAnagrams(self, strs):
        """
        :type strs: List[str]
        :rtype: List[List[str]]
        """
        res = collections.defaultdict(list)
        for s in strs:
            count = [0] * 26
            for c in s:
                count[ord(c) - ord('a')] += 1
            res[tuple(count)].append(s)
        return res.values()

(代码来自https://zhuanlan.zhihu.com/p/45596463

明天还不知道要经历怎样的风雨,今晚还是好好休息吧,年轻人。

你可能感兴趣的:(正式找工作第三天)