public static String minNumber(int[] nums) { //to IntStream return Arrays.stream(nums) //to Stream<Integer> .boxed()...
方法二:有序哈希表 在哈希表的基础上,有序哈希表中的键值对是 按照插入顺序排序 的。基于此,可通过遍历有序哈希表,实现搜索首个 “数量为 1的字符”。 哈希表是 去重 的,即哈希表中键值对数量 ≤ 字符串 s 的长度。因此,相比于方法一,方...
方法1 class Solution { Integer res, k; public int kthLargest(TreeNode root, int k) { this.k = k; dfs(root); return res; }...
class Solution { public int maxDepth(TreeNode root) { if(root == null){ return 0; } if (root.left == null && root.right...
class Solution { public int[] singleNumbers(int[] nums) { if (nums == null) { return new int[0]; } Set<Integer> set =...
class Solution { public int[] twoSum(int[] nums, int target) { int head = 0; int tail = nums.length - 1; while (head <...
方法一:双指针 算法解析: 倒序遍历字符串 s ,记录单词左右索引边界 i , j ; 每确定一个单词的边界,则将其添加至单词列表 res ; 最终,将单词列表拼接为字符串,并返回即可。 复杂度分析: 时间复杂度 O(N) :...
方法二:一次遍历 思路与算法 在方法一中,我们对从根节点开始,通过遍历找出到达节点 pp 和 qq 的路径,一共需要两次遍历。我们也可以考虑将这两个节点放在一起遍历。 整体的遍历过程与方法一中的类似: 我们从根节点开始遍历; 如果当前节点的...
方法二:存储父节点 思路 我们可以用哈希表存储所有节点的父节点,然后我们就可以利用节点的父节点信息从 p 结点开始不断往上跳,并记录已经访问过的节点,再从 q 节点开始不断往上跳,如果碰到已经访问过的节点,那么这个节点就是我们要找的最近公共...
class Solution { public int fib(int n) { final int MOD = 1000000007; if (n == 0) { return 0; } if (n == 1) { return 1; }...