随笔分类 - LeetCode
摘要:一、题目 1、审题 2、分析 给出一个有序的整数数组,统计总共有多少个元素,其中同一个整数最多只能存在两个,并将统计的所有整数放在数组前头。(只能借助一个额外的空间) 二、解答 1、思路: 方法一、 ①、若数组长度 len <= 2, 则直接返回数组长度。 ②、len > 2时,从下标 i = 2
阅读全文
摘要:一、题目 1、审题 2、 分析 给出一个二维的字符数组 board,一个字符串 word;在 board 中可以向左右、上下延伸,判断 word 是否可以在延伸中找到。其中 board 中每个字符只能用一次。 二、解答 1、思路: 运用递归的思想进行实现。 开辟一个二维数组的空间用于记录该字符是否被
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个整数数组,求其所有的不重复的子数组集合。 二、解答 1、思路: 方法一、采用回溯法。 ①、通过确定子集合数组的元素个数进行元素的字典排列。返回的是字典序的有序序列 ②、直接将子集合全部返回并进行回溯。 方法二、直接创建一个 List 存放所有子集,遍历数组; 每
阅读全文
摘要:一、题目 1、审题 2、分析 给出整数 n,整数 k,求 1~n 之间的 k 个数字的所有组成。 二、解答 1、思路: 方法一、运用 DFS 方法。 方法二、f(n, k) = f(n-1, k-1) + f(n-1, k) 即: k 个数字中选了 数字 n 和 k 个数字中未选取数字 n 两种情况
阅读全文
摘要:一、题目 1、审题 2、分析 给出两个字符串 s 与 t,求 t 中所有字符在 s 中都出现的最短长度的 s 的一个子串。若 s 中不存在这样的子串,返回空。 二、解答 1、思路: ①、用 HashMap 存储 t 的字符,其中 key 为 字符, value 为出现的次数。 ②、遍历 s 中的字符
阅读全文
摘要:一、题目 1、审题 2、分析 荷兰国旗问题。用 0,1,2 代表颜色,将数组中的所有的 0 排在前面, 1 排在中间,2排在后面。 二、解答 1、思路: ①、选用三个指针。 left 与 current 指向下标为 0 的元素; right 指向数组末尾。 ②、遍历数组,当 current <= r
阅读全文
摘要:一、题目 1、审题 2、分析 一个二维数组,其中从左到右为升序,且下面一行数值均比上面的大,求所给数值 target 是否存在于数组中。 二、解答 1、思路: 方法一、 先对二维数组的每一行的第一列进行二分查找,在对该列所在的行进行二分查找。 方法二、 将二维数组看成一个有序的一维数组进行一次二分法
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个 mXn 二维矩阵,若 [i][j] 值为 0, 则矩阵第 i 行,第 j 列化为 0。 二、解答 1、思路: 方法一、 矩阵行长为 m,列长为 n,新建两个大小为 m、n的一维数组,用于记录该行、列是否为 0,最终,遍历数组给矩阵赋值即可。 使用额外空间 O(
阅读全文
摘要:一、题目 1、审题 2、分析 给出两个单词字符串,word1 经过字符的删除、替换、插入,最少需要几步才能变为 word2. 二、解答 1、思路: f(i, j) 代表 word1 的前 i 个字符与 word2 的前 j 个字符的最小代价: ①、若 word1[i] == word2[j],则 f
阅读全文
摘要:一、题目 1、审题 2、分析 给一个Unix 的目录结构的字符串表示,将其简化为最简单的目录格式。 .. :代表上一级目录; ///:多个 / 相连时只要保留一个; .: 可以被忽略; 二、解答 1、思路: 将字符串以 '/' 字符进行分割,将分割的有意义目录结构进行入栈。最终出栈构成简化的目录结构
阅读全文
摘要:一、题目 1、审题 2、分析 一次可以跳一步或者2步,求跳到 n 时共有几种跳法。 二、解答 1、思路: 方法一、 采用递归,到 n 级台阶记为 f(n), 则到达 n 级台阶的跳法组成为: f(n) = f(n-1) + f(n-2) ; 注意: 递归算法有许多重复的计算,导致时间超出了。。。。。
阅读全文
摘要:一、题目 1、审题 2、分析 实现 sqrt(X) 方法,返回的 n 要求是 n*n < x 的最大整数. 二、解答 1、思路: 方法一、 采用二分查找法,查找 n。 方法二、采用 NewTon 迭代法
阅读全文
摘要:一、题目 1、审题 2、分析 给出两个只含有 0、1的二进制数值,求其加法形成的新数组。 二、解答 1、思路: 方法一、 ①、两个指针分别指向 a、b末尾,两个指针由后边向前一起移动,同时所指下标的两个字符作二进制加法,用 StringBuffer进行记录,同时记录是否有进位。 ②、最终会有一个字符
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个整数数组,代表一个整数,其中第一个元素为最高位。求该数组代表的数字值加一后形成的新数组。 二、解答 1、思路: 从后向前遍历数组,且元素值 +1, ①、若 +1 后数值 < 10,则直接赋该元素值 +1,返回数组。 ②、 若 +1 后数值 = 10,代表需要进位
阅读全文
摘要:一、题目 1、审题 2、分析 判断所给字符串是否可以转化为小数类型。 二、解答 1、思路: 多层判断,转化为小数类型,可以很巧妙的采用多个 flag 进行记录是否符合浮点数定义: ①、"+" 或 “-” 符号只能出现在开头或则 e 的后一个字符 ②、e 前边得有数字、后边得有整形数字 ③、只能出现一
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个 mXn 方格,求从左上角到右下角经过的路线中数值和最小的那条路径的路径和。(只能向右、向下移动) 二、解答 1、思路: 方法一、 新建一个一维数组 dp 用于记录到达此格点的最小路径和。遍历所给二维数组 grid: ①、当遍历的是第一行时, dp[i] = g
阅读全文
摘要:一、题目 1、审题 2、分析 只能向下、向右移动的机器人,移动过程中数值为 1 代表有障碍,不能走这一格,求到达右下角共有几种走法。 二、解答 1、思路: 方法一、 新建一个数组 dp[],从第一行开始遍历二维数组的每一行,dp[i] 用于记录这一行的第 i 个空格共有几种走法。 遍历时,若二维数组
阅读全文
摘要:一、题目 1、审题 2、分析 求一个只能向下、向右的物体到达坐标 (m,. n)共有几种走法。 二、解答 1、思路: 方法一、 物体到达(m, n)的方法,可以化解为 (m-1, n) + (m, n-1),所以可以化为 如下:
阅读全文
摘要:一、题目 1、审题 2、分析 给出一个链表,一个参数 k,将链表的后边 k 个节点移动到左边来。(其中 k 可能大于链表长度) 二、解答 1、思路: ①、获得链表长度 total ,同时记录末尾节点 endNode。则 k = k % total 即为需要移动的后边部分的节点数,则 leftStep
阅读全文
摘要:一、题目 1、审题 2、分析 给两个数字 n 与 k,返回 1-n 所有数字组成的从小到大的全排序的第 k 个数。 二、解答 1、思路: 方法一、采用字典序列,返回全部序列后,输出第 k 个。(时间超出,但代码可行) 方法二、采用数学的思维方法: 以 n = 4, k = 9 为例: ①、总共有 n
阅读全文