
LeetCode
LeetCode题目Java版记录思路。
wxianyou
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 892.三锥形体的表面积
892.三锥形体的表面积思路:考虑到每一个立方体能够贡献的表面积和六个面是否有相邻的立方体有关;第一个思路是遍历每一个立方体,再判断该立方体的四周及上下面是否存在相邻的立方体,每个面不存在就表面积加1这样的思路实现后的时间复杂度就上去了,相当于时间复杂度是kn^2(k为总的立方体个数,n为格子数),因此耗时13ms;参考了优秀的题解,有了优化方向;考虑不遍历每个格子的所有立方体;...原创 2020-04-03 21:23:31 · 284 阅读 · 0 评论 -
LeetCode 876.链表的中间结点
876.链表的中间结点思路:本题是常见的思路,由于单链表只能从前往后遍历,不能走回头路,所以考虑双指针。本题的目标是找链表的中间节点,那么考虑两个指针,第一个每次走一步,第二个每次走两步;当第二个指针为空或者第二个指针的下一步为空,那么第一个指针此时对应的位置就是中间节点位置。链表问题常见的方法就是多指针方式。/** * Definition for singly-linked l...原创 2020-04-03 21:21:30 · 321 阅读 · 0 评论 -
LeetCode 836.矩形重叠
836.矩形重叠思路:逆向找不重叠的例子,如图,假如5的位置是第一个长方形,那么:第二个长方形的右上角只要在1、4、7、8、9区域,就不会重叠。第二个长方形的左下角只要在1、2、3、6、9区域,就不会重叠。除此之外的其他情况都是重叠的。class Solution { public boolean isRectangleOverlap(int[] rec1, int[...原创 2020-04-03 21:17:48 · 227 阅读 · 0 评论 -
LeetCode 543.二叉树的直径
543.二叉树的直径思路:综合前面几个二叉树的问题求解方法,最先考虑的就是递归思想。因为考虑其解决的问题是否可以转换成子问题。该题目需要求的是二叉树的直径,也就是相距最远的两个节点的距离。分析得知道,任意一条最远路径都可视为由某个节点为起点,从其左节点和右节点向下遍历的同样的路径拼接而成。即直径为:左子树的最长路径、右子树的最长路径、经过该节点的最长路径,三者中最大的一个。经过该节...原创 2020-04-03 21:15:02 · 135 阅读 · 0 评论 -
LeetCode 409.最长回文串
409.最长回文串思路:凡事遇到涉及到大小写字母、以及要计数,都可以考虑26或者52长度的数组根据题意理解:只会出现52个字母回文的意思就是左右对称,则回文字符中最多只有一个字符为奇数根据给定的字母组成回文,若某个字母是偶数个,那么全部可用若某个字母是奇数个,那么只用奇数减一个根据以上分析,则考虑:先统计每个字母的个数只要存在的字母,使用其个数为n/2*2个(奇数就是相...原创 2020-04-03 21:12:27 · 150 阅读 · 0 评论 -
LeetCode 289.生命游戏
289.生命游戏思路:从题目的设计来看,要求是根据当前的数组中每个值周边的值来更新当前值,但是前提是都是考虑的周边的原始值,而非更新后的值。最开始想到的是先拷贝一个数组,但是题目中建议不使用额外空间解决,即在原数组上操作。首先考虑的解决办法是位运算,因为原始值是int类型,有32位长度,而题中值只为0/1,那么仅仅占用了一个bit。位运算原来的第一位不改变,用第二位保存更新后的...原创 2020-04-03 21:10:31 · 200 阅读 · 0 评论 -
LeetCode 169.多数元素
169.多数元素思路一:适用哈希映射(HashMap)来实现,key表示数组的元素,value表示各元素出现的次数,然后找到出现次数最大的一个或者,找到第一次超过n/2次的元素。class Solution { public int majorityElement(int[] nums) { int mid = nums.length / 2; Ma...原创 2020-04-03 21:08:09 · 174 阅读 · 0 评论 -
LeetCode 136.只出现一次的数字
136.只出现一次的数字思路首先想到了的是遍历依次去判断,或者使用set集合来处理,但是题目中提示能够不使用额外空间吗?想了一会儿没想到有什么办法,看了下别人分享的解析,用到了位操作里的异或操作:如果我们对 0 和二进制位做 XOR 运算,得到的仍然是这个二进制位a ^ 0 = a如果我们对相同的二进制位做 XOR 运算,返回的结果是 0a ^ a = 0XOR...原创 2020-04-03 21:06:10 · 122 阅读 · 0 评论 -
LeetCode 104. 二叉树的最大深度
104. 二叉树的最大深度思路:递归的方法:需要得到二叉树的最大深度,其中每个节点的深度等于子节点的深度加上1。因此在只需要从根节点开始找子节点中最大深度,依次相加。时间复杂度:O(n)空间复杂度:最差O(n),最优O(log(n)),最差是全为左/右子树,最优是完全平衡二叉树/** * Definition for a binary tree node. * public c...原创 2020-04-03 21:04:05 · 128 阅读 · 0 评论 -
LeetCode 101.对称二叉树
101.对称二叉树题目:思路:递归思路:镜像对称,就是从根节点依次往下比较左子树的左子树值是不是和右子树的右子树的值相等,并且左子树的右子树值是不是和右子树的左子树的值相等全部相等即可/** * Definition for a binary tree node. * public class TreeNode { * int val; * Tre...原创 2020-04-03 21:02:06 · 117 阅读 · 0 评论 -
LeetCode 88.合并两个有序数组
88.合并两个有序数组题目给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m ...原创 2020-04-03 20:59:24 · 99 阅读 · 0 评论 -
LeetCode 67.二进制求和
67.二进制求和题目:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”思路:思路一:考虑到从末尾开始相加计算,有需要进位的到下一位再加1的思路。将字符串转为char数组,...原创 2020-04-03 20:58:00 · 142 阅读 · 0 评论 -
LeetCode 66.加一
66.加一题目:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 432...原创 2020-04-03 20:55:45 · 144 阅读 · 0 评论 -
LeetCode 8.字符串转换整数 (atoi)
8.字符串转换整数 (atoi)思路:本地需要注意的是识别正负号和数字,以及越界的问题,因为int型只有31位的长度。开始考虑使用正则将数字部分提取出来,再使用Integer.parseInt()对数字字符串部分进行转换,若报异常,则返回int型的最大或者最小值,但是此方法还是不好判断越界的临界值的正负号情况。则思考怎么判断越界的问题?常用的处理字符串转数字是否越界的方式就是遍历数字字...原创 2020-04-03 20:45:35 · 122 阅读 · 0 评论