LeetCode日记
小游先生
改不完的小BUG
展开
-
LeetCode日记_016_实现strStr
题目信息: 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 本人思路: 遍历haystack字符串,从当前索引到‘当前索引 + needle字符串长度’的子串是否和needle相同。 class Solution(object): def strStr(self, haystack, needle): if not needle:原创 2021-04-20 20:07:26 · 129 阅读 · 0 评论 -
LeetCode日记_015_删除有序数组中的重复项
题目信息: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 本人思路: 循环从第1个元素遍历到最后一个元素,判断与前一个元素是否相同,相同则删除当前元素。 class Solution(object): def removeDuplicates(self, nums): i = 1 while i <原创 2021-04-19 19:16:06 · 71 阅读 · 0 评论 -
LeetCode日记_014_搜索旋转排序数组
题目信息: 已知存在一个按非降序排列的整数数组 nums ,数组中的值不必互不相同。 在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转 ,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。 例如, [0,1,2,4,4,4,5,6,6,7] 在下标 5 处经旋转后可能变为 [4,5,6,6,7,0,1,2,4,4原创 2021-04-07 19:41:14 · 121 阅读 · 3 评论 -
LeetCode日记_013_合并两个有序数组
题目信息: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。 例: 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6] 本人思路: 从第m位开始,num1的元素替换为原创 2021-04-06 20:15:41 · 122 阅读 · 1 评论 -
LeetCode日记_012_删除有序数组中的重复项
题目信息: 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。 例: 输入:nums = [1,1,1,2,2,3] 输出:5, nums = [1,1,2,2,3] 解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。 不需要考虑数组中超出新长度后面的元素。 本人思路: 使用while循环对数组进行遍历(使用for循环,当删除数组元素时,数组长度变化,循环会出异常),因为数组有序,所以原创 2021-04-06 19:23:22 · 69 阅读 · 0 评论 -
LeetCode日记_011_至少有 K 个重复字符的最长子串
题目信息: 给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。 例: 输入:s = “aaabb”, k = 3 输出:3 解释:最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。 本人思路: 1、暴力获取s的所有子串 2、遍历获取子串每个字符出现的次数 3、获取所需最优解 然:提交后超时 class Solution: def longestSubstring(self, s, k): max原创 2021-03-08 16:43:07 · 92 阅读 · 0 评论 -
LeetCode日记_010_单调数列
本人思路: 1、对列表进行排序,如果和原列表相同,返回true 2、对排序后的列表倒序,再进行比较 class Solution: def isMonotonic(self, A): dandiao_A = sorted(A) if A == dandiao_A: return True dandiao_A.reverse() if A == dandiao_A: return True原创 2021-03-02 19:50:22 · 93 阅读 · 0 评论 -
LeetCode日记_009_二维区域和检索 - 矩阵不可变
题目信息: 给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。 例: 给定 matrix = [ [3, 0, 1, 4, 2], [5, 6, 3, 2, 1], [1, 2, 0, 1, 5], [4, 1, 0, 1, 7], [1, 0, 3, 0, 5] ] sumRegion(2, 1, 4, 3) -> 8 sumRegion(1, 1, 2, 2) -> 11 sumRegion(1, 2, 2,原创 2021-03-02 12:18:08 · 64 阅读 · 0 评论 -
LeetCode日记_008_区域和检索 - 数组不可变
题目信息: 给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。 例: 输入: [“NumArray”, “sumRange”, “sumRange”, “sumRange”] [[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]] 输出: [null, 1, -1, -3] 本人思路: 使用列表切片i,j+1,然后使用sum求和。 成功提交,然执行时间太长。内置方法如此耗时是我没想到的。 class Nu原创 2021-03-02 08:54:56 · 88 阅读 · 0 评论 -
LeetCode日记_007_猜字谜
题目信息: 外国友人仿照中国字谜设计了一个英文版猜字谜小游戏,请你来猜猜看吧。 字谜的迷面puzzle 按字符串形式给出,如果一个单词word符合下面两个条件,那么它就可以算作谜底: 单词word中包含谜面puzzle的第一个字母。 单词word中的每一个字母都可以在谜面puzzle中找到。 例如,如果字谜的谜面是 “abcdefg”,那么可以作为谜底的单词有 “faced”, “cabbage”, 和 “baggage”;而 “beefed”(不含字母 “a”)以及"based"(其中的 “s” 没有出现原创 2021-02-26 15:42:20 · 123 阅读 · 0 评论 -
LeetCode日记_006_转置矩阵
题目信息: 给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 例: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[[1,4,7],[2,5,8],[3,6,9]] 本人思路: 1、获取最长子列表的长度 2、创建新数组,数组内子列表个数为1中的长度,子列表为空 3、遍历所有子列表,向新数组内添加元素 class Solution: def transpose(self,原创 2021-02-25 20:48:14 · 130 阅读 · 2 评论 -
LeetCode日记_005_翻转图像
题目信息: 给定一个二进制矩阵A,我们想先水平翻转图像,然后反转图像并返回结果。 水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转[1, 1, 0]的结果是[0, 1, 1]。 反转图片的意思是图片中的0全部被1替换,1全部被0替换。例如,反转[0, 1, 1]的结果是[1, 0, 0]。 例: 输入: [[1,1,0],[1,0,1],[0,0,0]] 输出: [[1,0,0],[0,1,0],[1,1,1]] 解释: 首先翻转每一行: [[0,1,1],[1,0,1],[0,0,0]];原创 2021-02-24 10:52:02 · 72 阅读 · 0 评论 -
LeetCode日记_004_爱生气的书店老板
题目信息: 今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。 在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。 书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。 请你返回这一天营业下来,最多有多原创 2021-02-23 17:42:40 · 78 阅读 · 0 评论 -
LeetCode日记_003_托普利茨矩阵
题目信息: 给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。 如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。 例: 输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]] 输出:true 解释: 在上述矩阵中, 其对角线为: “[9]”, “[5, 5]”, “[1, 1, 1]”, “[2, 2, 2]”, “[3, 3]”, “[4]”。 各条对角线上的所有元素均原创 2021-02-22 21:34:22 · 99 阅读 · 0 评论 -
LeetCode日记_002_数组的度
题目信息: 给定一个非空且只包含非负数的整数数组nums,数组的度的定义是指数组里任一元素出现频数的最大值。 你的任务是在 nums 中找到与nums拥有相同大小的度的最短连续子数组,返回其长度。 例: 输入:[1, 2, 2, 3, 1] 输出:2 解释: 输入数组的度是2,因为元素1和2的出现频数最大,均为2. 连续子数组里面拥有相同度的有如下所示: [1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2] 最短连原创 2021-02-22 20:44:36 · 89 阅读 · 0 评论 -
LeetCode日记_001_最大连续1的个数
题目信息: 给定一个由若干 0 和 1 组成的数组 A,我们最多可以将 K 个值从 0 变成 1 。 返回仅包含 1 的最长(连续)子数组的长度。 例: 输入:A = [1,1,1,0,0,0,1,1,1,1,0], K = 2 输出:6 解释: [1,1,1,0,0,1,1,1,1,1,1] 粗体数字从 0 翻转到 1,最长的子数组长度为 6。 本人思路(贱笑了): 完全按照题目信息来思考,想着把0变为1,找出最长的合适子数组。 先把数组转化为新的列表。列表元素为相邻数字一样的总数。 根据列表第一个元素是原创 2021-02-22 20:31:05 · 304 阅读 · 0 评论