摘要: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 注意:两结点之间的路径长度是以它们之 阅读全文
posted @ 2021-04-12 23:56 kpwong 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 进阶: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗? 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: 阅读全文
posted @ 2021-04-12 23:48 kpwong 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 给定一个二叉树,返回它的 后序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? import java.util.Stack; class Solution { public List<Integer> 阅读全文
posted @ 2021-04-12 23:39 kpwong 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / \ 9 20 / \ 15 7 class Solution 阅读全文
posted @ 2021-04-12 23:32 kpwong 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用一次。 说明: 所有数字(包括目标数)都是正整数。 解集不能包含重复的组合。 示例 1: 输入: cand 阅读全文
posted @ 2021-04-12 23:25 kpwong 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 堆排序 将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便得到一个有序序列。 public void sort(int[] arr) { int n = 阅读全文
posted @ 2021-04-12 23:12 kpwong 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以 阅读全文
posted @ 2021-04-12 23:06 kpwong 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串,逐个翻转字符串中的每个单词。 说明: 无空格字符构成一个 单词 。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 示例 1: 输入:"the sky is blue" 输出:"blue is 阅读全文
posted @ 2021-04-12 23:00 kpwong 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。 示例 1: 输入: 12258 输出: 5 解释: 12258有5种 阅读全文
posted @ 2021-04-12 22:51 kpwong 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 给定一个包含 n + 1 个整数的数组 nums ,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。 假设 nums 只有 一个重复的整数 ,找出 这个重复的数 。 示例 1: 输入:nums = [1,3,4,2,2] 输出:2 示例 2: 输入:nums = [3, 阅读全文
posted @ 2021-04-12 22:45 kpwong 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 输入:head = [4,2,1,3] 输出:[1,2,3,4] 输入:head = [-1,5,3,4,0] 输出:[-1,0,3 阅读全文
posted @ 2021-04-12 22:31 kpwong 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。解集不能包含重复的组合。 示例 1: 输入: 阅读全文
posted @ 2021-04-12 22:18 kpwong 阅读(57) 评论(0) 推荐(0) 编辑
摘要: 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边均被水包围。 示例 1: 输入:grid = [ ["1","1","1","1","0"], [" 阅读全文
posted @ 2021-04-12 22:08 kpwong 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] leetcode 第46题 解题思路 这也是一个递归问题。对于数组中的每个元素,它的全排列就等于 阅读全文
posted @ 2021-04-12 19:39 kpwong 阅读(64) 评论(0) 推荐(0) 编辑
摘要: 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 1: 输入:nums = [1,1,2] 输出: [[1,1,2], [1,2,1], [2,1,1]] 示例 2: 输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2 阅读全文
posted @ 2021-04-12 19:37 kpwong 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? public ListNode reverseList(ListNode head) { ListNode pre 阅读全文
posted @ 2021-04-12 17:19 kpwong 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。 如果是有效的 IPv4 地址,返回 "IPv4" ;如果是有效的 IPv6 地址,返回 "IPv6" ;如果不是上述类型的 IP 地址,返回 "Neither" 。IPv4 地址由十进制数和点来表示,每个地址包含 4 个十进 阅读全文
posted @ 2021-04-12 17:11 kpwong 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 示例 2: 输入:nums = [1] 输出 阅读全文
posted @ 2021-04-12 17:00 kpwong 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小 阅读全文
posted @ 2021-04-12 16:41 kpwong 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。 请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列 阅读全文
posted @ 2021-04-12 16:30 kpwong 阅读(47) 评论(0) 推荐(0) 编辑