![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode刷题
inferno devil
这个作者很懒,什么都没留下…
展开
-
leetcode455. 分发饼干(java)
题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口值为正。...原创 2019-08-07 16:04:15 · 253 阅读 · 0 评论 -
LeetCode450. 删除二叉搜索树中的节点(Java)
题目:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。示例:代码:解法一/** * Definition for a ...原创 2019-04-24 09:24:57 · 771 阅读 · 0 评论 -
LeetCode701. 二叉搜索树中的插入操作(java)
题目:给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。示例:代码:解法一/** * Definition for a binary tree node. * public class Tre...原创 2019-04-23 10:40:24 · 378 阅读 · 0 评论 -
LeetCode700. 二叉搜索树中的搜索(Java)
题目:给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。示例:代码:解法一/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left...原创 2019-04-23 09:36:17 · 152 阅读 · 0 评论 -
LeetCode173. 二叉搜索树迭代器(Java)
题目:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。示例:代码:解法一/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre...原创 2019-04-23 09:07:04 · 277 阅读 · 0 评论 -
LeetCode98. 验证二叉搜索树(java)
题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例:代码:解法一/** * Definition for a binary tree node. * public class TreeNode { * in...原创 2019-04-22 17:53:00 · 624 阅读 · 1 评论 -
LeetCode485. 最大连续1的个数(java)
代码:解法一class Solution { public int findMaxConsecutiveOnes(int[] nums) { if(nums==null||nums.length==0){ //数组不存在 或者数组为空 return -1; } int maxCount=0; f...原创 2019-04-12 16:47:39 · 141 阅读 · 0 评论 -
LeetCode905. 按奇偶排序数组(java)
题目:给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。你可以返回满足此条件的任何数组作为答案。示例:代码:解法一//使用夹逼思想class Solution { public int[] sortArrayByParity(int[] A) { if(A==null||A.length==0){ ...原创 2019-04-12 16:07:19 · 86 阅读 · 0 评论 -
LeetCode240. 搜索二维矩阵 II(java)
题目:编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:代码:解法一class Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix...原创 2019-04-12 15:09:13 · 139 阅读 · 0 评论 -
LeetCode136. 只出现一次的数字(Java)
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例:代码:解法一class Solution { public int singleNumber(int[] nums) { Arrays.sort(nums); ...原创 2019-04-11 17:40:28 · 215 阅读 · 0 评论 -
LeetCode724. 寻找数组的中心索引(java)
题目:给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例:代码:解法一class Solution { public int pivotInd...原创 2019-04-11 10:54:00 · 345 阅读 · 0 评论 -
LeetCode2. 两数相加(java)
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:代码:解法一/** * Definition for singly-linked list. * publ...原创 2019-04-11 09:17:06 · 97 阅读 · 0 评论 -
LeetCode350. 两个数组的交集 II(java)
题目:给定两个数组,编写一个函数来计算它们的交集。示例:代码:解法一//利用映射实现class Solution { public int[] intersect(int[] nums1, int[] nums2) { TreeMap<Integer,Integer> map=new TreeMap<Integer,Integer>...原创 2019-04-24 16:02:47 · 412 阅读 · 0 评论 -
LeetCode328. 奇偶链表(java)
题目:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例:代码:解法一/** * Definition for singly-linked list. * public...原创 2019-04-25 10:29:06 · 195 阅读 · 0 评论 -
leetcode 1137. 第 N 个泰波那契数 (java)
题目:泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例:代码:解法一class Solution { public int tribonacci(int n) { int[] answ...原创 2019-08-02 11:57:34 · 176 阅读 · 0 评论 -
leetcode1046. 最后一块石头的重量(Java)
题目:代码:解法一class Solution { public int lastStoneWeight(int[] stones) { int weight=0; int len=stones.length; for(int i=0;i<len-1;i++){ Arrays.sort(stones)...原创 2019-07-28 14:44:47 · 419 阅读 · 1 评论 -
LeetCode121. 买卖股票的最佳时机(Java)
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例:代码:解法一//暴力破解 两层for循环class Solution { public int maxProfit(int[] prices) { if...原创 2019-08-05 12:01:33 · 242 阅读 · 0 评论 -
LeetCode258. 各位相加(Java)
题目:给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:代码:解法一//递归的思想class Solution { public int addDigits(int num) { if(num/10==0) return num; int temp=0; w...原创 2019-08-05 09:35:46 · 168 阅读 · 0 评论 -
leetcode232. 用栈实现队列(java)
题目:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:代码:解法一//思路:两个栈进行pop和peek操作class MyQueue { Stack<Integer> s1; Stack<In...原创 2019-07-27 13:16:07 · 403 阅读 · 0 评论 -
leetcode844. 比较含退格的字符串(java)
题目:给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。示例:代码:解法一class Solution { public boolean backspaceCompare(String S, String T) { return result(S).equals(result(T)); //...原创 2019-07-26 20:04:49 · 305 阅读 · 0 评论 -
LeetCode67. 二进制求和(Java)
题目:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例:代码:解法一class Solution { public String addBinary(String a, String b) { int al=a.length()-1; int bl=b.length()-1; ...原创 2019-08-04 11:56:50 · 149 阅读 · 0 评论 -
LeetCode1122. 数组的相对排序(Java)
题目:给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:代码:解法一/*思路:利用类似计数排序的思路 先计数排序(计数排序清查看 cs...原创 2019-07-31 10:25:57 · 764 阅读 · 0 评论 -
leetcode1021. 删除最外层的括号(java)
题目:示例:代码:解法一class Solution { public String removeOuterParentheses(String S) { StringBuilder sb = new StringBuilder(); int count = 0; //标记“(”未配对的个数 for(char c : S.t...原创 2019-07-26 09:03:50 · 332 阅读 · 0 评论 -
leetcode1047. 删除字符串中的所有相邻重复项(java)
题目:给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。提示:1 <= S.length <= 20000S 仅由小写英文字母组成。示例:代码:解法一class Solution { public Stri...原创 2019-07-25 19:19:57 · 990 阅读 · 0 评论 -
LeetCode234. 回文链表(java)
题目:请判断一个链表是否为回文链表。示例:代码:解法一/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solutio...原创 2019-04-25 18:20:56 · 404 阅读 · 0 评论 -
LeetCode747. 至少是其他数字两倍的最大数(java)
题目:在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。示例:代码:解法一class Solution { public int dominantIndex(int[] nums) { if(nums==null||nums.length==0){ /...原创 2019-04-10 21:56:53 · 212 阅读 · 0 评论 -
LeetCode203. 移除链表元素(java)
题目:删除链表中等于给定值 val 的所有节点。示例:代码:解法一/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class S...原创 2019-04-10 20:19:22 · 185 阅读 · 0 评论 -
LeetCode33. 搜索旋转排序数组(Java)
题目:假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例:代码:解法一class Solution { ...原创 2019-03-20 13:01:36 · 159 阅读 · 0 评论 -
LeetCode27. 移除元素(Java)
题目:给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例:代码:解法一class Solution { public int removeElement(in...原创 2019-03-20 12:54:11 · 168 阅读 · 0 评论 -
LeetCode26. 删除排序数组中的重复项(Java)
题目:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例:代码:解法一class Solution { public int removeDuplicates(int[] nums) { if (nums == null||num...原创 2019-03-19 11:11:11 · 313 阅读 · 0 评论 -
LeetCode8. 字符串转换整数 (atoi)(java)
题目;请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符...原创 2019-03-19 10:46:16 · 266 阅读 · 0 评论 -
LeetCode5. 最长回文子串(Java)
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例:代码:解法一class Solution { public String longestPalindrome(String s) { //截取出全部子串 int len = s.length(); for (int i = len; i > 0; i--) { ...原创 2019-03-19 10:27:53 · 254 阅读 · 0 评论 -
LeetCode4. 寻找两个有序数组的中位数(java)
题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例:代码:解法一class Solution { public double findMedianSortedArrays(int[] nums1, int...原创 2019-03-19 10:12:12 · 448 阅读 · 0 评论 -
LeetCode9. 回文数(Java)
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例:代码:解法一class Solution { public boolean isPalindrome(int x) { //将数字转化为字符串进行操作 String s=String.valueOf(x); //利用夹逼思想对字符串的每个元素进行判断 int head...原创 2019-03-19 09:34:27 · 476 阅读 · 0 评论 -
LeetCode3. 无重复字符的最长子串(Java)
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例:代码:解法class Solution { public int lengthOfLongestSubstring(String s) { int n = s.length(), ans = 0; int[] index = new int[128]; // curr...原创 2019-03-18 15:05:40 · 394 阅读 · 0 评论 -
LeetCode1. 两数之和(Java)
题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:代码:解法一class Solution { public int[] twoSum(int[] nums, int target) { //数组为空 if (...原创 2019-03-18 14:54:59 · 105 阅读 · 0 评论 -
LeetCode41. 缺失的第一个正数(java)
题目:给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例:说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。代码:(Java)解法一class Solution { public int firstMissingPositive(int[] nums) { //数组为空 if (nums == null) { return 0; ...原创 2019-03-18 14:47:00 · 411 阅读 · 0 评论 -
LeetCode349. 两个数组的交集(java)
题目:给定两个数组,编写一个函数来计算它们的交集。示例:代码:解法一//利用集合实现class Solution { public int[] intersection(int[] nums1, int[] nums2) { TreeSet<Integer> set=new TreeSet<Integer>(); f...原创 2019-04-24 11:17:49 · 762 阅读 · 0 评论 -
LeetCode34. 在排序数组中查找元素的第一个和最后一个位置(Java)
题目:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例:代码:解法一class Solution { public int[] searchRange(int[] nums, int target) {...原创 2019-03-20 13:12:37 · 530 阅读 · 0 评论 -
LeetCode35. 搜索插入位置(java)
题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例:代码:解法一class Solution { public int searchInsert(int[] nums, int target) { int index=-1; if(n...原创 2019-03-20 13:15:51 · 110 阅读 · 0 评论