logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Subsets -- LeetCode

原题链接: http://oj.leetcode.com/problems/subsets/ 求子集问题是经典的NP问题,复杂度上我们就无法强求了哈,肯定是非多项式量级的。一般来说这个问题有两种解法:递归和非递归。我们先来说说递归解法,主要递推关系就是假设函数返回递归集合,现在加入一个新的数字,我们如何得到包含新数字的所有子集。其实就是在原有的集合中对每集合中的每个元素都加入新元素得到子集

#leetcode#java#面试
Edit Distance -- LeetCode

原题链接: http://oj.leetcode.com/problems/edit-distance/ 这道题求一个字符串编辑成为另一个字符串的最少操作数,操作包括添加,删除或者替换一个字符。这道题难度是比较大的,用常规思路出来的方法一般都是brute force,而且还不一定正确。这其实是一道二维动态规划的题目,模型上确实不容易看出来,下面我们来说说递推式。我们维护的变量res[i][

#leetcode#java#面试 +1
Unique Paths -- LeetCode

原题链接: http://oj.leetcode.com/problems/unique-paths/ 这道题是比较典型的动态规划的题目。模型简单,但是可以考核动态规划的思想。我们先说说brute force的解法,比较容易想到用递归,到达某一格的路径数量等于它的上面和左边的路径数之和,结束条件是走到行或者列的边缘。因为每条路径都会重新探索,时间复杂度是结果数量的量级,不是多项式的复杂度。

#leetcode#java#面试 +2
Remove Element -- LeetCode

原题链接: http://oj.leetcode.com/problems/remove-element/ 这道题是比较简单的数组操作,思路是一个指针从前往后走,如果遇到要删除的元素,就从后面调一个替换它,直到结束。复杂度是O(n),因为每个元素最多被访问一次。比较简练的实现代码如下:public int removeElement(int[] A, int elem) {if(

#leetcode#java#面试 +1
到底了