自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Heart_for_Ling的博客

一只编程菜鸟的札记。

  • 博客(439)
  • 资源 (1)
  • 收藏
  • 关注

原创 【力扣】238:除自身以外数组的乘积 | 动态规划

题目描述给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。要求:在 O(n) 时间复杂度内完成此题。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/product-of-array-except-self著作权

2020-06-04 11:28:17 600

原创 【力扣】面试04.08:首个共同祖先

题目描述设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。算法第一版的思路来源:将树的节点按照一定规则编号,然后反向计算祖节点的位置class Solution: def lowestCommonAncestor(self, root: TreeNode, p: TreeNode, q: TreeNode) -> TreeNode: def look(r,n): if

2020-06-03 12:02:55 554

原创 【力扣】837:新21点 |动态规划

题目描述爱丽丝参与一个大致基于纸牌游戏 “21点” 规则的游戏,描述如下:爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字。 抽取时,她从 [1, W] 的范围中随机获得一个整数作为分数进行累计,其中 W 是整数。 每次抽取都是独立的,其结果具有相同的概率。当爱丽丝获得不少于 K 分时,她就停止抽取数字。 爱丽丝的分数不超过 N 的概率是多少?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/new-21-game著作权归领扣网络所有。

2020-06-03 11:05:44 534

原创 【Python小白计划】1. Python语言的基础知识

什么是Python?Python是一种解释性,交互式,面向对象的编程语言。它包含模块,异常,动态类型,非常高级的动态数据类型和类。Python将非凡的功能与非常清晰的语法结合在一起。它具有许多系统调用和库以及各种窗口系统的接口,并且可以用C或C ++扩展。对于需要可编程接口的应用程序,它也可用作扩展语言。最后,Python是可移植的:它可以在许多Unix变体,Mac和Windows 2000及更高版本上运行。Python是一种高级通用编程语言,可以应用于许多不同类别的问题。该语言带有一个大型标准库,涵

2020-06-02 20:35:02 4758 5

原创 【季泠】命令行的基本使用

cmd使用的记录博。环境:win101、打开命令行一般打开命令行Command Line使用的是win+R,打开【运行】,输入‘cmd’,打开命令行。一般来说,命令符>一般默认在C盘。2、命令行切换目录只需要输入卷名即可切换,记得加上冒号哦。如下图,盘符已更改以上的一个命令cd 目录名,可以进入目录,但必须是已存在目录。不然就是“系统找不到指定的路径”,具体实现:3、d...

2020-06-02 11:50:15 1237

原创 【力扣周赛】191:1464、1465、1466、1467 |回溯算法

1464:数组中两元素的最大乘积给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。提示:2 <= nums.length <= 5001 <= nums[i] <= 10^3算法class Solution: def maxProduct(self, nums: List[int]) -> int: nums.sort()

2020-06-02 11:17:31 809

原创 【MySQL】8.1 存储程序实例:课程管理

选课功能:“选课”是课程管理系统中的重要环节,选课将学生实体和课程实体有效连接起来。选课功能的逻辑:• 同一学生不能重复选同一门课• 课程设置有人数上限,选课人数不能超过该上限• 应提供课程还可供多少人选课的信息• 如果课程设置有开始选课时间和(或)结束选课时间,在允许的时间范围内方可选课“选课”的业务逻辑表达的规则越多,就越值得用存储程序的眼光去看待“选课”,“选课”绝不仅仅是一个具体的“choose”表。以下定义一组存储程序来服务于课程管理。存储程序实例存储函数get_availabl

2020-05-30 18:17:20 1376 1

原创 【MySQL】8.0:存储程序

8.1 存储程序存储程序:预先在数据库服务器端存储SQL命令/语句,并且过后能在数据库服务器端被执行的数据库对象。存储程序的主体:存储程序定义的主体除了常规的SQL语句外,通常还使用变量声明、选择、循环和复合语句等。使用存储程序:利用CALL语句等方式使用存储程序。存储程序的分类:存储例程:和一个数据库相关,可以根据名字调用触发器:和一个表相关,并在该表产生特殊事件时被触发事件:和一个数据库相关,代表了由MySQL服务器的事件调度器在特定时刻调度执行的任务8.1.1 存储例程存储例程

2020-05-30 17:43:28 1429

