【leetcode刷题之路】面试经典150题(8)——位运算+数学+一维动态规划+多维动态规划
文章目录
- 20 位运算
- 20.1 【位运算】二进制求和
- 20.2 【位运算】颠倒二进制位
- 20.3 【位运算】位1的个数
- 20.4 【位运算】只出现一次的数字
- 20.5 【哈希表】【位运算】只出现一次的数字 II
- 20.6 【位运算】数字范围按位与
- 21 数学
- 21.1 【双指针】回文数
- 21.2 【数学】加一
- 21.3 【数学】阶乘后的零
- 21.4 【二分】69. x 的平方根
- 21.5 【快速幂】50. Pow(x, n)
- 21.6 【暴力】直线上最多的点数
- 22 一维动态规划
- 22.1 【动态规划】爬楼梯
- 22.2 【动态规划】打家劫舍
- 22.3 【动态规划】单词拆分
- 22.4 【动态规划】零钱兑换
- 22.5 【动态规划】【二分】最长递增子序列
- 23 多维动态规划
- 23.1 【动态规划】三角形最小路径和
- 23.2 【动态规划】最小路径和
- 23.3 【动态规划】不同路径 II
- 23.4 【动态规划】最长回文子串
- 23.5 【动态规划】交错字符串
- 23.6 【动态规划】编辑距离
- 23.7 【三维dp】买卖股票的最佳时机 III
- 23.8 【三维dp】买卖股票的最佳时机 IV
- 23.9 【二维dp】最大正方形
20 位运算
20.1 【位运算】二进制求和
题目地址:https://leetcode.cn/problems/add-binary/description/?envType=study-plan-v2&envId=top-interview-150
按位逆序运算。
class Solution:def addBinary(self, a: str, b: str) -> str:la,lb = len(a)-1,len(b)-1ans = ""flag = 0while la>=0 or lb>=0:num_a = 1 if (la>=0 and a[la]=="1") else 0num_b = 1 if (lb>=0 and b[lb]=="1") else 0cur = num_a + num_b + flagif cur > 1:cur = cur-2flag = 1else:flag = 0ans += str(cur)if la>=0:la -= 1if lb>=0:lb -= 1if flag:ans += "1"ans = ans[::-1]return ans
20.2 【位运算】颠倒二进制位
题目地址:https://leetcode.cn/problems/reverse-bits/description/?envType=study-plan-v2&envId=top-interview-150
详见代码。
class Solution:def reverseBits(self, n: int) -> int:ans = 0for i in range(32):ans = ans << 1ans += n & 1n = n >> 1return ans
20.3 【位运算】位1的个数
题目地址:https://leetcode.cn/problems/number-of-1-bits/description/?envType=study-plan-v2&envId=top-interview-150
详见代码。
class Solution:def hammingWeight(self, n: int) -> int:ans = 0for i in range(32):if n & 1 :ans += 1n = n >> 1return ans
20.4 【位运算】只出现一次的数字
题目地址:https://leetcode.cn/problems/single-number/description/?envType=study-plan-v2&envId=top-interview-150
异或操作。
class Solution:def singleNumber(self, nums: List[int]) -> int:ans = 0for n in nums:ans = ans ^ nreturn ans
20.5 【哈希表】【位运算】只出现一次的数字 II
题目地址:https://leetcode.cn/problems/single-number-ii/description/?envType=study-plan-v2&envId=top-interview-150
方法一:哈希表
方法二:模3运算
# 方法一:哈希表
class Solution:def singleNumber(self, nums: List[int]) -> int:ht = {}for n in nums:if n in ht:ht[n] += 1else:ht[n] = 1for h in ht:if ht[h] == 1:return h
# 方法二:模3运算
class Solution:def singleNumber(self, nums: List[int]) -> int:a,b = 0,0for n in nums:b = (b^n)&(~a)a = (a^n)&(~b)return b
20.6 【位运算】数字范围按位与
题目地址:https://leetcode.cn/problems/bitwise-and-of-numbers-range/description/?envType=study-plan-v2&envId=top-interview-150
找公共前缀。
class Solution:def rangeBitwiseAnd(self, left: int, right: int) -> int:t = 0while left < right:left = left >> 1right = right >> 1t += 1return left << t
21 数学
21.1 【双指针】回文数
题目地址:https://leetcode.cn/problems/palindrome-number/description/?envType=study-plan-v2&envId=top-interview-150
将数字的每一位取出来,然后双指针前后分别判断是否相等。
class Solution:def isPalindrome(self, x: int) -> bool:if x < 0:return Falsenum = []while x>0:n = x % 10num.append(n)x = x // 10left,right = 0,len(num)-1while left < right:if num[left] != num[right]:return Falseleft += 1right -= 1return True
21.2 【数学】加一
题目地址:https://leetcode.cn/problems/plus-one/description/?envType=study-plan-v2&envId=top-interview-150
详见代码。
class Solution:def plusOne(self, digits: List[int]) -> List[int]:l = len(digits)t = 1for i in range(l-1,-1,-1):digits[i] = digits[i] + tif digits[i] > 9:digits[i] -= 10t = 1else:t = 0if t == 1:return [1]+digitselse:return digits
21.3 【数学】阶乘后的零
题目地址:https://leetcode.cn/problems/factorial-trailing-zeroes/description/?envType=study-plan-v2&envId=top-interview-150
统计因子中5的个数即可。
class Solution:def trailingZeroes(self, n: int) -> int:ans = 0while n>0:n = n//5ans += nreturn ans
21.4 【二分】69. x 的平方根
题目地址:https://leetcode.cn/problems/sqrtx/description/?envType=study-plan-v2&envId=top-interview-150
二分查找。
class Solution:def mySqrt(self, x: int) -> int:left,right = 0,x+1while left < right:m = (left+right)//2if m*m == x:return melif m*m < x:left = m+1else:right = mreturn left-1
21.5 【快速幂】50. Pow(x, n)
题目地址:https://leetcode.cn/problems/powx-n/description/?envType=study-plan-v2&envId=top-interview-150
快速幂。
class Solution:def myPow(self, x: float, n: int) -> float:if x == 0.0:return 0.0ans = 1if n < 0:x,n = 1/x,-nwhile n:if n & 1:ans *= xx *= xn = n >> 1return ans
21.6 【暴力】直线上最多的点数
题目地址:https://leetcode.cn/problems/max-points-on-a-line/description/?envType=study-plan-v2&envId=top-interview-150
详见代码。
class Solution:def maxPoints(self, points: List[List[int]]) -> int:n, ans = len(points), 1for i, x in enumerate(points):for j in range(i + 1, n):y = points[j]cnt = 2for k in range(j + 1, n):p = points[k]s1 = (y[1] - x[1]) * (p[0] - y[0])s2 = (p[1] - y[1]) * (y[0] - x[0])if s1 == s2: cnt += 1ans = max(ans, cnt)return ans
22 一维动态规划
22.1 【动态规划】爬楼梯
题目地址:https://leetcode.cn/problems/climbing-stairs/?envType=study-plan-v2&envId=top-interview-150
斐波那契数列求值。
class Solution:def climbStairs(self, n: int) -> int:if n == 1:return 1dp_0,dp_1 = 1,1ans = 0for i in range(2,n+1):ans = dp_0 + dp_1dp_0,dp_1 = dp_1,ansreturn ans
22.2 【动态规划】打家劫舍
题目地址:https://leetcode.cn/problems/house-robber/description/?envType=study-plan-v2&envId=top-interview-150
利用动态规划,首先定义数组 d p [ i ] [ 2 ] dp[i][2] dp[i][2],状态转移如下所示:
- d p [ i ] [ 0 ] dp[i][0] dp[i][0]表示第 i i i家不被偷,则前一家可能被偷,也可能没有被偷,取最大值即可;
- d p [ i ] [ 1 ] dp[i][1] dp[i][1]表示第 i i i家被偷,则前一家一定没有被偷,所以为 d p [ i − 1 ] [ 0 ] + n u m s [ i ] dp[i-1][0]+nums[i] dp[i−1][0]+nums[i]。
最后在第 i i i家的时候取被偷和未被偷之间的最大值即可。
class Solution:def rob(self, nums: List[int]) -> int:n = len(nums)dp_0,dp_1 = 0,nums[0]for i in range(1,n):last_0 = dp_0dp_0 = max(dp_0,dp_1)dp_1 = last_0 + nums[i]return max(dp_0,dp_1)
22.3 【动态规划】单词拆分
题目地址:https://leetcode.cn/problems/word-break/description/?envType=study-plan-v2&envId=top-interview-150
将 w o r d D i c t wordDict wordDict中的单词看成一个个的跳跃长度,代表如果首字母匹配上了,一步可以跳多远,那么最远的距离就是 T r u e True True,最后只需查看满足了所有跳跃规则之后能否到达字符串 s s s的末尾即可。
class Solution:def wordBreak(self, s: str, wordDict: List[str]) -> bool:l = len(s)dp = [False]*(l+1)dp[0] = Truefor i in range(l+1):if dp[i]:for j in range(i+1,l+1):if s[i:j] in wordDict:dp[j] = Truereturn dp[-1]
22.4 【动态规划】零钱兑换
题目地址:https://leetcode.cn/problems/coin-change/description/?envType=study-plan-v2&envId=top-interview-150
动态规划题目的基本做题策略:
- 确定 d p dp dp数组以及下标的含义( d p [ j ] dp[j] dp[j]为凑齐总额为j的钱币的最小次数);
- 确定递推公式( d p [ j ] = m i n ( d p [ j ] , d p [ j − c o i n ] + 1 ) dp[j] = min(dp[j],dp[j-coin]+1) dp[j]=min(dp[j],dp[j−coin]+1));
- d p dp dp数组如何初始化( d p [ 0 ] dp[0] dp[0]为 0 0 0,剩下的初始化为最大钱币金额 + 1 +1 +1);
- 确定遍历顺序。
class Solution:def coinChange(self, coins: List[int], amount: int) -> int:dp = [amount+1]*(amount+1)dp[0] = 0for j in range(1,amount+1):for coin in coins:if j >= coin:dp[j] = min(dp[j],dp[j-coin]+1)if dp[amount] < amount+1:return dp[amount]else:return -1
22.5 【动态规划】【二分】最长递增子序列
题目地址:https://leetcode.cn/problems/longest-increasing-subsequence/description/?envType=study-plan-v2&envId=top-interview-150
方法一:动态规划,构造 d p [ i ] dp[i] dp[i]表示 i i i索引为序列末尾元素的最长序列长度。
方法二:二分查找,维护一个递增序列 a r r arr arr,遍历时取小的放入序列中,最后返回序列长度。
# 动态规划
class Solution:def lengthOfLIS(self, nums: List[int]) -> int:l = len(nums)dp = [1]*ldp_max = 1for i in range(1,l):for j in range(0,i):if nums[j] < nums[i]:dp[i] = max(dp[i],dp[j]+1)dp_max = max(dp_max,dp[i])return dp_max# 二分查找
class Solution:def lengthOfLIS(self, nums: List[int]) -> int:arr = [0]*len(nums)ans = 0for num in nums:left,right = 0,answhile left < right:mid = (left+right) // 2if arr[mid] < num:left = mid + 1else:right = midarr[left] = numif right == ans:ans += 1return ans
23 多维动态规划
23.1 【动态规划】三角形最小路径和
题目地址:https://leetcode.cn/problems/triangle/description/?envType=study-plan-v2&envId=top-interview-150
自底向上进行动态规划,每次都选择下一层的 k k k和 k + 1 k+1 k+1之间最小的数与该层的数相加,最后返回 d p [ 0 ] dp[0] dp[0]即可。
class Solution:def minimumTotal(self, triangle: List[List[int]]) -> int:l = len(triangle)dp = [0]*lfor i in range(len(triangle[-1])):dp[i] = triangle[-1][i]for j in range(l-2,-1,-1):for k in range(j+1):dp[k] = min(dp[k],dp[k+1]) + triangle[j][k]return dp[0]
23.2 【动态规划】最小路径和
题目地址:https://leetcode.cn/problems/minimum-path-sum/description/?envType=study-plan-v2&envId=top-interview-150
每次遍历时找出两个步骤的最小值,然后相加,也是自顶向下的思路。
class Solution:def minPathSum(self, grid: List[List[int]]) -> int:row = len(grid)col = len(grid[0])for i in range(1,col):grid[0][i] += grid[0][i-1]for j in range(1,row):grid[j][0] += grid[j-1][0]for i in range(1,row):for j in range(1,col):grid[i][j] += min(grid[i][j-1],grid[i-1][j])return grid[row-1][col-1]
23.3 【动态规划】不同路径 II
题目地址:https://leetcode.cn/problems/unique-paths-ii/description/?envType=study-plan-v2&envId=top-interview-150
计算可以走到每个格子的路线数,最后相加。
class Solution:def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:row = len(obstacleGrid)col = len(obstacleGrid[0])dp = [[0]*col for _ in range(row)]for i in range(row):for j in range(col):if not obstacleGrid[i][j]:if i == j == 0:dp[i][j] = 1else:up = dp[i-1][j] if i>0 else 0left = dp[i][j-1] if j>0 else 0dp[i][j] = up + leftreturn dp[-1][-1]
23.4 【动态规划】最长回文子串
题目地址:https://leetcode.cn/problems/longest-palindromic-substring/description/?envType=study-plan-v2&envId=top-interview-150
d p [ i ] [ j ] dp[i][j] dp[i][j]表示 s [ i : j + 1 ] s[i:j+1] s[i:j+1]是否为回文子串,状态转移的思路是,如果 d p [ i + 1 ] [ j − 1 ] dp[i+1][j-1] dp[i+1][j−1]为 T r u e True True并且 s [ i ] = = s [ j ] s[i]==s[j] s[i]==s[j]的话,那么 d p [ i ] [ j ] dp[i][j] dp[i][j]也为 T r u e True True,在每个为 T r u e True True的情况下记录此时字符串的长度,同时更新初始坐标,最后选择最长的子串即可。
class Solution:def longestPalindrome(self, s: str) -> str:l = len(s)dp = [[0]*l for _ in range(l)]max_len = 1start = 0for j in range(1,l):for i in range(j):# (j-1)-(i+1) <= 0if j-i <= 2:if s[i] == s[j]:dp[i][j] = 1cur_len = j-i+1else:if s[i] == s[j] and dp[i+1][j-1]:dp[i][j] = 1cur_len = j-i+1if dp[i][j] and cur_len > max_len:max_len = cur_lenstart = ireturn s[start:start+max_len]
23.5 【动态规划】交错字符串
题目地址:https://leetcode.cn/problems/interleaving-string/description/?envType=study-plan-v2&envId=top-interview-150
d p [ i ] [ j ] dp[i][j] dp[i][j]表示 s 1 s_1 s1的前 i i i个字符和 s 2 s2 s2的前 j j j个字符能否构成 s 3 s3 s3的前 i + j i+j i+j个字符。
class Solution:def isInterleave(self, s1: str, s2: str, s3: str) -> bool:l1 = len(s1)l2 = len(s2)l3 = len(s3)if l1 + l2 != l3:return Falsedp = [[False]*(l2+1) for _ in range(l1+1)]dp[0][0] = Truefor i in range(1,l1+1):dp[i][0] = (dp[i-1][0] and s1[i-1]==s3[i-1])for i in range(1,l2+1):dp[0][i] = (dp[0][i-1] and s2[i-1]==s3[i-1])for i in range(1,l1+1):for j in range(1,l2+1):dp[i][j] = (dp[i-1][j] and s1[i-1]==s3[i+j-1]) or (dp[i][j-1] and s2[j-1]==s3[i+j-1])return dp[-1][-1]
23.6 【动态规划】编辑距离
题目地址:https://leetcode.cn/problems/edit-distance/description/?envType=study-plan-v2&envId=top-interview-150
详见代码注释。
class Solution:def minDistance(self, word1: str, word2: str) -> int:l1 = len(word1)l2 = len(word2)# 初始化dp,dp[i][j]表示从word1[:i]到word2[:j]所需要转换的次数dp = [[0]*(l2+1) for _ in range(l1+1)]# 此时word2为空,则word1需要转换的次数为此时的长度for i in range(l1+1):dp[i][0] = i# 此时word2为空,则word1需要转换的次数为此时的长度for j in range(l2+1):dp[0][j] = j# 首先判断i和j索引处的字符是否相同,如果相同,则dp[i][j]=dp[i-1][j-1]# 否则不管是删除还是替换,都会在之前的基础上改变一位字符,# 则dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1for i in range(1,l1+1):for j in range(1,l2+1):if word1[i-1] == word2[j-1]:dp[i][j] = dp[i-1][j-1]else:dp[i][j]=min(dp[i-1][j-1],dp[i-1][j],dp[i][j-1])+1return dp[-1][-1]
23.7 【三维dp】买卖股票的最佳时机 III
题目地址:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/?envType=study-plan-v2&envId=top-interview-150
详见代码注释。
class Solution:def maxProfit(self, prices: List[int]) -> int:l = len(prices)# dp[第几天][是否持有股票][已经卖了几次股票]dp = [[[0,0,0],[0,0,0]] for _ in range(l)]# 第一天初始化dp[0][0][0] = 0dp[0][0][1] = -float('inf')dp[0][0][2] = -float('inf')dp[0][1][0] = -prices[0]dp[0][1][1] = -float('inf')dp[0][1][2] = -float('inf')# 接下来几天状态更新for i in range(1,l):# 未持有股票,已经卖了0次股票dp[i][0][0] = 0# 未持有股票,已经卖了1次股票:可能是今天卖的,也可能是前几天卖的dp[i][0][1] = max(dp[i-1][1][0]+prices[i],dp[i-1][0][1])# 未持有股票,已经卖了2次股票:可能是今天卖的,也可能是前几天卖的dp[i][0][2] = max(dp[i-1][1][1]+prices[i],dp[i-1][0][2])# 已持有股票,已经卖了0次股票:可能是今天买的,也可能是前几天买的dp[i][1][0] = max(dp[i-1][0][0]-prices[i],dp[i-1][1][0])# 已持有股票,已经卖了1次股票:可能是今天买的,也可能是前几天买的dp[i][1][1] = max(dp[i-1][0][1]-prices[i],dp[i-1][1][1])# 已持有股票,已经卖了2次股票dp[i][1][2] = -float('inf')return max(dp[l-1][0][1],dp[l-1][0][2],0)
23.8 【三维dp】买卖股票的最佳时机 IV
题目地址:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iv/description/?envType=study-plan-v2&envId=top-interview-150
详见代码注释。
class Solution:def maxProfit(self, k: int, prices: List[int]) -> int:# dp[第几天][已经完成几笔交易][是否持股]l = len(prices)dp = [[[0]*2 for _ in range(k+1)] for _ in range(l)]for i in range(1,k+1):dp[0][i][1] = -prices[0]for i in range(1,l):for j in range(1,k+1):# 未持股:今天卖掉了,或者昨天也未持股dp[i][j][0] = max(dp[i-1][j][1]+prices[i],dp[i-1][j][0])# 持股:今天买入股票,或者昨天持股dp[i][j][1] = max(dp[i-1][j-1][0]-prices[i],dp[i-1][j][1])return dp[l-1][k][0]
23.9 【二维dp】最大正方形
题目地址:https://leetcode.cn/problems/maximal-square/submissions/515490547/?envType=study-plan-v2&envId=top-interview-150
详见代码注释。
class Solution:def maximalSquare(self, matrix: List[List[str]]) -> int:max_length = 0row = len(matrix)col = len(matrix[0])# dp[i][j]表示matrix[:i][:j]的正方形最大边长dp = [[0]*(col+1) for _ in range(row+1)]# 状态转移为在左、上、左上中取最小值+1,因为需要保证正方形内所有元素均为1for i in range(1,row+1):for j in range(1,col+1):if matrix[i-1][j-1] == "1":dp[i][j] = min(dp[i-1][j],dp[i][j-1],dp[i-1][j-1]) + 1max_length = max(max_length,dp[i][j])return max_length*max_length
相关文章:

