LeetCode算法总结
TarucaLiu
这个作者很懒,什么都没留下…
展开
-
26. Remove Duplicates from Sorted Array
题目摘要 删除有序数组中重复数字,返回数组中不同数字个数len,并使得数组前len个数字为不重复数字。数组中超过len的不用管。原创 2016-11-28 21:13:55 · 135 阅读 · 0 评论 -
160. Intersection of Two Linked Lists
题目摘要 找到两条单向链路的交叉节点解法 跑圈法进阶版。两个指针分别指向两条链路的头结点,同时逐步往后遍历,当一个指针到达尾部时,将该指针指向另一条链路的头部,另一个指针同样处理。在第二次遍历时如果两个指针指向的节点相等,则返回该节点注意 边界条件比较多,需要注意可问问题链表中是否有圈原题 Write a program to find the node at which the int原创 2016-12-09 20:39:06 · 120 阅读 · 0 评论 -
20. Valid Parentheses
给一个只含有”(“, “)”, “[“, “]”, “{“, “}”的字符串,判断括号合并顺序是否正确原创 2016-11-28 15:45:01 · 159 阅读 · 0 评论 -
205. Isomorphic Strings
题目摘要 给出两个长度相同的字符串,判断他们结构是否相同。 示例: "egg", "add"相同 "foo", "bar"不同 "paper", "title"相同原创 2016-12-16 17:25:09 · 152 阅读 · 0 评论 -
448. Find All Numbers Disappeared in an Array
题目摘要 给定一个整形数组,其中1≤a[i]≤n(n为数组长度),一些元素出现两次一些元素只出现一次,找到1~n中所有没有出现的元素。请用O(n)的时间复杂度,并且不使用额外的空间。原创 2017-01-03 11:23:42 · 197 阅读 · 0 评论 -
202. Happy Number
题目摘要 判断一个正整数是否是“Happy Number”。 不断将正整数各位平方和相加,知道该正整数开始重复,如果重复为1,则是“Happy Number”。解法 用Floyd环检测算法循环n,知道n开始出现重复,如果此时n = 1,则是“Happy Number”。public class Solution { public boolean isHappy(int n) {原创 2016-12-28 14:58:57 · 132 阅读 · 0 评论 -
447. Number of Boomerangs
题目摘要 给定平面上的n个点,一个”boomerangs”值三个点(i, j, k),i到j的距离和i到k的距离相等,找到boomerangs的数量。解法 遍历二元数组n,每次循环,将改点与其它点的<距离, 该距离点数量>存到一个hashmap里,每次循环boomerangs的数量为map的每个value * (value - 1)相加public class Solution { pu原创 2017-01-06 21:12:35 · 148 阅读 · 0 评论 -
438. Find All Anagrams in a String
题目摘要 给定一个字符串s和一个非空字符串p,找到p颠倒字母而形成的字符串在s中出现的所有首字母的位置原创 2016-12-29 20:37:43 · 162 阅读 · 0 评论 -
409. Longest Palindrome
题目摘要 给定一个由大小写字符组成的字符串,找出用该字符串里的字符能组成的最长的回文的长度。注意大小写敏感。解法 先遍历字符串,统计各个大小写字母的出现频率,分别保存到两个长度为26的数组里,再统计回文长度(频率 / 2 * 2以将奇数频率减一,如果算出长度不等于字符串长度,最后结果再加一,中间可以是奇数)。public class Solution { public int longe原创 2016-12-29 21:05:37 · 178 阅读 · 0 评论 -
414. Third Maximum Number
题目摘要 给定一个非空数组,找出其中第三大的数,如果没有,找出其中最大的数。时间复杂度必须控制在O(n)O(n)内。解法 int max, mid, min,赋值为整形最小值。遍历数组,按大小情况替换max, mid, min, 最后判断有没有第三大的数,返回。public class Solution { public int thirdMax(int[] nums) {原创 2016-12-29 22:19:20 · 146 阅读 · 0 评论 -
387. First Unique Character in a String
题目摘要 给定一个字符串,返回第一个没有重复的字母的下标,如果不存在,返回-1。假设字符串中只含有小写字母。原创 2017-01-08 14:22:38 · 141 阅读 · 0 评论 -
453. Minimum Moves to Equal Array Elements
题目摘要 给定一个非空n长数组,找出使数组所有元素相等的最小步数,每一步操作为将数组中n-1个元素加一。解法 设tmp = nums[0],遍历数组,如果nums[i] > tmp,则步数result += nums[i] - tmp,如果nums[i] < tmp,则步数result += (tmp - nums[i]) * i; tmp = nums[i];public class Solu原创 2017-01-01 18:31:48 · 198 阅读 · 0 评论 -
56. Merge Intervals
题目摘要 给定一组区间集合,返回合并后的区间。 例如, 给定[1,3],[2,6],[8,10],[15,18], 返回[1,6],[8,10],[15,18].解法 1. 将给定列表按区间开头进行排序(可以用匿名内部类new Comparator实现继承Comparator的效果),然后根据区间结尾的情况合并 2. 把区间开头和结尾分别存到一个数组里,分别排序,然后合并区间(这一步步骤原创 2017-03-02 15:22:51 · 156 阅读 · 0 评论 -
35. Search Insert Position
题目摘要 给定一个有序数组和一个目标值,从数组里面找出目标值的位置。如果找不到,返回它插入的位置。解法 1. 查找先想到二分法,此处需要改良二分查找法。 2. 具体思想为二分,如果目标值在区间外,或者找到目标值,则可以确定目标位置。如在区间右边,返回end + 1;如在区间左边,返回start 2. 使用二分法时,应当防止中值溢出,用mid = left + (right - left) /原创 2017-03-02 21:44:18 · 147 阅读 · 0 评论 -
122. Best Time to Buy and Sell Stock II
题目摘要 给定一个数组,第i个元素代表第i天的股票价格。 你可以随意交易,但是买进之前必须先卖出,求出最大利润解法 1. 如果第i个元素大于第i - 1个元素,将差价加到总利润上注意可问问题原题 Say you have an array for which the ithi^th element is the price of a given stock on day ii.Design原创 2017-03-08 16:34:30 · 176 阅读 · 0 评论 -
268. Missing Number
题目摘要 给定一个数组,包含从0, 1, 2, ..., nn个唯一数字,从数组中找到缺少的那个。 例如, nums = [0, 1, 3],返回2。解法 1. 计算0到n的总和account = (0 + n) * (n + 1) / 2,计算数组总和sum,返回account - sum 2. 异或所有的索引和数据,返回注意 1. 注意第一种解法中计算account是n与length原创 2017-03-07 17:32:56 · 146 阅读 · 0 评论 -
155. Min Stack
题目摘要 实现一个栈,支持push, pop, top, getMin等方法push(x) – Push element x onto stack.pop() – Removes the element on top of the stack.top() – Get the top element.getMin() – Retrieve the minimum element in the原创 2016-12-09 19:12:09 · 125 阅读 · 0 评论 -
19. Remove Nth Node From End of List
题目摘要 删除单向链表倒数第n个元素解法 1. 先计算整个列表的长度len,然后转换成删除链表第len - n + 1个元素 2. 两个指针指向傀儡节点,第二个向后移动n次,同时向后移动两个节点,第二个节点移动到末尾时,删除第一个节点的下一个节点注意 因为第一个节点可能被删除,所以需要新建一个傀儡节点指向第一个节点原题 Given a linked list, remove the nth原创 2016-11-27 18:59:16 · 163 阅读 · 0 评论 -
14. Longest Common Prefix
题目摘要 寻找字符串数组中字符串的最长公共前缀原创 2016-11-29 10:53:50 · 159 阅读 · 0 评论 -
24. Swap Nodes in Pairs
题目摘要 交换链表相邻两个节点的顺序,返回头结点。1->2->3->4变成2->1->4->3原创 2016-11-29 11:39:01 · 158 阅读 · 0 评论 -
38. Count and Say
题目摘要 报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示: 1, 11, 21, 1211, 111221, ... 给定一个整数 n, 返回 第 n 个序列。原创 2016-11-30 20:55:00 · 120 阅读 · 0 评论 -
58. Length of Last Word
题目摘要 给定一个字符串, 包含大小写字母、空格' ',返回最后一个单词长度。若不存在,返回 0 。原创 2016-11-30 21:54:09 · 114 阅读 · 0 评论 -
349. Intersection of Two Arrays
题目摘要 写一个函数找到两个给定数组的相同元素,返回结果中每个元素只出现一次解法 * HashMap,但是时间较长 * 先将两个数组排序,再逐项比较注意 1. HashMap的用法 2. HashMap不能直接转换为数组 3. 排序法时,现新建一个nums1数组长度的临时存储数组,最后搬移到另一个正确长度的数组中可问问题原题 Given two arrays, write a func原创 2016-12-10 21:34:57 · 122 阅读 · 0 评论 -
28. Implement strStr()
题目摘要 完成函数strStr(String haystack, String needle),返回needle在haystack中第一次出现的位置,没有出现返回-1。原创 2016-12-01 21:53:32 · 137 阅读 · 0 评论 -
27. Remove Element
题目摘要 给定一个整数数组,删除数组中指定值并返回新数组长度原创 2016-12-01 21:59:33 · 126 阅读 · 0 评论 -
36. Valid Sudoku
题目摘要 检查一个数独矩阵是否合法原创 2016-12-02 15:25:05 · 141 阅读 · 0 评论 -
66. Plus One
题目摘要 给定一个非负整数代表一个整数数组,返回此整数+1后的数组。 注意:该整数中最大的位始终出现在第一位。 927->['9','2','7']返回['9','2','8']原创 2016-12-02 16:11:46 · 124 阅读 · 0 评论 -
463. Island Perimeter
题目摘要 求矩阵岛屿的周长,岛中间没有湖原创 2016-12-14 20:55:50 · 182 阅读 · 0 评论 -
299. Bulls and Cows
题目摘要 给出两个数字,猜第二个数字与第一个数字大小和位置完全相等位的个数,和大小相等位置不同的个数,以“1A2B”的形式返回。解法 1. hashTable(不推荐),因为数据规模很小,只有10个数字 2. 用两个数组(最好)public String getHint(String secret, String guess) { int[] s = new int[10];原创 2016-12-12 21:18:52 · 213 阅读 · 0 评论 -
389. Find the Difference
题目摘要 给出两个只有小写字母的字符串s和t,t是由s中的字母随机排序并添加一个新字母得到的,找出那个新字母原创 2016-12-12 21:53:34 · 192 阅读 · 0 评论 -
125. Valid Palindrome
题目摘要 给定一个字符串,判断该字符串是否是回文,只考虑字符串中的字母与数字,忽略其他符号以及字母大小写。 "A man, a plan, a canal: Panama"是回文原创 2016-12-07 21:35:18 · 114 阅读 · 0 评论 -
141. Linked List Cycle
题目摘要 给定一个链表判断是否有环原创 2016-12-07 21:57:46 · 126 阅读 · 0 评论 -
121. Best Time to Buy and Sell Stock
题目摘要 假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。原创 2016-12-08 20:36:59 · 127 阅读 · 0 评论 -
191. Number of 1 Bits
题目摘要 计算一个32位无符号整数的汉明距离解法 1. n = n & (n - 1); count++ 2. count= count+ (n & 1); n = n>>>1;注意 1. >>>无符号位右移(补零),>>右移可问问题原题 Write a function that takes an unsigned integer and returns the number of ’1原创 2017-03-07 21:13:38 · 187 阅读 · 0 评论