摘要: 又是一个DFS。犯过的一个错误是,上下左右移动的时候,不需要x,y一起变,只要变一个就行了。在参考答案里面,把访问过得格子标为'#'特殊字符,就可以省去visited数组,但这样会改变原来的数组。http://discuss.leetcode.com/questions/254/word-searchpublic class Solution { public boolean exist(char[][] board, String word) { // Start typing your Java solution below // DO NOT write... 阅读全文
posted @ 2013-08-07 23:14 阿牧遥 阅读(306) 评论(0) 推荐(0)
摘要: DFS。这种思路清晰的题目,大问题一般出在小地方。1.当DFS找到时,要返回true。这样一路true上去,否则最后格子又会被设为'.';2.计算格子所在九宫格时,要用int a = x/3*3+i; 忘记乘3了,一直错;public class Solution { public void solveSudoku(char[][] board) { // Start typing your Java solution below // DO NOT write main() function int m = board.length; ... 阅读全文
posted @ 2013-08-07 22:18 阿牧遥 阅读(297) 评论(0) 推荐(0)
摘要: 此题思路不易想到。 首先思路参照网上,因为是O(n),很自然想到用hash或bitmap,但不能用更多的存储,就用该数组本身吧。用正负来表示是否存在,所以第一遍的时候把负数变成不可能的正数,此处设为Integer.MAX_VALUE。 编写中错误几次,1.是length为0;2.同一个数出现两遍,那 阅读全文
posted @ 2013-08-07 21:20 阿牧遥 阅读(277) 评论(0) 推荐(0)
摘要: 有是一道组合排列题目。继续用DFS。不过这次在LeetCode网页里直接写,更接近面试的纸写。public class Solution { public ArrayList> permute(int[] num) { // Start typing your Java solution below // DO NOT write main() function ArrayList> ans = new ArrayList>(); int len = num.length; if (len == 0) ... 阅读全文
posted @ 2013-08-07 00:27 阿牧遥 阅读(454) 评论(0) 推荐(0)
摘要: 借鉴了之前加法的超时经验,就开始采用倍增法。但还是吃了负数和整数边界值的亏。最后干脆使用long得了。参考答案的递归果然更简洁易懂,而且不用考虑整数边界值的情况,精彩。public class Solution { public double pow(double x, int n) { ... 阅读全文
posted @ 2013-08-07 00:05 阿牧遥 阅读(746) 评论(0) 推荐(0)