自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jqq125的博客

Doing the right thing is the best defence!

  • 博客(20)
  • 收藏
  • 关注

原创 【贪心】leetcode435.无重叠区间

题目:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。思路:贪心算法:将所有区间按右端点进行排序,并将第一个区间作为符合条件的初始区间,并记其右端点为right,则按序查找首个 左端点大于等于right的区间,令其为第二个区间。依次类推,直到所有区间遍历完毕。证明:最优子结构若存在两个区间,区间i [li,ri] 和区间j [lj,rj]。设区间j是首个(最

2020-12-31 10:05:35 134

原创 【动态规划】leetcode1046.最后一块石头的重量

题目:有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头的重量。如果没有石头剩下,就返回 0。解答:法一:先对列表进行逆序排列,每次取出前两个元素进行比较,如果不等,则将其差值添加到列表末尾;

2020-12-30 11:43:39 211 1

原创 leetcode每日一题—330.按要求补齐数组

题目:给定一个已排序的正整数数组 nums,和一个正整数 n 。从 [1, n] 区间内选取任意个数字补充到 nums 中,使得 [1, n] 区间内的任何数字都可以用 nums 中某几个数字的和来表示。请输出满足上述要求的最少需要补充的数字个数。思路:这老哥可太优秀了,讲得通俗易懂呀解答:class Solution: def minPatches(self, nums: List[int], n: int) -> int: #add为当前未能覆盖到的最小值

2020-12-29 13:04:43 142

原创 leetcode每日一题—205.同构字符串

题目:给定两个字符串 s 和 t,判断它们是否是同构的。如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。思路:对同构字符串而言,每对映射字符所对应的索引相同,即在字符串中首次出现的位置也相同。解答:class Solution: def isIsomorphic(self, s: str, t: str) -> bool: retur

2020-12-27 10:32:52 144

原创 leetcode每日一题—85.最大矩形

题目:给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。解答:class Solution: def maximalRectangle(self, matrix: List[List[str]]) -> int: if not matrix: return 0 m=len(matrix) n=len(matrix[0]) cou

2020-12-26 16:06:01 334 1

原创 【贪心】leetcode135.分发糖果

题目:老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。评分更高的孩子必须比他两侧的邻位孩子获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢?思路:将每个数当看作一个波浪线中的峰值,从左向右扫描一次,再从右向左扫描一次,扫描到当前数即停止,取两者中较大的值。具体过程如下:扫描两次:第一次,从左向右扫描,将第一个人拥有的糖果数设定为1,即left[0]=1。

2020-12-25 10:10:16 223 1

原创 leetcode每日一题—290.单词规律

题目:给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。解答:class Solution: def wordPattern(self, pattern: str, s: str) -> bool: t=s.split() if len(pattern) != len(t):

2020-12-16 15:11:29 89

原创 leetcode每日一题—49.字母异位词分组

基础知识:sort 与 sorted 区别:sort() 函数用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。sorted() 函数对所有可迭代的对象进行排序操作。sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。题目:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同

2020-12-14 20:53:28 81

原创 Python变量作用域

Python查找一个变量时会按照“局部作用域”、“嵌套作用域”、“全局作用域”和“内置作用域”的顺序进行搜索。所谓的“内置作用域”就是Python内置的那些标识符,我们之前用过的input、print、int等都属于内置作用域。如果我们希望函数内部的函数能够修改嵌套作用域中的变量,可以使用nonlocal关键字来指示变量来自于嵌套作用域def foo(): #此处的b为局部变量,属于foo()的局部作用域 b = 'hello' # Python中可以在函数内部再定义函数

2020-12-14 13:05:01 212

原创 __name__与__main__

当前运行的程序,其 name 的值为 main,而导入到当前程序中的模块,其 name 值为自己的模块名。因此,if name == ‘main’: 的作用是确保只有单独运行该模块时,此表达式才成立,才可以进入此判断语法,执行其中的测试代码;反之,如果只是作为模块导入到其他程序文件中,则此表达式将不成立,运行其它程序时,也就不会执行该判断语句中的测试代码。...

2020-12-14 12:24:15 202 1

原创 写一个程序判断输入的正整数是不是回文素数。

题目:写一个程序判断输入的正整数是不是回文素数。解答:def is_palindrome(num): """判断一个数是不是回文数""" temp = num total = 0 while temp > 0: total = total * 10 + temp % 10 temp //= 10 return total == numdef is_prime(num): """判断一个数是不是素数"""

2020-12-14 12:08:00 2124

原创 输出斐波那契的前20个数

题目:输出斐波那契数列的前20个数解答:a=0b=1for _ in range(20): a,b=b,a+b print(a,end=' ')

2020-12-13 20:59:57 4221

原创 找出10000以内的完美数

题目:完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。例如:6(6=1+2+36=1+2+36=1+2+3)和28(28=1+2+4+7+1428=1+2+4+7+1428=1+2+4+7+14)就是完美数。解答:import mathfor num in range(1,10000): result=0 for factor in range(1,int(math.sqrt(num))+1): if num%f

2020-12-13 20:55:20 2750 1

原创 正整数逆转

题目:实现将一个正整数反转,例如:将12345变成54321。思路:每次用num%10取当前最低位;取到最低位后将num//10,去掉最后一位。解答:num=int(input('num='))reversed_num=0while num>0: reversed_num=reversed_num*10+num%10 num//=10print(reversed_num)...

2020-12-12 22:52:49 977

原创 leetcode每日一题—842.将数组拆分成斐波那契数列

题目:给定一个数字字符串 S,比如 S = “123456579”,我们可以将它分成斐波那契式的序列 [123, 456, 579]。形式上,斐波那契式序列是一个非负整数列表 F,且满足:0 <= F[i] <= 2^31 - 1,(也就是说,每个整数都符合 32 位有符号整数类型);F.length >= 3;对于所有的0 <= i < F.length - 2,都有 F[i] + F[i+1] = F[i+2] 成立。另外,请注意,将字符串拆分成小块时,每个块的

2020-12-09 16:49:53 439

原创 leetcode每日一题—621.任务调度器

基础知识题目:给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。然而,两个 相同种类 的任务之间必须有长度为整数 n 的冷却时间,因此至少有连续 n 个单位时间内 CPU 在执行不同的任务,或者在待命状态。你需要计算完成所有任务所需要的 最短时间 。思路:桶思想:https://leetcode-cn.com/p

2020-12-05 11:59:41 301

原创 leetcode每日一题—659.分割数组为连续子序列

题目:给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度至少为 3 。如果可以完成上述分割,则返回 true ;否则,返回 false 。思路:455666781.子序列可增长的情况:nums[i]的个数 >= nums[i-1]的个数45 V 456 V2.子序列不能继续增长的情况:nums[i]的个数 < nums[i-1]的个数4567 X ,5668不能构成连续子序列解答:class

2020-12-04 14:54:41 121

原创 leetcode每日一题 V—321.拼接最大数

题目:给定长度分别为 m 和 n 的两个数组,其元素由 0-9 构成,表示两个自然数各位上的数字。现在从这两个数组中选出 k (k <= m + n) 个数字拼接成一个新的数,要求从同一个数组中取出的数字保持其在原数组中的相对顺序。求满足该条件的最大数。结果返回一个表示该最大数的长度为 k 的数组。说明: 请尽可能地优化你算法的时间和空间复杂度。思路:1.pick_maxk(nums,k):从列表nums中选出k个数,使得其拼接得到的值最大暴力求解,执行pick_maxk(nums1,i)和

2020-12-02 17:36:05 171 2

原创 leetcode V—316.去除重复字母

题目:给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。思路:利用栈存储需要返回的字符串思路与402类似解答:class Solution: def removeDuplicateLetters(self, s: str) -> str: stack = [] remain_counter = collections.Counter(s) pri

2020-12-02 16:46:36 62

原创 leetcode每日一题—767.重构字符串

题目:给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。思路:1.先利用字典统计 字符串中各字符出现的次数;若存在某个字符,其出现次数大于 (字符串长度+1)/2,则return 空字符串;否则考虑其字符重新排列的问题;2.利用堆重新排列字符串解答:class Solution: def reorganizeString(self, S: str) -> str: res = ""

2020-12-02 15:38:39 192

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除