摘要: 59.螺旋矩阵。给定矩阵的维度n,返回n×n的矩阵,其中数字按照顺时针的方式排列。这道题相对比较容易,可以直接按顺序进行数字的填入,只要判断好边界就可以了,加上填了数字的格子不能再填,可以认为是新的边界,需要每填完一行或一列之后对边界进行更新。 阅读全文
posted @ 2020-08-14 15:23 小小的豪猪窝 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 47.全排列II。给定一个带有重复数字的数组,给出所有的不重复排列组合的情况。可以通过树的方式很好的理解并解决。按从前往后遍历的顺序,每往后遍历一个元素生成新的一层节点,该层各个节点为当前已遍历的所有元素的全排列,最终生成的叶子结点就是最终结果。因此可以使用递归的方法,实现层层遍历。要注意的是,因为有重复元素的存在,所以排列的时候要对重复元素进行去重。 阅读全文
posted @ 2020-08-07 14:31 小小的豪猪窝 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 43.字符串相乘。给定两个数字字符串,给出相乘结果的字符串,规定不能使用大数类型或者直接转换成整数。由于不能直接转化成数字,首先想到将字符串逐位进行操作。于是可以借鉴乘法竖式的思想,将每位相乘的结果按照位数进行存储并相加得到结果。于是用数组进行存储,两个字符串从后往前遍历,在数组对应位置存储结果,再遍历数组,将进位往前相加,最后按位合成字符串并输出。 还有一个方法,运用kar... 阅读全文
posted @ 2020-07-30 09:41 小小的豪猪窝 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 31.下一个排列。题目是给出一组数字的某种排列,要求给出下一个排列,并且还有空间上的要求。 首先可以知道的是,给定一个n个数字的组合,有n!种排列方式,所以很明显暴力破解不可取。而其实通过例子可以比较明显的看出其中的规律。先从较少的数字开始,比如[1,2,3],下一个排列很明显是[1,3,2],从这可以看出下一个排列中,肯定需要将较小的数字往后挪,或者说与较大的数字进行交换。... 阅读全文
posted @ 2020-07-21 19:32 小小的豪猪窝 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 从理论到实践,才是完整的学习过程。 神经网络的提出,是从神经元开始的。从生物学意义上的神经元得到启发,感知机的概念被提了出来。感知机的原理就是对输入向量进行一定的计算,并通过激活函数得到更加能表达数据意义的内容。再从向量开始扩充,拓展到矩阵,以及更高维的张量。于是,全连接层被用来同时处理更多的数据。全连接层的实现方式主要有两种:张量形式和层形式。 张量形式主要是两步... 阅读全文
posted @ 2020-07-16 20:24 小小的豪猪窝 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 29.两数相除。给定两个整数,实现整除运算。 题目本身不算难,但是要考虑的细节还是不少。首先是整形的溢出问题。题目设定是整形范围为-2^31~2^31-1,结果溢出时,输出结果2^31-1,因此对于-2^3除以-1这样的特殊情况,要考虑进去。然后就是实现算法的选择,最直观的算法就是用被除数不停的减去除数,直到不能再减,但是碰到较大的数的时候,会导致超时。于是想到用移位运算,先... 阅读全文
posted @ 2020-07-14 13:19 小小的豪猪窝 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 19.删除链表的倒数第N个节点。给定一个链表和不大于链表长度的N,返回删除倒数第N个节点后的链表。 题目本身比较简单,能想到是用双指针解决。先将两个指针隔开N个节点,再一起向后移动至末尾。 具体实施起来有些地方需要注意:因为是链表,删除某一节点需要获得前一节点的指针,所以左指针移动到最后的时候应该指向的是删除节点的前一个节点,才能执行删除操作。有可能删除的节点正好是... 阅读全文
posted @ 2020-07-07 19:53 小小的豪猪窝 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 终于在今天看完了机器学习的系列视频,入门就只剩下实践了。 对于神经网络来说,由于网络结构是一层层的,因此代价函数也是每层进行计算,将每层的代价值算出来后计算总和,再加上所有参数平方和,即得到了最终的代价值。而要计算梯度,即代价函数的偏导数,要用到反向传播的算法,即从输出层开始,用结果的偏离值以及每一层的参数,逐层计算,最终得到偏导数。 其中,有一些小细节。一个是如何... 阅读全文
posted @ 2020-07-07 17:16 小小的豪猪窝 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 进一步认识git分支操作。 首先是HEAD引用。一般HEAD引用指向的是当前分支,但有时候需要从某一历史版本开始新的分支,这时候就需要移动HEAD引用,命令与移动分支节点一样是git checkout。改变引用时,可以直接输入哈希值进行移动,但比较繁琐,于是就需要使用相对引用。^表示从节点向上移动一个提交记录,~表示从节点向上移动num个提交记录。 再然后,如果不想... 阅读全文
posted @ 2020-07-03 19:35 小小的豪猪窝 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 今天主要学习的是有关tensorflow类型以及部分操作的东西。 tensorflow主要是对张量(tensor)类型进行操作,可以细分为标量、向量、矩阵以及狭义上的张量,分别表示0维、1维、2维、高维数据。 除此之外,tensorflow提供了Variable对象用于构建需要进行梯度优化的变量,包含name、trainable等属性。 针对张量,tens... 阅读全文
posted @ 2020-07-03 14:26 小小的豪猪窝 阅读(89) 评论(0) 推荐(0) 编辑