>

自由软件精神——“自由、开放、分享”。自由软件自诞生之日起,就秉承了学术自由的思想,信奉科学无国界,知识应该全人类共享。

ubuntu精神——人道待人,天下共享连接人人的信念。具有 ubuntu 精神的人心胸开阔,乐于助人,见贤思齐而不忌妒贤能......

文章, 第3页

leetcode刷题 N-Queens II

比第一个简单!去掉一些函数即可!

标签:

leetcode刷题 N-Queens

如果面试遇到了的话我再也不怕了,其实本质就是抽象一个一维的positions,然后递归找index+1和index的关系,满足条件的就是结果了!

标签:

leetcode 刷题 Wildcard Matching

典型的DP,for p in pattern: for char in string: use p dp[i-1][j-1] to decide dp[i][j]!注意启动dp的条件dp[0][0]=True!

标签:

leetcode刷题 Permutations II

排列除了使用swap思路,使用顶层合并也是可以的,permute(arr) => for data in arr: data U permute(arr with data removed)!记得排序和去重!

标签:

不好做,我需要总结下旋转数组所有题目!

标签:

leetcode刷题 Multiply Strings

大数乘法,如果按照小学乘法肯定超时,采用另外的思路,用一个数组vector m+n维度保存中间结果!尼玛,下次要一下子写出来!

标签:

leetcode刷题 First Missing Positive

注意,python里这样写是错误的,A[i],A[A[i]-1]=A[A[i]-1],A[i],因为A[i]已经交换了!正确的做法是tmp=A[i],A[i],A[tmp-1]=A[tmp-1],A[i],此外,对于这种交换的题目,类似MS的交换颜色,都可以按照这样的模式:while i

leetcode刷题 Permutations

排列的本质就是从arr中选择任意一个,n!=C(n,1)*(n-1)!,所以for循环里做个swap,目标就是将任意元素放在首位选择!再结合DFS+PATH的思路即可搞定!

标签:

leetcode刷题 Combination Sum II

一定要以树的方式去思考,就是DFS+path!注意绕过重复元素的方法,第一次处理了重复元素以后,就不需要再处理了!

标签:

leetcode刷题 Rotate Image

我的心不平静!

标签:

leetcode刷题 Anagrams

其实就是利用hash来存储变位词,程序员面试金典里的。注意,python对string排序是"".join(sorted(str))。

标签:

leetcode刷题 Combination Sum

其实就是将整个求解看作是一颗树,然后转换为DFS+path问题,但是当心重复的组合,需要设置一个index。for i in range(index,leng): i as the next index。

标签:

leetcode刷题 Word Search

就是DFS,但是要使用arr[i][j]='#‘来标记已经访问过的字符,并在返回时候还原原来的字符。其实这个DFS里常用的path先push back,再pop back是一个道理!此外,程序优雅的写法就是bool ans=dfs(board,r+1,c,word,index+1) || dfs(board,r,c+1,word,index+1) || dfs(board,r-1,c,word,index+1) || dfs(board,r,c-1,word,index+1) 避开了一堆的判定!还有将返回的越界啥的,都放在函数首部来做,学到!

标签:

leetcode刷题 Search Insert Position

一定要深刻认识二分,当target number不在array里的时候,low,high代表的含义分别是:arr[high]小于target,arr[low]大于target!阿里巴巴第一次面试,找数组中最近的点就是直接返回min(abs(arr[low]-target),arr[high]-target),当然,记得判定target是否在arr[0],arr[-1]内!

标签:

leetcode刷题 Jump Game

只需要顺序扫描数组,记录下能够到达的最远位置!DP居然都搞不定,晕死!

标签:

leetcode刷题 Maximum Subarray

连续子数组的最大和,就4行代码!

标签:

leetcode刷题 Next Permutation

最最简单的思路就是从尾部到首部找出arr[i],满足arr[i+1]~最后一个元素中存在一个大于arr[i]的元素,找到以后再从arr[i+1]~最后一个元素里找出大于arr[i]的最小元素。交换最小元素和arr[i],并将arr[i+1]~最后元素升序排即可!其实再仔细分析,就是满足条件的arr[i]一定有arr[i+1]~最后元素是单调递减的!所以你在找arr[i]和排序时候可以优化下找相邻元素arr[i]大于arr[i-1],并且排序时候仅仅reverse即可!

标签:

leetcode刷题 Spiral Matrix

做起来相当不爽!太尼玛容易出错了,因为很有可能在某一行或者列打印结束!所以得加判定。

标签:

leetcode刷题 Permutation Sequence

其实就是分析下,第1位为1的有(n-1)!种。利用这个规律找出首位数字!然后迭代处理。此外,注意预处理下k-=1,这是一个很关键的技巧,化简为易!

标签:

leetcode刷题 Unique Paths II

主要就是DP,dp[i][j] = dp[i - 1][j] + dp[i][j - 1],注意DP的启动条件是DP[0][1]=1!这个初始化的key point不要错了!

标签:

« 1 2 3 4 5 6 7 8 9 10 » 返回顶部