自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

R

R'sBelief

  • 博客(513)
  • 资源 (2)
  • 收藏
  • 关注

原创 leetcode 2029. 石子游戏 IX【贪心】

题意:采用最佳决策,尽量使A赢,A赢的条件是既不能拿到和为3的倍数的数,又不能是最后一个拿数的人。code:# 0 有偶数个:# 将所有插在第一位和第二位之间,A取任意一个,中间的0相当于无效操作,# 如果1和2的个数都是0个,A必输;# 如果1或2的个数不为0个,少于等于2个时,石子取完,判定A输,大于等于3个是,A拿到3的倍数个,A必输;# 如果1和2的个数都不为0,A先去少的那一个时,A必赢;# 0 有奇数个:# 将所有插在第一位和第二位之间,之后相当于 新的一轮博弈 且是A开头.

2022-01-21 02:00:51 2357

原创 本地通过跳板机连接服务器开发

mobaXterm通过跳板机连接服务器ssh 连接跳板机填写跳板机IP,用户名,然后点击“OK”,根据提示输入密码。ssh 通过跳板机连接服务器点击“OK”之后,根据提示输入服务器的密码,(上一步已经保存了跳板机的密码)。建立本地->服务器的tunnelingpycharm 连接服务器开启tunneling,配置解释器。然后 Tools -> deployment -> Configuration -> 选中"用户名@localhost:p

2022-01-20 19:11:33 1215

原创 leetcode 1576. 替换所有的问号

class Solution: def modifyString(self, s: str) -> str: n = len(s) s = list('?' + s + '?') for i in range(1, n + 1): if s[i] != '?': continue else: l = s[i - 1] .

2022-01-06 00:20:18 251

原创 leetcode 1610. 可见点的最大数目 【几何+滑动窗口】

思路:题意是,站在观察点location的位置,在视角angle的范围内,可以看到的最多的点个数,且同一直线遮挡的或者重叠的点可以记为多个。先计算每个点与location的直线与x正轴之间的夹角,并从小到大排序。以每个夹角上的点为视线的起始范围,遍历比它大的角度,寻找能构成最大视角的右边界点。计算夹角可以用math.atan2(y, x), 它的范围为(-pi, pi), 因为视角的范围是360度的环,故给每个角加360度,加入角度列表。code:class Solution: def .

2021-12-17 15:20:07 152

原创 leetcode 630. 课程表 III【贪心+堆排序(优先队列)】

