算法
常见算法
低头看天,抬头走路
句句都是正确的废话,招招都是致命的空招。
展开
-
Hash小结
定义Hash也叫散列,通过把关键码值映射到表中一个位置来访问记录,有点类似于数组,并且能在O(1)(冲突情况另算)下查找到元素。任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。Hash函数直接取余法:取关键字被某个不大于哈希表表长m的数p除后所原创 2016-08-31 16:35:39 · 615 阅读 · 0 评论 -
栈和队列的实现
数组实现栈/** *数组实现栈,需要"数组,末端索引,初始容量" */public class ArrayStack {//数组初始容量,由于是数组实现,需要考虑扩容问题 private int DEFAULT_CAPCITY = 10; private int[] array; private int topOfStack = -1;// 使用默认初始容量原创 2016-08-17 18:19:53 · 314 阅读 · 0 评论 -
leetcode 54. 螺旋矩阵
题目给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12]]输出:...原创 2019-09-16 16:07:33 · 152 阅读 · 1 评论 -
leetcode14. 最长公共前缀
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路1.最长公共前缀长度不超过最短字符串长度2.逐个...原创 2019-08-07 21:11:11 · 124 阅读 · 0 评论 -
leetcode31. 下一个排列
题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1思路1.该题需要复习2.【1 3 5 4 ...原创 2019-07-23 00:16:09 · 90 阅读 · 0 评论 -
leetcode11. 盛最多水的容器
题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为...原创 2019-07-21 23:25:43 · 133 阅读 · 0 评论 -
leetcode20 有效的括号
题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: ...原创 2019-07-08 22:29:12 · 75 阅读 · 0 评论 -
leetcode91. 解码方法
解码方法一条包含字母 A-Z 的消息通过以下方式进行了编码:‘A’ -> 1‘B’ -> 2…‘Z’ -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: “12”输出: 2解释: 它可以解码为 “AB”(1 2)或者 “L”(12)。示例 2:输入: “226”输出: 3解释: 它可以解码为 “BZ” (2 26), “V...原创 2019-07-18 00:29:02 · 217 阅读 · 0 评论 -
leetcode69. x 的平方根
题目实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。思路1.递归2.2分3.注意int越界(此处使用long)实现clas...原创 2019-07-16 22:47:22 · 85 阅读 · 0 评论 -
leetcode49. 字母异位词分组
题目给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。思路1.将每个字符串排序,若排序值相同...原创 2019-07-15 23:56:22 · 89 阅读 · 0 评论 -
leetcode7 整数反转
标题给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路注意数值溢出判断,代...原创 2019-07-05 01:11:08 · 174 阅读 · 0 评论 -
leetcode 算法思路
出现频度为5:Leet Code OJ 1. Two Sum [Difficulty: Easy]Leet Code OJ 8. String to Integer (atoi) [Difficulty: Easy]Leet Code OJ 15. 3Sum [Difficulty: Medium]Leet Code OJ 20. Valid Parentheses [Difficult...原创 2019-07-05 00:15:12 · 174 阅读 · 0 评论 -
leetcode13. 罗马数字转整数
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...原创 2019-07-14 00:37:06 · 74 阅读 · 0 评论 -
leetcode12. 整数转罗马数字
题目罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1...原创 2019-07-14 00:10:24 · 146 阅读 · 0 评论 -
leetcode125. 验证回文串
题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false思路1.注意索引越界2.ASCII a(97) - A(65) = 32实现cl...原创 2019-07-13 23:11:17 · 154 阅读 · 0 评论 -
leetcode73 矩阵置0
题目给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,...原创 2019-07-09 23:16:34 · 140 阅读 · 0 评论 -
leetcode28 实现strStr()
题目实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “...原创 2019-07-09 00:01:08 · 82 阅读 · 0 评论