美文网首页
正式找工作第三天

正式找工作第三天

作者: 一路不向西 | 来源:发表于2019-08-28 23:30 被阅读0次

    今天晚上要去面试蘑菇智行还挺开心的,感觉是家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

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

    相关文章

      网友评论

          本文标题:正式找工作第三天

          本文链接:https://www.haomeiwen.com/subject/jbuvectx.html