全排列
全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 12输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2: 12输入:nums = [0,1]输出:[[0,1],[1,0]] https://leetcode.cn/problems/permutations/description/ 回溯123456789101112131415161718192021222324252627282930313233import java.util.ArrayList;import java.util.LinkedList;import java.util.List;class Solution { List<List<Integer>> result = new ArrayList<>(); // 结果集(只存不改) List<Integer> p...
有效的括号
有效的括号括号可以互相包含,但不能参差摆放 示例 1: **输入:**s = “()” **输出:**true 示例 2: **输入:**s = “()[]{}” **输出:**true 示例 3: **输入:**s = “(]” **输出:**false 栈 + 哈希映射遇到左括号 → 入栈遇到右括号 → 检查栈顶是否配对,配对则出栈,否则无效遍历完 → 栈必须为空 1234567891011121314151617181920212223import java.util.*;class Solution { public boolean isValid(String s) { Map<Character, Character> map = new HashMap<>(); map.put(')', '('); map.put(']', '['); map.put(...
岛屿数量
岛屿数量给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 1234567输入:grid = [ ['1','1','1','1','0'], ['1','1','0','1','0'], ['1','1','0','0','0'], ['0','0','0','0','0']]输出:1 示例 2: 1234567输入:grid = [ ['1'...
二叉树层序遍历,锯齿层序遍历
二叉树层序遍历给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 https://leetcode.cn/problems/binary-tree-level-order-traversal/description/ 利用队列先进先出的特性,一层一层遍历二叉树;每次先记下当前层节点总数,循环处理这一层所有节点,同时把它们的左右孩子入队,实现分层收集结果。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) {...
最长回文子串
最长回文子串给你一个字符串 s,找到 s 中最长的 回文 子串。 示例 1: 123输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。 示例 2: 12输入:s = "cbbd"输出:"bb" https://leetcode.cn/problems/longest-palindromic-substring/description/ 中心扩散法回文串是中心对称的,如果我们枚举每一个可能的“回文中心”,然后用双指针向左右两边同步扩散,直到左右字符不相等为止 回文串的长度可能是奇数(中心是 1 个字符,如 "aba" 中心是 'b'),也可能是偶数(中心是 2 个字符之间的缝隙,如 "abba" 中心是 "bb")。因此每个位置 i 需要分别以 (i, i) 和 (i, i + 1) 作为中心扩散两次。 12345678910111213141516171819202...
