第一题 149. Max Points on a Line
题目描述
平面上有n个点,找出共线的点的最大个数
算法
很容易想到O(n^3)的解法,通过起点i,终点j枚举直线,然后枚举中间点k,依次判断k与i,j是否共线,统计最大值。
代码还有问题,有一种test case过不了
第二题 500. Keyboard Row
题目描述
给定一组单词,返回可以用美式键盘中的某一行字母键入的所有单词。
算法
利用String数组对每一行的字母进行存储,然后使用一个tag作为标示是否为连续的一行元素。
学到的东西
List转Array可以用String[] result = store.toArray(new String[store.size()]);
然后Set用Array初始化,new HashSet(Arrays.asList(someArray));
第三题 575. Distribute Candies
题目描述
给定一组长度为偶数的整数,其中每个数字代表一个糖果的种类标号。
将糖果均分给哥哥和妹妹,返回妹妹可以得到的最大糖果种类数。
算法
|
|
第四题 359. Logger Rate Limiter
算法
用hashmap存数据
第五题 463. Island Perimeter
题目描述
给定一个二维地图,1表示陆地,0表示水域。单元格水平或者竖直相连(不含对角线)。地图完全被水域环绕,只包含一个岛屿(也就是说,一个或者多个相连的陆地单元格)。岛屿没有湖泊(岛屿内部环绕的水域)。单元格是边长为1的正方形。地图是矩形,长宽不超过100。计算岛屿的周长。
算法
遍历一遍整个矩阵,查看有多少个岛。每个岛有4条边,如果存在相邻的陆地,那么需要减去2条边。最后计算出结果
第六题 266. Palindrome Permutation
算法
HashMap
利用hashmap存储出现过的数,并检查最后是奇数还是偶数
HashSet
方法相似
第七题 609. Find Duplicate File in System
题目描述
给定一组文件信息,包含目录路径,以及目录下包含的文件。将所有内容重复的文件分组输出。
算法
算法比较简单,存储下所有相同的内容,最后查看,如果大于2的话就进行输出。