- 博客(29)
- 收藏
- 关注
原创 LeetCode239. 滑动窗口最大值(滑动窗口)
给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。 返回滑动窗口最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 --------------...
2019-04-14 19:46:57
1846
原创 LeetCode76. 最小覆盖子串(滑动窗口)
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 ...
2019-04-14 14:36:47
655
原创 LeetCode32. 最长有效括号(动态规划、滑动窗口)
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2: 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 有两种解答方式。 第一种,滑动窗口。 对字符串进行括号闭合验证,记录最值。 然后再进行一次对称变换,进行验证,两次取最值,就是字符串的最长...
2019-04-14 14:29:26
1136
原创 LeetCode37. 解数独
编写一个程序,通过已填充的空格来解决数独问题。 一个数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3宫内只能出现一次。 空白格用 ‘.’ 表示。 一个数独。 答案被标成红色。 Note: 给定的数独序列只包含数字 1-9 和字符 ‘.’ 。 你可以假设给定的数独只有唯一解。 给定数独永远是...
2019-03-31 13:50:25
390
原创 LeetCode75. 颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。 注意: 不能使用代码库中的排序函数来解决这道题。 示例: 输入: [2,0,2,1,1,0] 输出: [0,0,1,1,2,2] 进阶: 一个直观的解决方案是使用计数排序的两趟扫描算法。 首先,迭...
2019-03-31 10:28:28
278
原创 LeetCode74. 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。 示例 1: 输入: matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ] target = 3 输出: true 二分查找,ac,100%...
2019-03-30 11:35:36
267
原创 LeetCode73. 矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。 关于原地算法,名字倒是挺响,https://baike.baidu.com/item/原地算法 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 进阶: 一个直接的...
2019-03-29 15:19:56
359
原创 LeetCode72. 编辑距离
给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入: word1 = "horse", word2 = "ros" 输出: 3 解释: horse -> rorse (将 'h' 替换为 'r') rorse -> rose (删...
2019-03-29 13:54:17
340
原创 LeetCode71. 简化路径
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜...
2019-03-29 13:48:44
253
原创 LeetCode69. x 的平方根
实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2 此题的思想是牛顿迭代法,当然二分也可以 最神奇的还是平方根倒数速算法,参见 https://www.zhihu.com/question/22018894/answer/20039559 /** * 6...
2019-03-28 14:56:52
278
原创 LeetCode68. 文本左右对齐
给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。 你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ’ ’ 填充,使得每行恰好有 maxWidth 个字符。 要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。 文本的...
2019-03-28 08:41:23
256
原创 LeetCode63. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径? 网格中的障碍物和空位置分别用 1 和 0 来表示。 说明:m 和 n 的值均不超过 100。 网格中的障碍物和空位置分别用 1 和 0 来...
2019-03-10 20:53:22
318
原创 LeetCode62. 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 例如,上图是一个7 x 3 的网格。有多少可能的路径? 说明:m 和 n 的值均不超过 100。 示例 1: 输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共...
2019-03-06 21:44:56
184
原创 LeetCode61. 旋转链表
61. 旋转链表 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1-&
2019-03-06 21:10:23
168
原创 LeetCode60. 第k个排列
给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定 n 和 k,返回第 k 个排列。 说明: 给定 n 的范围是 [1,
2019-02-23 20:01:26
252
原创 LeetCode59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] class Solution { public int[][] generateMatrix(int n) { int[][] result = new int[n][n];...
2019-02-23 19:53:09
190
原创 LeetCode58. 最后一个单词的长度
class Solution { public int lengthOfLastWord(String s) { if (s == null) return 0; int i = s.length() - 1; while (i > -1 && s.charAt(i) == ' ') --i; int length = 0; while (i...
2019-01-30 16:15:17
149
原创 LeetCode57. 插入区间
和上一题好像没什么区别,所以直接略微修改,是我想的太肤浅了? class Solution { public List<Interval> insert(List<Interval> intervals, Interval newInterval) { if (intervals == null) return new LinkedList<>()...
2019-01-30 16:01:44
582
原创 LeetCode56. 合并区间
/** * 排序合并 * * @author wuwang * */ class Solution { public List<Interval> merge(List<Interval> intervals) { if (intervals == null || intervals.isEmpty()) return new LinkedList...
2019-01-30 15:47:41
199
原创 LeetCode55. 跳跃游戏
class Solution { public boolean canJump(int[] nums) { if (nums == null || nums.length == 0) return false; int maxstep = 0; for (int i = 0; i <= maxst...
2019-01-30 11:04:23
164
原创 LeetCode54.螺旋矩阵
使用递归,但效率很低 class Solution { public List<Integer> spiralOrder(int[][] matrix) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return new ArrayList<>(); ArrayL...
2019-01-29 16:39:57
176
原创 全排列
/** * 46.全排列<br/> * https://leetcode-cn.com/problems/permutations/<br> * @author wuwang * */ public class p46 { List<List<Integer>> result = new LinkedList<>(); i...
2019-01-28 21:16:37
120
原创 旋转图像
public class p48 { public void swap(int[][] matrix, int x1, int x2, int y1, int y2) { int temp = matrix[x1][y1]; matrix[x1][y1] = matrix[x2][y2]; matrix[x2][y2] = temp; } public void swapLi...
2019-01-28 21:14:20
121
原创 字母异位词分组
/** * 49. 字母异位词分组<br> * https://leetcode-cn.com/problems/group-anagrams/<br> * 对数组中每个string排序去重然后分类<br> */ public class p49 { public List<List<String>> groupAnagra...
2019-01-28 20:59:50
157
原创 Pow(x, n)
/** * 50. Pow(x, n)<br> * 快速幂<br> * https://leetcode-cn.com/problems/powx-n/<br> * * @author wuwang * */ public class p50 { public double myPow(double x, int n) { if (n =...
2019-01-28 20:57:25
152
原创 N皇后
/** * N皇后<br> * https://leetcode-cn.com/problems/n-queens/ <br> * 8.53% 递归暴力解..<br> * 我的方法太水了<br> * * @author wuwang * */ public class p51 { public int totalNQueens...
2019-01-28 20:51:36
188
原创 油田(Oil Deposits, UVa 572)
输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在的格子相邻(横、竖或者对角线方向),就说它们属于同一个八连块。例如,图6-9中有两个八连块。 #include <iostream> #include <cstring> using namespace std; const int boundary = 105;...
2018-03-19 21:20:58
348
原创 下落的树叶(The Falling Leaves, UVa 699)
#include <iostream> #include <cstdio> //6-10 下落的树叶(The Falling Leaves, UVa 699) /* 给一棵二叉树,每个结点都有一个水平位置: 左子结点在它左边1个单位,右子结点在右边1个单位。 从左向右输出每个水平位置的所有结点的权值之和。 如图6-7所示,从左到右的3个位置的权和分别为7,11,3。 按照递...
2018-03-18 21:34:26
355
原创 6-11 四分树(Quadtrees, UVa 297)
如图6-8所示,可以用四分树来表示一个黑白图像,方法是用根结点表示整幅图像,然 后把行列各分成两等分,按照图中的方式编号,从左到右对应4个子结点。如果某子结点对 应的区域全黑或者全白,则直接用一个黑结点或者白结点表示;如果既有黑又有白,则用一 个灰结点表示,并且为这个区域递归建树。给出两棵四分树的先序遍历,求二者合并之后(黑色部分合并)黑色像素的个数。p表 示中间结点,f表示黑色(full),e表...
2018-03-18 21:27:52
474
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