文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 解题思路:   由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是…

2021年2月26日 0条评论 4点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明: 所有数字(包括 target)都是正整数。 解集不能包含重复的组合。 示例 1: 输入:candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3] ] 示例 2: 输入:candidates …

2021年2月22日 0条评论 2点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? 示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 示例 2: 输入:nums = [5,7,7,8,8,10], target = 6 输出:[-1,…

2021年2月20日 0条评论 3点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 解题思路:   所有节点中的(左子树深度+右子树的深度)的最大值就是树直径。 代码实现: public class test543二叉树的直径 { private int max; public …

2021年2月18日 0条评论 3点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 解题思路:   由于数字范围均在 [1,n]中,我们也可以用一个长度为 nn 的数组来代替哈…

2021年2月18日 0条评论 1点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 解题思路:   解法一:使用冒泡排序的方法将所有0移动到后面。 &emps; 解法二:遍历两次数组,第一次先将所有的非零数移动到前面,即先前靠拢;第二次遍历将数组末尾多余出来的位置赋值为零。 代码实现: /** …

2021年2月12日 0条评论 4点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 进阶: 你能用 O(1)(即,常量)内存解决此问题吗? 示例 1: …

2021年2月7日 0条评论 8点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 解题思路:   我们可以将这一颗树复制成两棵,在任意一个节点上,用第一棵树的左节点去比较第二棵树的右节点,右节点比较左节点,如果比较结果都相等,则时镜像二叉树。   需要注意的是,如果两个节点同时…

2021年2月4日 0条评论 2点热度 阅读全文

文章目录 问题描述: 解题思路: 代码实现: 问题描述: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。 解题思路:   使用动态规划求解,这题需要注意的是dp[i]表示的是以nums[i]结尾的所有子序列中的最大和;即dp[length-1]并不是想要的结果,结果应该是dp数组中的最大值,我们可以在建立dp数…

2021年2月3日 0条评论 1点热度 阅读全文

问题描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/merge-two-sorted-lists 解题思路:   使用递归的方法进行解题,不需要创建新的节点,只需要改变节点next的指向。 代码实现: class L…

2020年9月15日 0条评论 5点热度 阅读全文