【leetcode刷题之路】面试经典150题(8)——位运算+数学+一维动态规划+多维动态规划
文章目录 20 位运算20.1 【位运算】二进制求和20.2 【位运算】颠倒二进制位20.3 【位运算】位1的个数20.4 【位运算】只出现一次的数字20.5 【哈希表】【位运算】只出现一次的数字 II20.6 【位运算】数字范围按位与 21 数学21.1 【双指针】回文数21.2 【数学】加一21.3 【数学】…...

JetBrains全家桶激活,分享 WebStorm 2024 激活的方案
大家好,欢迎来到金榜探云手! WebStorm公司简介 JetBrains 是一家专注于开发工具的软件公司,总部位于捷克。他们以提供强大的集成开发环境(IDE)而闻名,如 IntelliJ IDEA、PyCharm、和 WebStorm等。这些工具…...

Sublime 彻底解决中文乱码
1. 按ctrl,打开Console,输入如下代码: import urllib.request,os; pf Package Control.sublime-package; ipp sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHand…...

复旦大学EMBA校友出席两会建言献策助力中国发展
阳春三月,备受瞩目的全国两会如期召开。期间,复旦大学EMBA多位校友作为第十四届全国人民代表大会代表、第十四届全国政协委员与全国各地代表共商国是。 无论是作为大型央企负责人,还是作为科创企业的中坚力量,复旦大学EM…...

