C
TdOooonline
这个作者很懒,什么都没留下…
展开
-
2020-05-27 LeetCode 974 和可被 K 整除的子数组 C
题目:和可被 K 整除的子数组 给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。 示例: 输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满足其元素之和可被 K = 5 整除: [4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3] 提示: 1 <= A.length <= 30000 -10000 <=原创 2020-05-27 11:00:40 · 219 阅读 · 0 评论 -
2020-05-26 LeetCode 287 寻找重复数 C
题目: 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。 示例1: 输入: [1,3,4,2,2] 输出: 2 示例2: 输入: [3,1,3,4,2] 输出: 3 说明: 不能更改原数组(假设数组是只读的)。 只能使用额外的 O(1) 的空间。 时间复杂度小于O(n2)O(n^2)O(n2)。 数组中只有一个重复的数字,但它可能不止重复出现一次。 题目本身不难,解法太多了,难原创 2020-05-26 13:00:54 · 180 阅读 · 0 评论 -
LeetCode 28 实现strStr C
今天的每日一题是道设计题,不是很喜欢这种题目,复现太费事了。这里把思路理清了我就没写了,这里么埋个坑,以后有时间补上。看到O(1)就知道一定是用HashMap的,然后LRU的删除机制需要把数据动态更新,这样用双向链表最好,每次get或者put的时候都放到头节点上,如果超出容量,就删除双向链表的尾节点。 思路想出来没用多久,然后刚好把之前KMP的坑给埋了。 题目: 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 need原创 2020-05-25 11:04:27 · 155 阅读 · 0 评论 -
2020-05-24 LeetCode 4 寻找两个正序数组的中位数 C
题目: 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例2 nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5 今天又是道硬菜,这个题我很清楚的记得去年暑假夏令营的时候做过,来原创 2020-05-24 12:36:42 · 639 阅读 · 0 评论 -
2020-05-19 LeetCode 680 验证回文字符串2 c
题目: 给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例1: 输入: "aba" 输出: True 示例2: 输入: "abca" 输出: True 解释: 你可以删除c字符。 注意: 字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。 题目其实挺简单的,一开始去想符合题目要求的字符串有啥规律,走了些弯路,后面发现其实直接遍历就好了,遇到不满足回文条件的就检测是删除左边的还是删除右边的能符合条件,时间复杂度也就O(n)。 代码实现的时候出了点错误,最原创 2020-05-19 10:33:39 · 160 阅读 · 0 评论 -
2020-05-18 LeetCode 152 乘积最大子数组 c
题目:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 示例1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例2: 输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。 电脑终于修好了,niiiiiiice 这道题一开始是没有任何思路的,然后去把相关题目"最大子序和"、“除自身意外的数组的乘积”、”打家劫舍“、”三个数的最大乘积“原创 2020-05-18 11:52:21 · 144 阅读 · 0 评论 -
2020-05-14 LeetCode 136 只出现一次的数字
题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例1: 输入: [2,2,1] 输出: 1 示例2: 输入: [4,1,2,1,2] 输出: 4 这道题很久之前做过,当时的思路还记得,因为数都是成对出现的,只有一个元素只出现一次,线性时间复杂度就是只遍历一次或者几次,不使用额外空间也就是在原数组上做操作,要符合这样的条件基本就得找到一个运算规律能够删除重复元素原创 2020-05-14 10:28:13 · 126 阅读 · 0 评论 -
2020-05-12 LeetCode 115 最小栈
题目: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() —— 检索栈中的最小元素。 示例: 输入: ["MinStack","push","push","push","getMin","pop","top","getMin"] [[],[-2],[0],[-3],[],[],[],[]] 输出: [null,null,null,原创 2020-05-12 10:59:11 · 103 阅读 · 0 评论 -
2020-05-11 LeetCode 50 Pow(x,n)
题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例1: 输入: 2.00000, 10 输出: 1024.00000 示例2: 输入: 2.10000, 3 输出: 9.26100 说明: -100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。 受之前受之前69题官方题解一的启示,就直接写了个exp+log实现的数学方法,也就是 xn可以写成elnx x^n可以写成e^{lnx} xn可以写成elnx 需要原创 2020-05-11 15:12:56 · 134 阅读 · 0 评论