原创 【MySQL】7:数据库编程基础

7.1 常量常量:固定数据值、字面量、字面值、标量值作用:参与运算或给变量赋值种类:5种,包括:字符串、日期时间、数值、布尔、NULL。其中:字符串常量:用成对单引号“‘”或双引号“””括起来的字符序列。数值型常量:二进制、十进制与十六进制。二进制常量如:b’1011’、B’1011’。十进制常量,最常用,直接书写,不需要定界符,如:3,-5,+3.14,123.7E-2十六进制常量,需要使用前缀和单引号表示:0x41、x’41’、X’41’日期时间型:用单引号括起来,是有特殊格式的

2020-05-30 14:48:15 725

原创 【MySQL】故障汇总日志 01

Could not connect, server may not be running. Can’t connect to MySQL server on ‘localhost’ (10061)原因:MySQL服务未启动。解决:此电脑->右键管理->服务与应用程序->服务->找到MySQL->点击启动。...

2020-05-30 13:15:39 831

原创 【力扣】974:和可被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 <= A[i] <= 10000

2020-05-28 20:26:01 491

原创 【力扣】394:字符串解码 | 栈|递归

好久没更新力扣了,今天考完科目二,终于有时间继续学习了。题目描述给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。s = "3[a]2[bc]", 返

2020-05-28 20:16:16 537

原创 【力扣】76:最小覆盖子串 | 哈希|双指针|滑动窗口

题目描述给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC”输出: “BANC”说明:如果 S 中不存这样的子串,则返回空字符串 “”。如果 S 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)顺便是2020/05/23的每日一题打卡,又是一个独立完成的HARD算法思路这种字符串类型的问题很容易想到滑动窗口,用i,j表示窗口的起止位置,如何判断窗口的

2020-05-23 21:25:14 565

原创 【力扣】面试16.10 生存人数

题目描述给定N个人的出生年份和死亡年份,第i个人的出生年份为birth[i],死亡年份为death[i],实现一个方法以计算生存人数最多的年份。你可以假设所有人都出生于1900年至2000年(含1900和2000)之间。如果一个人在某一年的任意时期都处于生存状态,那么他们应该被纳入那一年的统计中。例如,生于1908年、死于1909年的人应当被列入1908年和1909年的计数。如果有多个年份生存人数相同且均为最大值,输出其中最小的年份。来源:力扣(LeetCode)链接:https://leetco

2020-05-20 22:33:49 2797

原创 【力扣】980:不同路径 III | 深度优先搜索 DFS | 回溯算法

题目描述在二维网格 grid 上,有 4 种类型的方格:1 表示起始方格。且只有一个起始方格。2 表示结束方格,且只有一个结束方格。0 表示我们可以走过的空方格。-1 表示我们无法跨越的障碍。返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目,每一个无障碍方格都要通过一次。算法思路一看题就知道,老DFS了。如何循迹?回溯算法!因为是DFS矩阵,所以先把“公式”摆上再说 self.m,self.n=len(grid),len(grid[0])

2020-05-17 21:17:00 560

原创 【力扣】560:和为K的子数组 | 哈希