virtualbox导入vdi
新建虚拟机 点击新建 输入新建属性 配置cpu和内存 虚拟硬盘 这里选择已有的vdi文件 摘要 这里点击完成 虚拟机添加成功 点击启动,启动虚拟机 注意 这个时候的ip,还是以前镜像的ip,如果两个镜像一起启动,则需要修 改ip地…...

【信号处理】基于DGGAN的单通道脑电信号增强和情绪检测(tensorflow)
关于 情绪检测,是脑科学研究中的一个常见和热门的方向。在进行情绪检测的分类中,真实数据不足,经常导致情绪检测模型的性能不佳。因此,对数据进行增强,成为了一个提升下游任务的重要的手段。本项目通过DCGAN模型实现脑…...

使用 Docker Compose 部署 Spring Boot 应用
使用 Docker Compose 部署 Spring Boot 应用 第一步:创建 Spring Boot 应用的 Dockerfile 在您的 Spring Boot 项目根目录中创建一个 Dockerfile。 编辑 Dockerfile,添加以下内容: # 基础镜像使用 OpenJDK FROM openjdk:11-jdk-slim# 维护者…...

nginx 正向代理 https
问题背景 因为网络环境受限,应用服务器无法直接访问外网,需要前置机上中转一下,这种情况可在应用服务器修改/etc/hosts文件指向前置机,在前置机上的nginx设置四层代理,从而出站。 方案 根据How to Use NGINX as an …...

