![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣
老师好,我是刘同学
改变自己的机会有两次,一次是十年前,一次是现在。
展开
-
【史上最详细解释】最长回文子串手把手教学【包你学会】
题目描述:给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”解题思路:中心扩散法:中心扩散法的思想是遍历一遍字符串,以单个字符为中心和以两个字符为中心的,遍历某个字符(或者某两个字符的时候)时,找到以这个字符为中心的最长回文串。将我们找到的回文子串保存在一个列表里面,最后找到最长的那个就行了。代码:class Solution: de原创 2022-05-08 14:48:51 · 383 阅读 · 0 评论 -
【超详细解释】一文让你理解第K小数始末,寻找两个正序数组的中位数
力扣链接题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) /原创 2022-05-07 21:31:37 · 329 阅读 · 0 评论 -
力扣练题之无重复字符的最长子串【包教包会】【一学就会】
力扣第三题:题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “ppwwkew”输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pw原创 2022-05-06 22:24:03 · 109 阅读 · 0 评论 -
力扣练题之两数相加【详细解释】【包教包会】
今天来说说力扣第二题:两数相加题目描述:给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,原创 2022-05-06 21:37:18 · 399 阅读 · 0 评论 -
【力扣练题之二分查找】167:两数之和II
题目描述:给你一个下标从 1 开始的整数数组numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2],则 1 <= index1 < index2 <= numbers.length。以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。你可以假设每个输入 只对应唯一的答案 ,原创 2022-04-10 22:40:10 · 110 阅读 · 0 评论 -
【力扣练题之二分查找】441:排列硬币
题目描述:你总共有n枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字n ,计算并返回可形成 完整阶梯行 的总行数。我的思路分析:因为要形成k行组合的阶梯,且第i行正好有i个硬币,那么就遍历每一行,第一行是1个硬币,第二行两个。class Solution: def arrangeCoins(self, n: int) -> int: i = 1 while原创 2022-04-10 18:29:49 · 152 阅读 · 0 评论 -
【力扣练题之二分查找】34: 在排序数组中查找元素的第一个和最后一个位置
第一次自己试了好多次,完成了中等难度的题。题目描述:给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 6输出:[3,4]思路:这个题是找边界,我们如果用二分查找可以演变成找左边界和有边界的问题。左边界满足什么条件呢?原创 2022-04-09 23:54:36 · 128 阅读 · 0 评论 -
【力扣练题之二分查找】744:寻找比目标字母大的最小字母
题目描述:给你一个排序后的字符列表 letters ,列表中只包含小写英文字母。另给出一个目标字母target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循环出现的。举个例子:如果目标字母 target = ‘z’ 并且字符列表为letters = [‘a’, ‘b’],则答案返回’a’题意解读:首先给定一个只含英文字母的列表和一个目标字母target, 我们要找到这个有序列表里面比目标字母大的最小字母,但是如果列表中没有比目标字母大的字母,就返回列表第一个字母。所以只要原创 2022-04-09 22:20:34 · 259 阅读 · 0 评论 -
【力扣练题之二分查找】69:x的平方根
力扣练题之二分查找题目描述:给你一个非负整数 x ,计算并返回x的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。我自己的解法:class Solution: def mySqrt(self, x: int) -> int: start = 0 end = x while True:原创 2022-04-09 21:26:15 · 218 阅读 · 0 评论 -
【力扣练题之二分查找】1385:两个数组间的距离值
题目描述:给你两个整数数组arr1,arr2和一个整数d,请你返回两个数组之间的距离值。「距离值」定义为符合此距离要求的元素数目:对于元素arr1[i],不存在任何元素arr2[j]满足 |arr1[i]-arr2[j]| <= d示例与解释:输入:arr1 = [4,5,8], arr2 = [10,9,1,8], d = 2输出:2解释:对于 arr1[0]=4 我们有:|4-10|=6 > d=2|4-9|=5 > d=2|4-1|=3 > d=2|4-8原创 2022-04-07 23:23:37 · 133 阅读 · 0 评论 -
【力扣练题之二分查找】367:有效的完全平方数
题目描述:给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如sqrt 。class Solution: def isPerfectSquare(self, num: int) -> bool: return float.is_integer(pow(num,0.5)) def isPerfectSquare_1(self, num: int) -> bo原创 2022-04-07 22:13:40 · 285 阅读 · 0 评论 -
【力扣练题之二分查找】852: 山脉数组的峰顶索引
题目描述:符合下列属性的数组 arr 称为 山脉数组 :arr.length >= 3存在 i(0 < i< arr.length - 1)使得:arr[0] < arr[1] < … arr[i-1] < arr[i]arr[i] > arr[i+1] > … > arr[arr.length - 1]给你由整数组成的山脉数组 arr ,返回任何满足 arr[0] < arr[1] < … arr[i - 1] < arr原创 2022-04-06 22:53:35 · 93 阅读 · 0 评论 -
【力扣练题之二分查找】35:搜索插入位置
题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。class Solution: def searchInsert(self, nums: list, target: int) -> int: start = 0 ans = len(nums) end = len(nums) - 1 while原创 2022-04-06 22:19:03 · 216 阅读 · 0 评论 -
微信信息轰炸【简易版】
本版本的微信信息轰炸仅能在电脑端使用:简单讲解下其中的原理:在程序中输入我们想要信息轰炸的信息,然后模拟键盘输入。其实我们就是使用了python的库pynput,模拟输入文字和信息,不多说,上代码from pynput.keyboard import Key,Controller as key_clfrom pynput.mouse import Controller,Buttonimport timedef keyboard_input(string): keyboard = ke原创 2022-04-06 21:23:59 · 9503 阅读 · 8 评论 -
【二分查找】力扣练题之704
题目描述:给定一个n个元素有序的(升序)整型数组nums 和一个目标值target ,写一个函数搜索nums中的 target,如果目标值存在返回下标,否则返回 -1。解法:二分查找class Solution_3: def search(self, nums: list, target: int) -> int: try: return nums.index(target) except Exception:原创 2022-04-05 22:29:40 · 541 阅读 · 0 评论 -
力扣练题之1672:最富有客户的资产总量
题目描述:给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 = 6两位客户都是最富有的,资产总量原创 2022-04-05 21:29:03 · 589 阅读 · 0 评论 -
力扣练题之1337.矩阵中战斗力最弱的第K行
题目描述给你一个大小为 m * n 的矩阵 mat,矩阵由若干军人和平民组成,分别用 1 和 0 表示。请你返回矩阵中战斗力最弱的 k 行的索引,按从最弱到最强排序。如果第 i 行的军人数量少于第 j 行,或者两行军人数量相同但 i 小于 j,那么我们认为第 i 行的战斗力比第 j 行弱。军人 总是 排在一行中的靠前位置,也就是说 1 总是出现在 0 之前。我自己的暴力解法:class Solution: def kWeakestRows(self, mat, k: int):原创 2022-04-02 22:58:23 · 125 阅读 · 0 评论 -
力扣练题之876题:链表的中间结点
题目描述:876.链表的中间结点给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next原创 2022-04-02 21:23:27 · 726 阅读 · 0 评论 -
力扣练题之最简单的力扣题412题
题目描述:给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。answer[i] == “Fizz” 如果 i 是 3 的倍数。answer[i] == “Buzz” 如果 i 是 5 的倍数。answer[i] == i (以字符串形式)如果上述条件全不满足。来源:力扣(LeetCode)链接:https://leet原创 2022-04-02 20:32:29 · 209 阅读 · 0 评论 -
力扣练题之赎金信383题【史上最全解法】
给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。如果可以,返回 true ;否则返回 false 。magazine 中的每个字符只能在 ransomNote 中使用一次。示例 1:输入:ransomNote = “a”, magazine = “b”输出:false示例 2:输入:ransomNote = “aa”, magazine = “ab”输出:false示例 3:输入:ransomNote原创 2022-04-01 22:55:06 · 347 阅读 · 0 评论 -
力扣练题(day3):滑动窗口问题
对于滑动窗口问题class Solution: def problemName(self, s: str) -> int: # Step 1: 定义需要维护的变量们 (对于滑动窗口类题目,这些变量通常是最小长度,最大长度,或者哈希表) x, y = ..., ... # Step 2: 定义窗口的首尾端 (start, end), 然后滑动窗口 start = 0 for end in range(l..原创 2022-03-23 20:56:45 · 116 阅读 · 0 评论 -
力扣算法(2):两数之和
题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution_2(o原创 2022-03-20 14:52:12 · 84 阅读 · 0 评论 -
力扣算法(1):罗马数字转整数
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1 。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+...原创 2022-03-20 13:58:35 · 235 阅读 · 1 评论