leetcode每日一题
leetcode每日一题
DJTTT
小白
展开
-
200. 岛屿数量
200. 岛屿数量 给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。 解题思路: 通过对网格进行深度优先搜索,对一个网格从四个方向进行深度优先搜索,等满足几个特定条件是退出。计算进行的深度优先搜索次数即为岛屿的个数。 class Solution { public int numIslands(char[][] grid) {原创 2021-03-16 21:17:16 · 159 阅读 · 0 评论 -
59. 螺旋矩阵 II
59. 螺旋矩阵 II 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 class Solution { public int[][] generateMatrix(int n) { int[][] ans = new int[n][n]; int left = 0; int right = n - 1; int top = 0; i原创 2021-03-16 19:34:52 · 111 阅读 · 0 评论 -
54. 螺旋矩阵
54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素 class Solution { public List<Integer> spiralOrder(int[][] matrix) { int m = matrix.length; int n = matrix[0].length; List<Integer> res = new ArrayList<Int原创 2021-03-15 20:44:42 · 149 阅读 · 0 评论 -
103. 二叉树的锯齿形层序遍历
103. 二叉树的锯齿形层序遍历 给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>&原创 2021-03-09 21:01:44 · 111 阅读 · 0 评论 -
173. 二叉搜索树迭代器
173. 二叉搜索树迭代器 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。 暴力法求解 class BSTIterator { List<Integer> res; public BSTIterator(TreeNode root) { res = new ArrayList<Integer>(); preorder(res,root); }原创 2021-03-08 21:48:55 · 89 阅读 · 0 评论 -
46. 全排列
46. 全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 回溯法(java) class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>&g原创 2021-03-07 18:53:10 · 133 阅读 · 0 评论 -
300. 最长递增子序列
300. 最长递增子序列 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例 2: 输入:nums = [0,1,0,3,2,3] 输出:4 示例 3: 输入:nums = [原创 2021-03-07 13:31:21 · 118 阅读 · 0 评论 -
232. 用栈实现队列
232. 用栈实现队列 题目描述: 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空,返回 true ;否则,返回 false 示例: 输入: ["MyQueue", "push", "push", "peek", "po原创 2021-03-05 19:31:55 · 110 阅读 · 0 评论 -
354. 俄罗斯套娃信封问题
300. 最长递增子序列 **题目描述:**给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 1: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。 示例 2: 输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解原创 2021-03-04 21:26:51 · 140 阅读 · 1 评论 -
338. 比特位计数
338. 比特位计数 题目描述: 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 法一: class Solution { public int[] countBits(int num) { int cnt [] = new int[num+1]; for( int i =原创 2021-03-03 20:31:19 · 125 阅读 · 1 评论 -
7. 整数反转
7. 整数反转 **题目描述: **给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输入:x = 123 输出:321 示例 2: 输入:x = -123 输出:-321 示例 3: 输入:x = 120 输出:21 class Solution { public int reverse(int x) {原创 2021-03-02 20:22:43 · 89 阅读 · 0 评论 -
1748. 唯一元素的和
1748. 唯一元素的和 题目描述: 给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。请你返回 nums 中唯一元素的和 。 示例 1: 输入:nums = [1,2,3,2] 输出:4 解释:唯一元素为 [1,3] ,和为 4 。 示例 2: 输入:nums = [1,1,1,1,1] 输出:0 解释:没有唯一元素,和为 0 。 提示: 1 <= nums.length <= 100 1 <= nums[i] <= 100 class Solution原创 2021-03-02 20:18:57 · 165 阅读 · 0 评论 -
304. 二维区域和检索 - 矩阵不可变
304. 二维区域和检索 - 矩阵不可变(java求解) 题目描述: 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。 示例: 给定 matrix = [ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5] ] sumRegion(2, 1, 4, 3) -> 8 sumRegion(1, 1, 2,原创 2021-03-02 17:48:30 · 113 阅读 · 0 评论