LeetCode
Eyre_Chan
小白一枚
展开
-
LeetCode--关于整数反转
LeetCode--关于整数反转题目描述思路代码难点题目描述给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路使用Java,有符号整数的最大值为Integer.MAX_VALUE,最小值为Integer...原创 2019-07-18 12:55:37 · 80 阅读 · 0 评论 -
LeetCode--关于实现strStr()
@TOC题目描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。易错点要讨论字符串haystack和字符串needle三种长度比较的情况,不同的情况处理方式不一样。代码public class StrStr { publi...原创 2019-07-21 23:21:29 · 59 阅读 · 0 评论 -
LeetCode--关于相同的树
LeetCode--关于相同的树题目描述思路代码题目描述给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。思路两节点如果为空节点,则返回true。如果一方为空节点,则返回false。当前两节点如果值相等,则继续递归判断左右节点是否相同。代码/** * Definition for a binary tree node...原创 2019-07-25 21:10:23 · 67 阅读 · 0 评论 -
LeetCode--关于对称二叉树
LeetCode--关于对称二叉树题目描述思路代码题目描述给定一个二叉树,检查它是否是镜像对称的。思路二叉树镜像对称需要满足两个条件:1、两个子树的根节点值相同2、子树的右子树跟另一个子树的左子树镜像对称代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * ...原创 2019-07-25 22:30:56 · 67 阅读 · 0 评论 -
LeetCode--关于搜索插入位置
LeetCode--关于搜索插入位置题目描述代码题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。代码public class SearchingInsert { public int searchInsert(int[] nums, int target) { &...原创 2019-07-22 10:42:34 · 56 阅读 · 0 评论 -
LeetCode--关于报数
LeetCode--关于报数题目描述思路代码题目描述报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二...原创 2019-07-22 12:53:45 · 122 阅读 · 0 评论 -
LeetCode--关于零钱兑换
LeetCode--关于零钱兑换题目描述代码题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。代码public class ChangingCoin { public int changeCoin(int[] coins, int amount) { ...原创 2019-08-03 20:34:13 · 222 阅读 · 0 评论 -
LeetCode--关于最大子序和
LeetCode--关于最大子序和题目描述思路代码题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。思路常规的题目,有三四种解法,这里使用算法复杂度为O(n)的方法。maxSum记录当前最大子序和,thisSum记录当前某子序和。maxSum初始化为第一个元素的值,thisSum初始化为0。遍历整个数组,thisSum加上当...原创 2019-07-22 16:47:54 · 93 阅读 · 0 评论 -
LeetCode--关于最后一个单词的长度
LeetCode--关于最后一个单词的长度题目描述思路代码题目描述给定一个仅包含大小写字母和空格 ’ ’ 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。思路将字符串转换为字符序列。从最后一个字符开始遍历,若为空格,则判断count是否为0,为0时继续循环,不为0时跳出循环,若不为空格,则count加一。...原创 2019-07-22 17:39:14 · 131 阅读 · 0 评论 -
LeetCode--关于二叉树的最大深度
LeetCode--关于二叉树的最大深度题目描述思路代码题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。思路写一个函数,传入当前节点和当前深度,判断当前节点是否为空节点,若不为空节点则count加1,若为空节点则返回count。返回左右子树深度较大者。代码/** * Definition for a binary tree node....原创 2019-07-26 21:13:03 · 87 阅读 · 0 评论 -
LeetCode--关于二叉树的层次遍历 II
LeetCode--关于二叉树的层次遍历 II题目描述思路代码题目描述给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)思路采用遍历的方式,新建一个函数,传入当前节点、深度、当前列表,若当前节点为空节点,则直接返回,若当前列表的长度小于深度+1(深度从0开始),则往当前列表中添加一个新的列表。将当前节点的值添加进对应深度的列表中。当...原创 2019-07-26 22:25:42 · 83 阅读 · 0 评论 -
LeetCode--关于将有序数组转换为二叉树
LeetCode--关于将有序数组转换为二叉树题目描述思路注意代码题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。思路跟中序遍历相似,先选出根节点,然后再确定左右子树,确定左右子树时也先确定子树的根节点。注意注意数组的越界问题代码/** * Definition fo...原创 2019-07-27 21:21:46 · 340 阅读 · 0 评论 -
LeetCode--关于平衡二叉树
LeetCode--关于平衡二叉树题目描述思路代码题目描述给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。思路采用递归的方法代码/** * Definition for a binary tree node. * public class TreeNode { * int va...原创 2019-07-27 22:25:04 · 65 阅读 · 0 评论 -
LeetCode--关于二叉树的最小深度
LeetCode--关于二叉树的最小深度题目描述思路注意代码题目描述给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。思路采用递归的方式。注意注意平凡例子的最小深度,根节点为空,以及根节点的左右子节点为空的情况。还要注意最小深度的定义。代码/** * Definition for a binary tree node. * public ...原创 2019-07-28 19:32:49 · 70 阅读 · 0 评论 -
LeetCode--关于移除元素
LeetCode--关于移除元素题目描述思路代码题目描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。思路使用“双指针法”。代码public class Removing...原创 2019-07-21 22:56:18 · 75 阅读 · 0 评论 -
LeetCode--关于相交链表
LeetCode--关于相交链表题目描述思路代码题目描述编写一个程序,找到两个单链表相交的起始节点。思路单链表相交,即意味着从第一个相交节点开始,后面的节点都是相同的,相交的长度也是相同的。但是两个链表可能长度不同,就需要消除长度差。代码/** * Definition for singly-linked list. * public class ListNode { * ...原创 2019-08-02 22:59:31 · 80 阅读 · 0 评论 -
LeetCode--关于回文数
LeetCode--关于回文数题目描述思路思路一思路二代码代码一代码二题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。思路思路一第一反应就是把整数转换为字符串,然后遍历整个字符串,判断正序和倒序是否一致。整数加空字符串就将整数转换成了字符串。思路二不将整数转换成字符串。对数字的后半部分进行反转。当数字的后半部分大于等于数字的前半部分时...原创 2019-07-18 13:51:48 · 67 阅读 · 0 评论 -
LeetCode--关于罗马数字转整数
LeetCode--关于罗马数字转整数题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。思路代码题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4...原创 2019-07-18 14:30:20 · 66 阅读 · 0 评论 -
LeetCode--关于两数之和
LeetCode--关于两数之和题目描述代码题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。代码public class TwoSum { public int[] twoSum(int[] nums, int ta...原创 2019-07-16 20:39:58 · 93 阅读 · 0 评论 -
LeetCode--关于加一
LeetCode--关于加一题目描述思路代码题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。思路没有数字为9时直接返回。最后一个数字为9时进位,前面数字如没有9则直接加一然后返回。如果数字全部为9,则新建一个长度增加的数组,第0位为1。代码p...原创 2019-07-23 22:01:19 · 79 阅读 · 0 评论 -
LeetCode--关于二进制求和
LeetCode--关于二进制求和题目描述思路注意事项代码题目描述给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。思路从字符串最右边开始,对每一位的和取余,添加进新的字符串中,同时记录进位情况,将进位加到前一位和中。遍历到字符串最左边后,若进位为1,则将其添加到新字符串中,然后将字符串反转。注意事项计算和的时候不能直接加上charAt获...原创 2019-07-23 23:05:39 · 90 阅读 · 0 评论 -
LeetCode--关于最长公共前缀
LeetCode--关于最长公共前缀题目描述思路注意事项代码题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。说明:所有输入只包含小写字母 a-z 。思路LCF(S1, S2, …, SN) = LCF(…(LCF(LCF(S1, S2), S3))…)注意事项记得判断字符串是否为空代码public class LongestCom...原创 2019-07-19 19:34:39 · 78 阅读 · 0 评论 -
LeetCode--关于有效的括号
LeetCode--关于有效的括号题目描述思路代码题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:1、左括号必须用相同类型的右括号闭合。2、左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。思路符号匹配问题,使用栈和映射。映射的键为左括号,值为对应的右括号。遍历字符串,如果对应的子字符串为左括号,...原创 2019-07-19 20:41:23 · 77 阅读 · 0 评论 -
LeetCode--关于合并两个有序链表
LeetCode--关于合并两个有序链表题目描述思路代码题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。思路如果两个链表当中有一个为空链表,则直接返回另一个链表。比较两个链表头节点的值,节点值较小的链表的头节点指向下一次合并的链表。使用递归。代码/** * Definition for singly-linked list. ...原创 2019-07-19 21:14:44 · 89 阅读 · 0 评论 -
LeetCode--关于删除排序数组中的重复项
LeetCode--关于合并两个有序链表题目描述思路代码题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。思路使用“双指针”,当nums[i] = nums[j]时,j加一,当nums[i]!=nums[j]时,i加一,且令nums[i]=nu...原创 2019-07-19 22:20:44 · 71 阅读 · 0 评论 -
LeetCode--关于爬楼梯
LeetCode--关于爬楼梯题目描述思路代码题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路爬n阶台阶的最后一步可能是爬1阶台阶,也可能是爬2阶台阶。所以爬n阶台阶的方法数量为爬n-1阶台阶的方法数量+爬n-2阶台阶的方法数量。可以使用递归的方法,但是递归效率较低,因为很...原创 2019-07-24 20:35:14 · 68 阅读 · 0 评论 -
LeetCode--关于删除排序链表中的重复元素
LeetCode--关于删除排序链表中的重复元素题目描述代码题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x)...原创 2019-07-24 21:06:27 · 130 阅读 · 0 评论 -
LeetCode--关于合并两个有序数组
LeetCode--关于合并两个有序数组题目描述思路代码题目描述给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。思路先合并两个数组,然后再利用sort算法进行排序。代码import java.util.Arrays;public class Merging { public void merge(int[]...原创 2019-07-24 21:32:41 · 135 阅读 · 0 评论 -
LeetCode--关于x的平方根
LeetCode--关于x的平方根题目描述思路思路一思路二代码代码一代码二题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。思路思路一直接使用Math.sqrt()函数,对结果取整思路二使用牛顿法,迭代公式为:A为x0的值代码代码一public class Sqr...原创 2019-07-25 09:42:43 · 115 阅读 · 0 评论 -
LeetCode--关于在每个树行中找最大值
LeetCode--关于在每个树行中找最大值题目描述代码题目描述如题代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val =...原创 2019-08-28 14:28:49 · 86 阅读 · 0 评论