- 博客(11)
- 收藏
- 关注
原创 【Udacity笔记】AI for Robitics - Localization 机器人定位
分享我的Gatech OMSCS学位的网课笔记,开始上课都没时间刷题了。。https://www.udacity.com/course/artificial-intelligence-for-robotics--cs373这是第一课: Localization的基本原理这一章主要讲如何通过先验概率+观察结果+移动后的观察结果,给机器人定位。从上到下四根线,所有的前提都是门的位置已知。没有任何条件下的车的位置的均匀概率分布 已知车感应到在一扇门旁边,此时车的位置的概率分布。 已
2020-08-21 07:22:27 412 2
原创 【小YC的Leetcode日记】#79 单词搜索 Word Search
https://leetcode.com/problems/word-search/2020/08/16一题经典的宽搜,没有什么难点。用二维vis数组防止回头,退出的时候要记得把那个格子的vis重新设成0。我的源代码search函数里面return的True和False是没必要的,但是懒得改了。如果需要输出路径的话,可以用global变量记录路径,也可以对search函数多加母i,j的变量(这样用的内存少一些)。class Solution: board = [[]] .
2020-08-17 05:29:38 176
原创 【小YC的Leetcode日记】#42 接雨水 Trapping Rain Water
2020/08/14https://leetcode.com/problems/trapping-rain-water/从挡板那一题的推荐来写的,写完了才发现是hard。用的是下面这个单调栈的做法。https://leetcode-cn.com/problems/trapping-rain-water/solution/dan-diao-zhan-jie-jue-jie-yu-shui-wen-ti-by-sweeti/感觉还是比较好理解的,把水面横着分割,每次遇到栈里面比栈顶大的数字(
2020-08-16 10:13:45 136 1
原创 【小YC的Leetcode日记】#33 在循环有序数列中查找 Search in Rotated Sorted Array
https://leetcode.com/problems/search-in-rotated-sorted-array/2020/08/12题目是在循环有序的数列中查找一个数,要求时间复杂度log(N)。看到log(N)和有序就想到二分法,所以我最直观的想法是找出分界点,然后对分界点左右两边的有序数列分别做二分。分界点的寻找,要想满足题目条件,就也一定要用分治法。考虑一段数列以及它的左右端点,其关于分界点的关系可能有三种情况:1. 在分界点左边2. 在分界点右边3. 包含分界点
2020-08-14 09:57:42 123
原创 【小YC的Leetcode日记】#22 生成括号 Generate Parentheses
https://leetcode.com/problems/generate-parentheses/08/11简单的一题搜索,一次过。一个判断括号是否匹配的小技巧是设左括号为+1,右括号为-1,多维护一个记录总和的x,为了保证括号匹配,在它的任何位置往前看,左括号的数列一定大于等于右括号的数量,也就是x一定大于等于0。 这样就不用每次都去算括号匹配不匹配,大大提高了运算效率,下面的代码速度超过了95%的提交。class Solution: def generateParenthesi
2020-08-12 11:50:30 135
原创 【小YC的Leetcode日记】#4 两个有序数组的中位数 Median of Two Sorted Arrays
https://leetcode.com/problems/median-of-two-sorted-arrays/2020/08/10Leetcode刷的第一道hard,前前后后用了三天。看到是排序好的数列,又要求log的时间复杂度,就可以想到用分治法。我自己想了一个算法,但是感觉不够漂亮,要递归里面套递归(虽然复杂度也是log级别)。于是在网上看了一个别人的算法,在一个函数里面同时进行两个数组的递归,比较漂亮,最后边界调了挺久才调出来。方法一:写一个函数,计算对一个从小到大的排序数组a,
2020-08-12 07:29:03 131
原创 【小YC的Leetcode日记】#15 三个数之和 3Sum
https://leetcode.com/problems/3sum/2020/08/08最开始直观地写了个搜索,那就是O(n^3),这样部分数据会超时。后来想想剪枝,其实数字就三种可能:正、负、0。所以三个数相加就四种情况:正正负、负负正、正0负、000分别考虑这四种就行了,在每种情况下,两个同号的数字用数列循环,另一种符号的数字使用集合(set),集合的in运算平均复杂度是O(1),所以这样算法的平均复杂度就被优化成了O(n^2)。这个解法相当于用空间换时间,要开正数组、负数组、正集
2020-08-09 12:48:14 191 2
原创 【小YC的Leetcode日记】#11 装最多水的容器 Container With Most Water
https://leetcode.com/problems/container-with-most-water/2020/08/07i, j板子间的水量是 (j - i) * min(Hi, Hj), 直接枚举会超时。后来想了个贪心法,从左右两边开始,每一轮往中心更新一根,遇到水量更多的状态就更新一次,但是发现这样是不行的,局部最优不一定是全局最优——比如中间可能有两根超级长的板子,而它们两边的一圈板子都特别短,只有两个指针同时走到中间才能达到,但这用贪心法是永远走不到但,左右其中一根即使走到了
2020-08-08 12:11:04 169
原创 【小YC的Leetcode日记】#6 字符串曲折变换 Zigzag Conversion
https://leetcode.com/problems/zigzag-conversion/可以算到easy难度的一题,对(2*Rownum-2)取余就行。算行列的时候从0开始更好算,更符合取余的样式。第一次提交的时候没考虑row=1的情况,边界错误了,当时只想到了row >= len(s),看来以后提交前还是要多多检查边界条件。。...
2020-08-07 10:22:13 142
原创 【小YC的Leetcode日记】#5 最长回文子串 longest palindromic substring
https://leetcode.com/problems/longest-palindromic-substring/2020/08/05经典老题了,很容易想到动态规划。f[i,j]定义为s[i,j]子字符串是否是回文,那么可以写出状态转移方程:f[i, j] = True if f[i+1, j-1] == True and s[j] == s[j]最开始写循环的时候用i放在最外层,写出来发现不对,比如i=0的时候,j一直放前走,然后回头看中间那一段的状态,但这个时候中间那一段是没有被更新
2020-08-07 09:45:30 137
原创 【小YC的Leetcode日记】#3 最长非重复子串 longest-substring-without-repeating-characters
https://leetcode.com/problems/longest-substring-without-repeating-characters/2020/08/04最开始写了个O(n^2)的算法,给每段字符弄一个set,set的大小和子字符串长度一样就是unique,可是最后一个点没过。后来发现有一个O(n)的算法,左端点i放在第一层循环,右端点j在里面,永远维护一个unique的字符串,如果当前s[i,j]不unique就移动i(直至到达j),中途遇到unique子串就停止移动i,.
2020-08-07 09:36:05 202
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人