标签:幸福 平面 .com out leetcode att alt 数组 []
版权声明:
本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处.
上周经历了人生中最艰辛的几天,所以刷题又耽误了3周多,今天重新开刷。又出现恍如隔世的感觉了!
来看看这道题:
Battleships in a Board(419)
于是我按照自己的思路实现了一下程序,其实我知道我的思路是“暴力”的,当然程序跑起来了,但是结果千疮百孔。原因是我太多太多因素没有考虑到,这充分说明我的思路非常不缜密。并且我距离“算法”这两个字,还有好远好远!
但是进步的地方是,我至少有思路了,并且可以尝试写一下,并且跑起来了。
二、答案解析
此题用了一个很不错的技巧,他把战舰理解成蛇的样子,所以只找到top-left,也就是找到所谓蛇头。找到蛇头以后就可以找到蛇的数量了。
public class Battleship1 { public static void main(String[] args) { char[][] board = new char[][] { { ‘x‘, ‘.‘, ‘.‘, ‘x‘ }, { ‘.‘, ‘.‘, ‘.‘, ‘x‘ }, { ‘.‘, ‘.‘, ‘.‘, ‘x‘ } }; System.out.println("Battleship:" + Solution.countBattleships(board)); } public static class Solution { public static int countBattleships(char[][] board){ int count = 0; if (board == null || board.length == 0 || board[0].length == 0) { return 0; } for (int i = 0; i < board.length ; i++) { for (int j = 0; j < board[0].length; j++) { if(board[i][j]==‘.‘) continue; if(i>0&&board[i-1][j]==‘x‘) continue; if(j>0&&board[i][j-1]==‘x‘) continue; count++; System.out.println("Battleship:"+count+"i="+i+","+"j="+j+","); } } return count; } } }
public class battleShips1 { public static void main(String[] args) { char[] line={‘.‘,‘x‘,‘.‘,‘x‘,‘.‘,‘.‘,‘x‘,‘x‘}; System.out.println(Solution.countBattleships(line)); } public static class Solution{ public static int countBattleships(char[] line){ int count=0; if(line==null||line.length==0){ return 0; } for(int i=0;i<line.length;i++){ if(line[i]==‘.‘){ continue; } if(i>0&&line[i-1]==‘x‘){ continue; } count++; } return count; } } }
这道题这个算法非常的优秀,但是我短时间是不可能想到了。所以应该再多练习,我练习的题目还是太少太少了。我看了一下,leetcode现在只刷了11道。还差太远了!继续加油努力!不要想太多,学习本身其实也是一种幸福。
标签:幸福 平面 .com out leetcode att alt 数组 []
原文地址:http://www.cnblogs.com/zuofeiyi/p/6676349.html