数据结构和算法实战
数据结构和算法LeetCode实战
傅晨明
毕业于杭州电子科技大学
展开
-
LeetCode-283. 移动零
文章目录题目方法1 双指针方法2方法3https://leetcode-cn.com/problems/move-zeroes/https://leetcode.com/problems/move-zeroes/题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]...原创 2019-11-07 15:25:23 · 96 阅读 · 0 评论 -
LeetCode-247. Strobogrammatic Number II
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).Find all strobogrammatic numbers that are of length = n.Example:Input: n = 2Output: [“11”...原创 2019-11-07 13:28:21 · 195 阅读 · 0 评论 -
LeetCode-24. 两两交换链表中的节点
https://leetcode-cn.com/problems/swap-nodes-in-pairs/submissions/给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.1 递归法先直接处理一下最基本...原创 2019-11-07 10:15:26 · 127 阅读 · 0 评论 -
LeetCode-3. 无重复字符的最长子串
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解...原创 2019-11-07 08:59:03 · 100 阅读 · 0 评论 -
LeetCode-206. 反转链表
文章目录迭代递归https://leetcode-cn.com/problems/reverse-linked-list/反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?迭代 public Li...原创 2019-11-06 21:50:59 · 149 阅读 · 0 评论 -
LeetCode-104. 二叉树的最大深度/111. 二叉树的最小深度
文章目录1 二叉树的最大深度1.1 DFS-递归1.2 DFS-循环(栈实现)1.3 BFS-循环(队列实现)2 二叉树的最小深度2.1 DFS递归2.2 DFS 循环2.3 BFS104.二叉树的最大深度111.二叉树的最小深度1 二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:...原创 2019-11-06 15:25:51 · 236 阅读 · 0 评论 -
BFS和DFS遍历二叉树的Java实现
参考:https://blog.csdn.net/Gene1994/article/details/85097507DFS可以使用递归和栈实现;BFS只能使用队列实现。1 DFS1.1递归//DFS递归实现public void DFSWithRecursion(TreeNode root) { if (root == null) return; if (...原创 2019-11-06 15:01:19 · 1683 阅读 · 0 评论 -
LeetCode-169. 求众数
https://leetcode-cn.com/problems/majority-element/给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2参考:https://leet...原创 2019-11-06 09:56:38 · 170 阅读 · 0 评论 -
LeetCode-22. 括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]递归法我们先不验证括号的有效性,使用递归模板将所有可能结果输出。 public List<String> generateParenthesi...原创 2019-11-05 14:52:21 · 120 阅读 · 0 评论 -
LeetCode-35. 搜索插入位置
https://leetcode-cn.com/problems/search-insert-position/参考:https://leetcode-cn.com/problems/search-insert-position/solution/te-bie-hao-yong-de-er-fen-cha-fa-fa-mo-ban-python-/https://leetcode-cn.com...原创 2019-11-04 15:58:56 · 179 阅读 · 0 评论 -
LeetCode-74. 搜索二维矩阵
https://leetcode-cn.com/problems/search-a-2d-matrix/submissions/写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。示例 1:输入:matrix = [[1, 3, 5, 7],[10, 11, 16, ...原创 2019-11-04 13:25:25 · 139 阅读 · 0 评论 -
LeetCode-102. 二叉树的层次遍历
文章目录DFS迭代二叉树的层次遍历https://leetcode-cn.com/problems/binary-tree-level-order-traversal/submissions/给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:DFShttp...原创 2019-10-28 13:52:37 · 174 阅读 · 0 评论 -
LeetCode-50. Pow(x, n)
文章目录方法 1:蛮力方法2:快速幂算法(递归)方法 3:快速幂算法(循环)https://leetcode-cn.com/problems/powx-n/实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.000...原创 2019-10-22 17:11:31 · 169 阅读 · 0 评论 -
LeetCode-590N叉树的后序遍历
https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal/给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个 3叉树 :返回其后序遍历: [5,6,3,2,4,1].public class LeetCode_590_555 { public static void main(String[] args) {...原创 2019-10-22 14:25:49 · 129 阅读 · 0 评论 -
LeetCode-94二叉树的中序遍历
文章目录方法一:递归方法二:基于栈的遍历https://leetcode-cn.com/problems/binary-tree-inorder-traversal/方法一:递归第一种解决方法是使用递归。这是经典的方法,直截了当。我们可以定义一个辅助函数来实现递归。public List<Integer> inorderTraversal(TreeNode root) { ...原创 2019-10-22 11:28:06 · 107 阅读 · 0 评论 -
LeetCode-49字母异位词分组
文章目录总代码方法一:排序数组分类方法二:按计数分类https://leetcode-cn.com/problems/group-anagrams/总代码//方法一:排序数组分类public List<List<String>> groupAnagrams(String[] strs) { if (strs.length == 0) { return ne...原创 2019-10-22 09:38:38 · 191 阅读 · 0 评论 -
LeetCode-1两数之和
文章目录方法一:暴力法https://leetcode-cn.com/problems/two-sum/给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为...原创 2019-10-22 08:25:29 · 129 阅读 · 0 评论 -
LeetCode-242有效的字母异位词
文章目录代码方法1:排序方法2:哈希映射方法3代码public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arr...原创 2019-10-21 22:29:08 · 173 阅读 · 2 评论 -
LeetCode-189旋转数组
链接:https://leetcode-cn.com/problems/rotate-array给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转...原创 2019-10-18 23:22:30 · 150 阅读 · 0 评论 -
Leetcode-26删除排序数组中的重复项
文章目录题目解法 双指针法https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/https://leetcode.com/problems/remove-duplicates-from-sorted-array/题目给定一个排序数组(注意:已经排序),你需要在原地删除重复出现的元素,使得每个元素只出现一次,...原创 2019-10-18 16:18:32 · 79 阅读 · 0 评论 -
LeetCode-11盛最多水的容器
文章目录1 题目2 暴力法3 双指针法while写法for写法https://leetcode-cn.com/problems/container-with-most-water/https://leetcode.com/problems/container-with-most-water/1 题目给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐...原创 2019-10-17 13:55:14 · 183 阅读 · 0 评论