题目描述给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。算法思路暴力(超时class Solution: def subarraySum(self, nums: List[int], k: int) ->

2020-05-16 20:40:38 486

原创 【力扣】221 最大正方形 |1277 | 动态规划

1277 统计全为1的正方形子矩阵给你一个 m * n 的矩阵,矩阵中的元素不是 0 就是 1,请你统计并返回其中完全由 1 组成的 正方形 子矩阵的个数。输入:matrix =[ [0,1,1,1], [1,1,1,1], [0,1,1,1]]输出:15解释: 边长为 1 的正方形有 10 个。边长为 2 的正方形有 4 个。边长为 3 的正方形有 1 个。正方形的总数 = 10 + 4 + 1 = 15.算法思路我们用 f[i][j] 表示以 (i, j) 为右下角

2020-05-16 20:33:47 585

原创 【力扣】241:为运算表达式设计优先级 | 分治算法 | 回溯算法

题目描述给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释: (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) = -10 (2*((3-4)*5)) = -10 (((2*3)-4)*5) = 10来源:力扣(LeetCode)算

2020-05-14 18:00:25 552

原创 【力扣】240:搜索二维矩阵 II

题目描述编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。来源:力扣(LeetCode)算法思路二分class Solution: def findNumberIn2DArray(self, matrix, target: int) -> bool: def BS(ls): l,r=0,len(ls)-1

2020-05-11 17:41:23 451

原创 【力扣】1010:总持续时间可被60整除的歌曲 | 排列组合

题目描述在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i 和 j 满足 i < j 且有 (time[i] + time[j]) % 60 == 0。算法思路使用暴力解题,超时。找评论区大神取经:dp=[0]*60遍历一遍time,将所有值与60取余,并统计。class Solution: def numPairsDivisibleBy60(self, time: Lis

2020-05-11 16:42:33 394

原创 【力扣】239:滑动窗口最大值 | 维护单调队列

题目描述给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值--------------- -----[1 3 -1] -3 5 3 6 7

2020-05-11 15:35:01 446

原创 【力扣】面试05.03:翻转数位

题目描述给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。算法思路分为两种状态讨论,一个是数字n的二进制形式里没有0,那么最长串的长度为二进制的长度+1第二种情况是二进制串里有0,那么bin(num)[2:].split('0'),取得所有的非0字段,只能修改一个数位,所以遍历列表,相连两个字段长度+1就是新字段。class Solution: def reverseBits(self, num: int) -> int:

2020-05-11 13:54:00 418

原创 【力扣】1175:质数排列 |数学:排列组合

题目描述请你帮忙给从 1 到 n 的数设计排列方案,使得所有的「质数」都应该被放在「质数索引」(索引从 1 开始)上;你需要返回可能的方案总数。由于答案可能会很大,所以请你返回答案 模 mod 10^9 + 7 之后的结果即可。! 「质数索引」(索引从 1 开始):所谓质数索引就是索引为质数的位置! 「质数」:质数一定是大于 1 的,并且不能用两个小于它的正整数的乘积来表示。算法思路所以这是很明显的数学问题,纯粹的排列组合,题目给出了例子n=5,从1到5,2、3、5是质数,所以非质数有5-3=2

2020-05-11 12:20:08 654

原创 【力扣】面试08.01:三步问题 | 动态规划

题目描述三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。来源:力扣(LeetCode)算法思路这是一个很典型的动态规划,和上楼梯的问题很类似。惯例创建一个动态数组dp,一维,i表示阶梯数为i,dp[i]保存上楼方式的数量。这里假设楼梯数为i,到达i有多少种方法?因为我们可以一步上一阶或者两阶或者三阶,所以我们可以先到达i-1阶,然后再向上一阶;或是到达i-2阶,然后向上两

2020-05-10 15:24:14 603

原创 【力扣】993:二叉树的堂兄弟节点 | BFS

题目描述在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但父节点不同,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root,以及树中两个不同节点的值 x 和 y。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true。否则,返回 false。来源:力扣(LeetCode)算法思路深度相同:广度优先搜索父节点不同:编号class Solution: def isCousins(self,

2020-05-10 15:01:11 417

原创 【力扣】1137:第N个泰波那契数 | 递归 | 动态规划 |迭代

题目描述泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。来源:力扣(LeetCode)算法思路动态规划class Solution: def tribonacci(self, n: int) -> int: dp=[0,1,1]+[0]*(n-2) for i in range(3,n

2020-05-10 12:50:14 447

原创 【力扣】661:图片平滑器|数组

题目描述包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/image-smoother著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。算法思路这里有几个点要注意拷贝数组,dp=[[M[j][i] for i in

2020-05-10 11:29:33 572

原创 【力扣】面试03.01:三合一 | 栈

题目描述三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。算法思路class TripleInOne: def __init__(self, stackSize: int): self.ls=[[],[],[]]

2020-05-09 17:50:03 415

原创 【力扣】面试08.10:颜色填充 | BFS

题目描述颜色填充。编写函数,实现许多图片编辑软件都支持的“颜色填充”功能。给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色值填入这个点的周围区域,直到原来的颜色值全都改变。说明:image 和 image[0] 的长度在范围 [1, 50] 内。给出的初始点将满足 0 <= sr < image.length 和 0 <= sc < image[0].length。image[i][j] 和 newColor 表示的颜色值在范围 [0, 655

2020-05-09 17:41:26 486

原创 【力扣】LCP 07:传递消息 | 单向图

题目描述小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。每轮信息必须需要传递给另一个人,且信息可重复经过同一个人给定总玩家数 n,以及按 [玩家编号,对应可传递玩家编号] 关系组成的二维数组 relation。返回信息从小 A (编号 0 ) 经过 k 轮传递到编

2020-05-09 17:24:59 606

原创 【力扣】1260:二维网格迁移

题目描述给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。每次「迁移」操作将会引发下述活动:位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。位于 grid[i][n - 1] 的元素将会移动到 grid[i + 1][0]。位于 grid[m - 1][n - 1] 的元素将会移动到 grid[0][0]。请你返回 k 次迁移操作后最终得到的 二维网格。算法思路根据例子很容易看出规律。class Solution:

2020-05-08 23:16:03 399

原创 【力扣】1029:两地调度 |贪心

题目描述公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。输入:[[10,20],[30,200],[400,50],[30,20]]输出:110解释:第一个人去 A 市,费用为 10。第二个人去 A 市,费用为 30。第三个人去 B 市,...

2020-05-08 13:02:47 515

原创 【力扣】1170:比较字符串最小字母出现频次 | lambda

题目描述我们来定义一个函数 f(s),其中传入参数 s 是一个非空字符串;该函数的功能是统计 s 中(按字典序比较)最小字母的出现频次。例如,若 s = “dcce”,那么 f(s) = 2,因为最小的字母是 “c”,它出现了 2 次。现在,给你两个字符串数组待查表 queries 和词汇表 words,请你返回一个整数数组 answer 作为答案,其中每个 answer[i] 是满足 f...

2020-05-08 11:39:16 384

原创 【力扣】【设计】面试03.06:动物收容所

题目描述动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeu...

2020-05-07 23:03:43 439

原创 【力扣】1022:从根到叶的二进制数之和 | DFS

题目描述给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制数 01101,也就是 13 。对树上的每一片叶子,我们都要找出从根到该叶子的路径所表示的数字。以 10^9 + 7 为模,返回这些数字之和。算法思路其实就是遍历所有从根...

2020-05-07 22:35:33 389

原创 【力扣】1314:矩阵区域和 | 动态规划 | 数学

题目描述给你一个 m * n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer。其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和:i - K <= r <= i + K, j - K <= c <= j + K(r, c) 在矩阵内提示:m == mat.lengthn == mat[i].length...

2020-05-07 11:46:56 421

原创 【力扣】148:排序链表

题目描述在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。算法思路仅仅解题class Solution: def sortList(self, head: ListNode) -> ListNode: self.res=[] while head: self.he(head.val) ...

2020-05-06 21:01:46 378

原创 【力扣】面试47:礼物的最大价值 | 动态规划

题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?来源:力扣(LeetCode)算法思路很显然,由于左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角导致实际上每一格...

2020-05-06 20:17:53 490

原创 【力扣】537:复数乘法 | eval

题目描述给定两个表示复数的字符串。返回表示它们乘积的字符串。注意,根据定义 i2 = -1 。示例 1:输入: “1+1i”, “1+1i”输出: “0+2i”解释: (1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2i 的形式。来源:力扣(LeetCode)算法思路利用eval去掉字符串引号。class Solution...

2020-05-06 19:59:51 428

原创 【力扣】933:最近的请求次数

题目描述写一个 RecentCounter 类来计算最近的请求。它只有一个方法:ping(int t),其中 t 代表以毫秒为单位的某个时间。返回从 3000 毫秒前到现在的 ping 数。任何处于 [t - 3000, t] 时间范围之内的 ping 都将会被计算在内,包括当前(指 t 时刻)的 ping。保证每次对 ping 的调用都使用比之前更大的 t 值。来源:力扣(LeetC...

2020-05-06 15:12:37 413

用于图片批处理的exe文件与py源文件

用于给图片批量贴水印的基于Python和Pillow写的一个脚本,以及pyinstaller得到的可执行文件。 其中exe文件在某些电脑上可能会出现"无法定位程序输入点ucrtbase.abort与动态链接库api-ms-win-crt-runtime-l1-1-0.dll上"。

2020-07-22

空空如也

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

TA关注的人

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