思路:先按结束时间从小到大排序。逐个添加新课程,如果添加新课程后的结束时间大于等于新课程的结束时间,用新课程替换已选课程中持续时间最长且大于新课程的持续时间的课程。如果添加新课程后的结束时间小于新课程的结束时间,说明新课程可以直接选。code:class Solution: def scheduleCourse(self, courses: List[List[int]]) -> int: """先按结束时间从小到大排序。逐个添加新课程,如果添加新课程后的结束时间大于等.

2021-12-15 17:02:39 239

原创 leetcode 794. 有效的井字游戏【数组+思维】

思路:计算正确的可能情况。第一种:O 走最后一步,X和O的个数相等,X则没有形成三连串, O可能形成0~2条三连串。第二种:X 走最后一步,X个数比O多1,O则没有形成三连串,X可能形成0~2条三连串。code:class Solution: def validTicTacToe(self, board: List[str]) -> bool: def judge(board, ch): cnt = 0 for i...

2021-12-09 23:52:03 162

原创 leetcode 1034. 边界着色【BFS】

import queueclass Solution: def colorBorder(self, grid: List[List[int]], row: int, col: int, color: int) -> List[List[int]]: def judeg(grid, x, y, m, n, dir, source): if x == 0 or y == 0 or x == m-1 or y == n-1: .

2021-12-08 11:09:29 94

原创 leetcode 372. 超级次方【同余定理+递推】

思路:递推公式:class Solution: def superPow(self, a: int, b: List[int]) -> int: mod = 1337 ans = 1 a = a % mod for i in b: ans = pow(ans, 10, mod) * pow(a, i, mod ) % mod return ans...

2021-12-06 11:21:00 148

原创 leetcode 400. 第 N 位数字 【数学】

class Solution: def findNthDigit(self, n: int) -> int: """ 统计位数为m的数字的个数,并且乘以m,就等于数字字符串的位数。 """ i = 1 # 整数的位数 cnt = 0 zeros = 0 # 寻找第n位数字可能存在于哪个整数区间 while n > cnt + 9 * pow(10, zero.

2021-12-01 00:08:55 55

原创 leetcode 423.从英文中重建数字【哈希表+字符串】

思路:找出每个数字的英文单词中独特的字符,或独特字符的个数的差。code:"""找出每个数字的英文单词中独特的字符,或独特字符的个数的差"""class Solution: def originalDigits(self, s: str) -> str: ch = ["e","g","f","i","h","o","n","s","r","u","t","w","v","x","z"] # 哈希表。存储每个字符的个数 num = d.

2021-11-24 23:46:15 168

原创 leetcode 1382. 将二叉搜索树变平衡 【二叉搜索树】

思路:首先将二叉搜索树由中序遍历得到有序的节点序列。然后创建一棵平衡二叉树。code:# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution:.

2021-11-13 23:51:40 3492

原创 leetcode 629. K个逆序对数组【dp】

思路:引用一篇不错的推导。由于dp[n, k] 仅由dp[n-1, …] 和 dp[n, …] 转移而来,因此可以对动态规划使用的空间进行优化,即使用两个一维数组交替地进行状态转移,空间复杂度从O(nk)降低为O(k).用dp[j] 表示当前数字i 构成j个逆序对。时间复杂度O(nk).code:class Solution: def kInversePairs(self, n: int, k: int) -> int: mod = int(1e9) + 7

2021-11-12 12:38:46 76

原创 leetcode medium 845. 数组中的最长山脉 【双指针】

思路:将序列分为三种阶段:递增阶段. 持续递增,或者遇到新的递增序列 重置起点。递减阶段. 在前一段是递增的情况下,持续计算起点到当前点的距离。平缓阶段. 重置起点为-1,不可以重置为当前点,否则进入阶段2会产生无峰值的单调递减序列。code:class Solution: def longestMountain(self, arr: List[int]) -> int: start = -1 ans = 0 for i in .

2021-11-09 11:13:37 184

原创 leetcode 367. 有效的完全平方数【二分查找】

code:class Solution: def isPerfectSquare(self, num: int) -> bool: l, r = 0, num while l <= r: mid = (l + r) // 2 if mid * mid == num: return True elif mid * mid < num: .

2021-11-04 23:35:07 69

原创 leetcode 407. 接雨水 II【BFS】

给你一个 m x n 的矩阵,其中的值均为非负整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。示例 1:输入: heightMap = [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]]输出: 4解释: 下雨后,雨水将会被上图蓝色的方块中。总的接雨水量为1+2+1=4。示例 2:输入: heightMap = [[3,3,3,3,3],[3,2,2,2,3],[3,2,1,2,3],[3,2,2,2,3],[3,3,3,3,3]]输

2021-11-04 10:22:40 98

原创 leetcode 260. 只出现一次的数字 III【位运算】

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?示例 1:输入:nums = [1,2,1,3,2,5]输出:[3,5]解释:[5, 3] 也是有效的答案。示例 2:输入:nums = [-1,0]输出:[-1,0]示例 3:输入:nums = [0,1]输出:[1,0]提示:2 <= nums.length &

2021-10-30 23:27:08 98

原创 leetcode 335. 路径交叉【归纳】

给你一个整数数组 distance 。从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。示例 1:![在这里插入图片描述](https://img-blog.csdnimg.cn/d2d984afb9924504b

2021-10-30 17:39:18 143

原创 leetcode 496.下一个更大元素I 【单调栈+哈希表】

给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释:对于 num1 中的数字 4 ,你无法在第二个数组中找到下一个更

2021-10-26 22:54:30 73

原创 leetcode 492.构造矩形

作为一位web开发者, 懂得怎样去规划一个页面的尺寸是很重要的。 现给定一个具体的矩形页面面积,你的任务是设计一个长度为 L 和宽度为 W 且满足以下要求的矩形的页面。要求:你设计的矩形页面必须等于给定的目标面积。宽度 W 不应大于长度 L,换言之,要求 L >= W 。长度 L 和宽度 W 之间的差距应当尽可能小。你需要按顺序输出你设计的页面的长度 L 和宽度 W。示例:输入: 4输出: [2, 2]解释: 目标面积是 4, 所有可能的构造方案有 [1,4], [2

2021-10-23 22:53:17 69

原创 leetcode 229.求众数 II【摩尔投票法】

给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。示例 1:输入:[3,2,3]输出:[3]示例 2:输入:nums = [1]输出:[1]示例 3:输入:[1,1,1,3,3,2,2,2]输出:[1,2]提示:1 <= nums.length <= 5 * 104-109 <= nums[i] <= 109思路:摩尔投票法,分为两盒阶段:配对阶段和计数阶段。如果至多选一个代表,那他的票数至少要超过一半(⌊ 1/2 ⌋)的票数

2021-10-23 10:00:26 81

原创 leetcode 230. 二叉搜索树中第K小的元素【二叉搜索树中序遍历】

给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。示例 1:输入:root = [3,1,4,null,2], k = 1输出:1示例 2:输入:root = [5,3,6,2,4,null,null,1], k = 3输出:3提示:树中的节点数为 n 。1 <= k <= n <= 1040 <= Node.val <= 104进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需

2021-10-17 22:43:37 44

原创 leetcode 29. 两数相除【打表+数学】

分析:避免直接进行乘法、除法和mod取余,以及正确处理溢出问题特殊情况:(如何判断的特殊情况的类别?)1.2.3.一般情况:(为什么是全负数而不是全正数?如何进行二分查找的?)先将两个数都处理成负数,二分查找...

2021-10-13 09:45:51 66

原创 leetcode 5869.两个回文子序列长度的最大乘积【状压DP】

给你一个字符串 s ,请你找到 s 中两个 不相交回文子序列 ,使得它们长度的 乘积最大 。两个子序列在原字符串中如果没有任何相同下标的字符,则它们是 不相交 的。请你返回两个回文子序列长度可以达到的 最大乘积 。子序列 指的是从原字符串中删除若干个字符(可以一个也不删除)后,剩余字符不改变顺序而得到的结果。如果一个字符串从前往后读和从后往前读一模一样,那么这个字符串是一个 回文字符串 。示例 1:![在这里插入图片描述](https://img-blog.csdnimg.cn/c75f6433c7

2021-09-12 21:13:02 154

原创 leetcode 1986.完成任务的最少工作时间段【状压DP】

你被安排了 n 个任务。任务需要花费的时间用长度为 n 的整数数组 tasks 表示,第 i 个任务需要花费 tasks[i] 小时完成。一个 工作时间段中,你可以 至多 连续工作 sessionTime 个小时,然后休息一会儿。你需要按照如下条件完成给定任务:如果你在某一个时间段开始一个任务,你需要在 同一个 时间段完成它。完成一个任务后,你可以 立马 开始一个新的任务。你可以按 任意顺序 完成任务。给你 tasks 和 sessionTime ,请你按照上述要求,返回完成所有任务所需要的 最

2021-09-08 23:37:16 612

原创 动态规划之状压DP

状压DP:状态压缩动态规划,就是我们俗称的状压DP,是利用**计算机二进制(三进制等)**的性质来描述状态的一种DP方式。1.状态压缩使用某种方法,简明扼要的以最小代价表示某种状态,通常是用一串01数字(二进制数)来表示各个点的状态。这就要求使用状态压缩的对象的点的状态必须只有两种,0或1。当有三种状态时用也可用三进制来表示。2.使用条件适用的题目符合以下条件:解法需要保存一定的状态数据(表示一种状态的一个数据值),每个状态数据通常情况下是可以通过2进制来表示的。这就要求状态数据的每个单元只有

2021-09-08 23:21:35 94

原创 牛客 NC99 树的直径

描述给定一棵树,求出这棵树的直径,即树上最远两点的距离。包含n个结点,n-1条边的连通图称为树。示例1的树如下图所示。其中4到5之间的路径最长,是树的直径,距离为5+2+4=11示例1输入:6,[[0,1],[1,5],[1,2],[2,3],[2,4]],[3,4,2,1,5]返回值:11思路:定义简单路径:路径上的所有点至多只访问了一次。树的直径:树的最长的简单路径。算法(1)两次BFS/DFS:先任选一个起点,BFS/DFS找到最长路的终点,再从终点进行第二次BFS

2021-09-07 17:28:09 567 1

原创 leetcode 1314.矩阵区域和【二维前缀和(模板)】

给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和:i - k <= r <= i + k,j - k <= c <= j + k 且(r, c) 在矩阵内。示例 1:输入:mat = [[1,2,3],[4,5,6],[7,8,9]], k = 1输出:[[12,21,16],[27,45,33],[24,39,28]]示例 2:输入

2021-09-05 16:06:01 159

原创 leetcode 1139.最大的以1为边界的正方形

给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。示例 1:输入:grid = [[1,1,1],[1,0,1],[1,1,1]]输出:9示例 2:输入:grid = [[1,1,0,0]]输出:1提示:1 <= grid.length <= 1001 <= grid[0].length <= 100grid[i][j] 为 0 或 1Rel

2021-09-05 16:02:42 135

原创 leetcode 1292.元素之和小于等于阈值的正方形区域的最大边长【二维前缀和+二分查找】

给你一个大小为 m x n 的矩阵 mat 和一个整数阈值 threshold。请你返回元素总和小于或等于阈值的正方形区域的最大边长;如果没有这样的正方形区域,则返回 0 。示例 1:输入:mat = [[1,1,3,2,4,3,2],[1,1,3,2,4,3,2],[1,1,3,2,4,3,2]], threshold = 4输出:2解释:总和小于或等于 4 的正方形的最大边长为 2,如图所示。示例 2:输入:mat = [[2,2,2,2,2],[2,2,2,2,2],[2,2,2,

2021-09-05 15:59:58 128

原创 leetcode 363. 矩形区域不超过 K 的最大数值和【二维前缀和+二分查找】

给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。示例 1:输入:matrix = [[1,0,1],[0,-2,3]], k = 2输出:2解释:蓝色边框圈出来的矩形区域 [[0, 1], [-2, 3]] 的数值和是 2,且 2 是不超过 k 的最大数字(k = 2)。示例 2:输入:matrix = [[2,2,-1]], k = 3输出:3提示:m =

2021-09-05 15:55:00 118

原创 leetcode 面试题 17.24. 最大子矩阵【二维前缀和+最长子序列】

给定一个正整数、负整数和 0 组成的 N × M 矩阵,编写代码找出元素总和最大的子矩阵。返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。注意:本题相对书上原题稍作改动示例:输入:[[-1,0],[0,-1]]输出:[0,1,0,1]解释:输入中标粗的元素即为输出所表示的矩阵说明:1 <= matrix.length, matrix[

2021-09-05 15:51:40 86

原创 leetcode 1074. 元素和为目标值的子矩阵数量【二维前缀和+枚举】

给出矩阵 matrix 和目标值 target,返回元素总和等于目标值的非空子矩阵的数量。子矩阵 x1, y1, x2, y2 是满足 x1 <= x <= x2 且 y1 <= y <= y2 的所有单元 matrix[x][y] 的集合。如果 (x1, y1, x2, y2) 和 (x1’, y1’, x2’, y2’) 两个子矩阵中部分坐标不同(如:x1 != x1’),那么这两个子矩阵也不同。示例 1:输入:matrix = [[0,1,0],[1,1,1],[0,

2021-09-05 15:47:55 91

原创 SortedList【python类】

SortedList 有序序列class sortedcontainers.SortedList(iterable=None, key=None)方法添加值SortedList.add(value) 添加新元素,并排序。时间复杂度O(log(n)).SortedList.update(iterable) 对添加的可迭代的所有元素排序。时间复杂度O(k*log(n)).移除值SortedList.clear() 移除所有元素。时间复杂度O(n).SortedList.disca

2021-09-03 00:53:40 1217

原创 leetcode 930. 和相同的二元子数组【一维前缀和+HashMap】

给你一个二元数组 nums ,和一个整数 goal ,请你统计并返回有多少个和为 goal 的 非空 子数组。子数组 是数组的一段连续部分。示例 1:输入:nums = [1,0,1,0,1], goal = 2输出:4解释:有 4 个满足题目要求的子数组:[1,0,1]、[1,0,1,0]、[0,1,0,1]、[1,0,1]示例 2:输入:nums = [0,0,0,0,0], goal = 0输出:15提示:1 <= nums.length <= 3 * 10

2021-08-30 16:55:39 101

原创 leetcode 523. 连续的子数组和【一维前缀和+Hashmap+同余定理】

给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。0 始终视为 k 的一个倍数。示例 1:输入:nums = [23,2,4,6,7], k = 6输出:true解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 。示

2021-08-30 16:35:20 124 1

原创 leetcode 974. 和可被 K 整除的子数组【一维前缀和+Hashmap+同余定理】

给定一个整数数组 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

2021-08-29 10:38:59 96

原创 leetcode 1248. 统计「优美子数组」【一维前缀和】

给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。示例 1:`输入:nums = [1,1,2,1,1], k = 3输出:2解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。示例 2:输入:nums = [2,4,6], k = 1输出:0解释:数列中不包含任何奇数,所以不存在优美子数组。示例 3:输入:nums = [2,2,2,1,

2021-08-28 23:09:43 102

原创 leetcode 560. 和为K的子数组【一维前缀和】

给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :1.数组的长度为 [1, 20,000]。2.数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。思路:对于元素nums[i]和num[j],i<j,如果前缀和suffix_sum[i]+k == suffix_sum[j],则num

2021-08-28 22:52:07 87

原创 leetcode 724. 寻找数组的中心下标【一维前缀和】

给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3 。左侧数之和 sum = nums[0]

2021-08-28 21:35:23 140

转载 子网掩码的划分和计算详解

一、子网掩码的计算TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会带来两方面的负担:第一,巨大的网络地址管理开销;第二,网关寻径急剧膨胀。其中第二点尤为突出,寻径表的膨胀不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更重要的是将增加内外部路径刷新时的开销,从而加重网络负担。因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。仔细分析发现,网间网规模的增

2021-08-28 14:57:49 30783 4

MATLAB图像处理

《精通MATLAB图像处理》的完整的光盘资源,含基础知识,视频,代码

2018-05-28

商务风PPT模板

商务工作汇报IOS风PPT模板,颜色华丽但又不乱,工作汇报或一般场合使用

2018-05-28

空空如也

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

TA关注的人

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