LeetCode
LeetCode刷题。
黑马丸子
黑马丸子的成长日志
展开
-
LeetCode面试10.01 合并排序数组
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。初始化A 和 B 的元素数量分别为m 和 n。示例输入:A = [1,2,3,0,0,0], m = 3B = [2,5,6], n = 3输出:[1,2,2,3,5,6]说明 A.length == n+m链接:https://leetcode-cn.com/problems/sorted-merge-lcci/解题思路暴力算法...原创 2021-08-11 10:28:56 · 241 阅读 · 0 评论 -
LeetCode1290 二进制链表转整数
给你一个单链表的引用结点head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。链接:https://leetcode-cn.com/problems/convert-binary-number-in-a-linked-list-to-integer/解题思路直接遍历即可,左移相当于将原来的数乘以2。代码class Solution { public int getDecimalValue(ListN.原创 2021-08-09 18:30:44 · 73 阅读 · 0 评论 -
LeetCode203 移除链表元素
给你一个链表的头节点head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回新的头节点。链接:https://leetcode-cn.com/problems/remove-linked-list-elements/解题思路:这个题目感觉是考对链表的基本操作,没有什么思路。如果该节点的下一个指针等于val,那就将这个指针指向下下个指针(curr.next = curr.next.next)。 public static ListNode ...原创 2021-08-09 15:39:57 · 79 阅读 · 0 评论 -
LeetCode876 链表的中间结点
给定一个头结点为head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。链接:https://leetcode-cn.com/problems/middle-of-the-linked-list/解题思路普通解法:循环链表 统计出链表的长度sum。然后除2,然后再遍历一次找到链表对应节点返回就可以了。代码public static ListNode middleNode(ListNode head) { ListNode temp...原创 2021-08-09 15:28:24 · 185 阅读 · 0 评论 -
LeetCode83 删除排序链表中的重复元素
存在一个按升序排列的链表,给你这个链表的头节点head,请你删除所有重复的元素,使每个元素只出现一次。链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/解题思路由于给定的链表是排好序的,因此重复的元素在链表中出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。具体地,我们从指针cur 指向链表的头节点,随后开始对链表进行遍历。如果当前 cur 与 \cur.next 对...转载 2021-08-05 11:46:44 · 89 阅读 · 0 评论 -
LeetCode509 斐波那契数
斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1)= 1F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你 n ,请计算 F(n) 。链接: 解题思路:递归算法:这里暴力递归就可以了。这回终于不用打TODO标签了,通俗的说递归算法就是在自己写的方法中调用自己本身,自己调自己;递归算法的解题思路是将一个问题转化成一个 与原问题相似 但.原创 2021-07-31 22:12:18 · 91 阅读 · 0 评论 -
LeetCode53 最大子序和
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为 6 。链接:解题思路: 暴力算法 双重for循环 把所有连续子数组的和求出来进行比较,记录最大值maxSum。代码 public static int maxSubArray(int[] nums) { if (num.原创 2021-07-30 10:56:26 · 73 阅读 · 0 评论 -
LeetCode21 合并两个有序链表
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]遍历:考虑四种情况l2 比l1 长 l1比l2长l1的值比l2的值大 的情况l2的值比l1大的情况定义一个resultNode返回链表。还需要定义一个temp链表 指向头结点的尾部 进行尾插法代码 public static ListNode mergeTwoLists(L转载 2021-07-29 18:53:14 · 68 阅读 · 0 评论 -
LeetCode面试金典0106 字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。链接: 解题思路双指针算法定义两个指针 left right。如果right 指针处的字符等于 left指针 处的字符 cont++。相当于我(right)和你(left)一起跳格子。 我先走 我每次走一个就回头和你比较一下,如果我格子里面的字母和你一.原创 2021-07-28 22:33:29 · 126 阅读 · 0 评论 -
LeetCode160 相交链表
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。链接: https://leetcode-cn.com/problems/intersection-of-two-linked-lists/https://leetcode-cn.com/problems/intersection-of-two-linked-lists/.原创 2021-07-27 14:42:33 · 57 阅读 · 0 评论 -
LeetCode643 子数组最大平均数 I
给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例:输入:[1,12,-5,-6,50,3], k = 4输出:12.75解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75链接: https://leetcode-cn.com/problems/maximum-average-subarray-i/解题思路双指针算法 left 和 right 同时向右移动 , maxSum用来存储 left 和right 之间的最大值。.原创 2021-07-27 11:52:26 · 73 阅读 · 0 评论 -
LeetCode面试金典0102 判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 链接: 解题思路第一种利用Map统计,直接new两个HashMap key为出现的字符,value为出现的次数。如果s1Map.size() != s2Map.size(),那么就不是字符重排,然后循环s1Map 根据s1的key去获取s2Map对应key值的value。如果s1Value !=.原创 2021-07-26 18:32:36 · 147 阅读 · 0 评论 -
LeetCode面试金典0101 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false示例 2: 输入: s = "abc"输出: true链接: 解题思路第一种暴力算法 双重for循环,挨个比较。第二种使用hashMap(key为字符串中的字符,value为出现的次数) 如果有一个key 的value的值 >1 那么就是重复了。第三种直接利用HashSet的特性。第四种位运算,这个的话题目好像也没说字符一定时26个英文字母。就暂.原创 2021-07-26 18:20:33 · 74 阅读 · 0 评论 -
LeetCode69 x的平方根
实现int sqrt(int x)函数。计算并返回x的平方根,其中x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。题目链接:https://leetcode-cn.com/problems/sqrtx/解题思路暴力算法: 直接循环0 ~ x, 使得 i* i <= x (i+1)*(i+1)> x就可以了。二分查找法: 比暴力算法优化那么一丢丢,因为0~x是顺序递增,就可以少计算那么几次。牛顿迭代:先打个TODO标识吧,看了也不是很懂。...转载 2021-07-25 15:52:48 · 78 阅读 · 0 评论 -
LeetCode141 环形链表
给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。链接:https://leetcode-cn.com/problems/linked-list-cycle/解题原创 2021-07-24 10:41:05 · 175 阅读 · 0 评论 -
LeetCode167 两数之和II - 输入有序数组
给定一个已按照 升序排列的整数数组numbers ,请你从数组中找出两个数满足相加之和等于目标数target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。链接:https://leetcode-cn.com/problems/two...原创 2021-07-24 10:26:51 · 108 阅读 · 0 评论 -
LeetCode1 两数之和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。题目链接:https://leetcode-cn.com/problems/two-sum.原创 2021-07-23 14:56:40 · 56 阅读 · 0 评论 -
LeetCode628 三个数的最大乘积
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。题目链接:https://leetcode-cn.com/problems/maximum-product-of-three-numbers/解题思路分情况来讨论:1 如果全是正数 : 那么就是三个最大的数相乘2 如果全是负数 : 也是三个最大的数相乘3 如果有正有负的情况: 两个负数: 就是负负得正,那么需要比较 两个负数相乘再乘以最大的数 和 三个最大的正数相乘 比较大小。 一个负数:原创 2021-07-23 12:10:11 · 105 阅读 · 0 评论 -
LeetCode724 寻找数组的中心下标
给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。题目链接:https://leetcode-cn.com/problems/find-pivot-index/解题思路首先求出这个数.原创 2021-07-23 10:02:38 · 318 阅读 · 0 评论 -
LeetCode26 删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 题目链接https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/解题思路:暴力算法: 通过hashSet的特性来进行数组去重 然后返回hashSet的size(毕竟生活中不会限制你的实现方式,这里就..原创 2021-07-22 20:28:00 · 204 阅读 · 0 评论 -
LeetCode204 计数质数
统计所有小于非负整数 n 的质数的数量。 输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。题目链接:https://leetcode-cn.com/problems/count-primes/原创 2021-07-21 10:22:33 · 158 阅读 · 0 评论 -
LeetCode206 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?题目链接: https://leetcode-cn.com/problems/reverse-linked-list/#解题思路##迭代算法##递归算法#...原创 2021-07-20 23:41:44 · 239 阅读 · 1 评论