随笔分类 -  LeetCode

摘要:解题思路 如果数组中全是正数或者全是负数,最大乘积就是最大的三个数的乘积。如果数组中既有正数又有负数,最大乘积可能是三个最大正数乘积,也可能是两个最小负数和最大正数的乘积。遍历数组找到最大的三个数和最小的两个数即可。 代码 class Solution { public int maximumPro 阅读全文
posted @ 2021-03-17 17:46 MacZhen 阅读(120) 评论(0) 推荐(0)
摘要:木桶效应 一只木桶能盛多少水,并不取决于最长的那块木板,而是取决于最短的那块木板。 解题思路 初始化left指针为左边界,right指针为右边界。首先获取短板的高度,即两个指针对应高度的较小值minHeight,由此计算容纳的水量为minHeight * (right - left),然后更新最大值 阅读全文
posted @ 2021-03-09 17:33 MacZhen 阅读(142) 评论(0) 推荐(0)
摘要:解题思路 使用哈希表存储字符以及对应的索引,窗口右边界right不断右移将新元素加入窗口,如果遇到重复的元素,就将窗口左边界left更新为 max(left, 重复元素的下一个位置),取两者之中的最大值是防止左边界left向左移动。 错误的思想: 遇到重复的元素,将窗口左边界left更新为 重复元素 阅读全文
posted @ 2021-03-01 14:20 MacZhen 阅读(59) 评论(0) 推荐(0)
摘要:解题思路 因为两个链表都是逆序的,所以可以直接遍历这两个链表,逐位相加。设两个链表当前位置的数字为 x,y,进位值为 carry,和为 sum,则 sum = x + y + carry,新的进位值 carry = sum / 10,答案链表相应位置的数字为 sum % 10。如果两个链表的长度不同 阅读全文
posted @ 2021-02-19 17:17 MacZhen 阅读(75) 评论(0) 推荐(0)
摘要:解题思路 使用哈希表存储数组元素的值和索引,遍历数组,对于每一个nums[i],都要先从哈希表中查找是否存在target - nums[i],如果存在就直接返回结果,如果不存在就将当前元素的值和索引存入哈希表。 代码 class Solution { public int[] twoSum(int[ 阅读全文
posted @ 2021-02-09 23:44 MacZhen 阅读(70) 评论(0) 推荐(0)