vue3从其他页面跳转页面头部组件菜单el-menu菜单高亮
主要代码 import { ref, onMounted, watch } from vue; const activeIndex ref("/"); const route useRoute();onMounted(() > {updateActiveMenu(); });watch(() > route.path, updateActiveMenu);function updateActiveMenu() {// 根据路由更新activeMenu…...

python 条件循环语句
python 条件循环语句 一、条件控制语句1. Python3 条件控制2. if 语句3. if 嵌套4. match...case5. 注意: 二、循环控制语句1. Python3 循环语句2. while 循环3. 无限循环4. while 循环使用 else 语句5. 简单语句组6. for 语句7. for...else8. break 和 continue 语…...

CIM搭建实现发送消息的效果
目录 背景过程1、下载代码2、进行配置3、直接启动项目4、打开管理界面5、启动web客户端实例项目6、发送消息 项目使用总结 背景 公司项目有许多需要发送即时消息的场景,之前一直采用的是传统的websocket连接,它会存在掉线严重,不可重连&…...

C++第十三弹---内存管理(下)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、operator new与operator delete函数 1.1、operator new与operator delete函数 2、new和delete的实现原理 2.1、内置类型 2.2、自定义类型 …...

Python爬虫学习完整版
一、什么是爬虫 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或者脚本。由于互联网数据的多样性和资源的有限性,根据用户需求定向抓取相关网页并分析也成为如今主流的爬取策略。 1 爬虫可以做什么 你可以爬取网络上的的图片&#…...

JavaScript中的继承方式详解
Question JavaScript实现继承的方式? 包含原型链继承、构造函数继承、组合继承、原型式继承、寄生式继承、寄生组合式继承和ES6 类继承 JavaScript实现继承的方式 在JavaScript中,实现继承的方式多种多样,每种方式都有其优势和适用场景。以下…...

Git基础(23):Git分支合并实战保姆式流程
文章目录 前言准备正常分支合并1. 创建两个不冲突分支2. 将dev合并到test 冲突分支合并1. 制造分支冲突2. 冲突合并 前言 Git分支合并操作 准备 这里先在Gitee创建了一个空仓库,方便远程查看内容。 正常分支合并 1. 创建两个不冲突分支 (1…...

为什么有些前端一直用 div 当按钮,而不是用 button?
1. HTML 中的 <div> 和 <button> 在了解为什么有些前端开发者更喜欢使用 <div> 作为按钮之前,让我们先来了解一下 <div> 和 <button> 标签在 HTML 中的作用和区别。 <div>:是 HTML 中的一个通用容器元素࿰…...

python实战之基础篇(一)
1. 注释 # coding utf-8 # 该注释放到文件第一行, 这个注释告诉python解释器该文件的编码集是UTF-82. 导入语句有三种形式 import <模块名> from <模块名> import <代码元素> from <模块名> import <代码元素> as <代码元素别名>3. 获取…...

第十四届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组(补题)
文章目录 1 日期统计2 01串的熵3 冶炼金属4 飞机降落5 接龙数列6 岛屿个数7 子串简写8 整数删除9 景区导游10 砍树 前言:时隔一年,再次做这套题(去年参赛选手),差点道心不稳T_T,故作此补题! 1 日期统计 没写出来&…...

蓝桥杯刷题--python-32
4964. 子矩阵 - AcWing题库 from collections import deque n, m, a, b map(int, input().split()) mod 998244353 nums [] for _ in range(n): nums.append(list(map(int, input().split()))) rmin [[0 for i in range(m)] for i in range(n)] rmax [[0 for i in ran…...

单例模式如何保证实例的唯一性
前言 什么是单例模式 指一个类只有一个实例,且该类能自行创建这个实例的一种创建型设计模式。使用目的:确保在整个系统中只能出现类的一个实例,即一个类只有一个对象。对于频繁使用的对象,“忽略”创建时的开销。特点:…...

IntelliJ IDE 插件开发 | (七)PSI 入门及实战(实现 MyBatis 插件的跳转功能)
系列文章 IntelliJ IDE 插件开发 |(一)快速入门IntelliJ IDE 插件开发 |(二)UI 界面与数据持久化IntelliJ IDE 插件开发 |(三)消息通知与事件监听IntelliJ IDE 插件开发 |(四)来查收…...

【教程】iOS如何抓取HTTP和HTTPS数据包经验分享
📱 在日常的App开发和研发调研中,对各类App进行深入的研究分析时,我们需要借助专业的抓包应用来协助工作。本文将介绍如何使用iOS手机抓包工具来获取HTTP和HTTPS数据包,并推荐一款实用的抓包应用——克魔助手,希望能够…...

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告
基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…...

Spring Cloud Gateway Server MVC
之前你如果要用spring cloud gateway ,就必须是webflux 的,也就是必须是异步响应式编程。不能和spring mvc 一起使用。现在spring cloud 新出了一个可以不用webflux的gateway。 具体使用mvc的gateway步骤如下 普通的Eureka Client的项目 如果你只是想测…...

建立动态MGRE隧道的配置方法
目录 一、实验拓扑 1.1通用配置 1.1.1地址配置 1.1.2静态缺省指向R5,实现公网互通 1.1.3MGRE协议配置 1.1.4配置静态 二、Shortcut方式 三、Normal方式(非shortcut) 四、总结 一、实验拓扑 下面两种配置方法皆使用静态方式 1.1通用配…...

【MySQL】9. 内置函数
函数 1. 日期函数 获得年月日: mysql> select current_date(); ---------------- | current_date() | ---------------- | 2024-03-23 | ---------------- 1 row in set (0.00 sec)获得时分秒: mysql> select current_time(); ------------…...

芯片工程系列(5)2.5D 3D封装
0 英语缩写 硅通孔(Through Silicon Via,TSV)硅中介层(Silicon Interposer)物理气象沉淀法(Physical Vapor Deposition,PVD)DRIE、CVD、PVD、CMP等设备CoWoS(Chip on Wa…...

KubeSphere简单介绍及安装使用
KubeSphere 概述 官网地址:https://kubesphere.io/zh/ 什么是 kubesphere KubeSphere 是一个开源的多云容器管理平台,旨在简化企业级 k8s 集群的部署、管理和运维。它提供了一个可视化的管理界面,帮助用户更轻松地管理和监控 k8s 集群&…...

Java零基础-集合:Java 8新增的集合操作
哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…...

C++经典面试题目(七)
1、什么是引用?请解释引用的概念和用法。 当谈论引用时,指的是在 C 中的一种类型。引用提供了对变量的别名,它允许通过不同的名称访问同一个变量。引用在 C 中常用于函数参数传递、返回值传递和操作符重载等场景。 引用的概念和用法&#x…...