华为高频手撕冲刺
简单题
两数之和
方法一,暴力破解,时间复杂度O(n^2),空间复杂度O(1)
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:n=len(nums)for i in range(n):for j in range(i+1,n):if nums[i]+nums[j]==target:return[i,j]
方法二,哈希表,时间复杂度O(n),空间复杂度O(n)
思路:向右枚举j,将值和下标存入哈希表,然后再枚举左边的数i,找到对应下标。
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:h={}# 向右枚举j,将值和下标存入哈希表,然后再枚举左边的数i,找到对应下标for j,x in enumerate(nums):if target-x in h:return [h[target-x],j] h[x]=j
移动零
方法一:把非零数都移到前面,其他数都赋值为0
时间复杂度:O(n),空间复杂度O(1)
class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""i=0for j in range(len(nums)):if nums[j]!=0:nums[i]=nums[j]i+=1for x in range(i,len(nums)):nums[x]=0return nums
方法二: 双指针
思路:快慢指针,快指针在前面遍历,如果找到非零数,就与慢指针交换,慢指针向前走一步,直到所有非零元素都移动到前面。
时间复杂度O(n),空间复杂度O(1)
class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""l=0for r in range(len(nums)):if nums[r]!=0:nums[l],nums[r]=nums[r],nums[l]l+=1return nums
反转字符串
双指针
左右指针,互相交换,然后各走一步,遍历完就完成了反转
class Solution:def reverseString(self, s: List[str]) -> None:"""Do not return anything, modify s in-place instead."""l,r=0,len(s)-1while l<r:s[l],s[r]=s[r],s[l]l+=1r-=1return s
同构字符串
思路:index方法,遍历每一个字符,然后判断每一个字符首次出现的下标是否相等,如果相等的话,则是同构,不同的话则不是同构。
最坏的情况,因为index本身复杂度是n,时间复杂度O(n^2),空间复杂度O(1)
class Solution:def isIsomorphic(self, s: str, t: str) -> bool:for i in range(len(s)):if s.index(s[i]) != t.index(t[i]):return Falsereturn True
反转链表
思路:反转链表后,意思就是指针更改方向,创建一个pre指针赋为None,创建一个cur指针赋值为头,让cur指针指向pre指针,然后再移动。最后返回pre指针即链表的新头节点。
注意:要存储cur指向的指针,不然会断开后面的连接
时间复杂度O(n),空间复杂度O(1)
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:pre=Nonecur=headwhile cur:temp=cur.nextcur.next=prepre=curcur=tempreturn pre
字符串相加
双指针,让两个指针指向尾部,模拟人工加法,处理好进位,然后再拼接起来
class Solution:def addStrings(self, num1: str, num2: str) -> str:res=""i,j,carry=len(num1)-1,len(num2)-1,0while i>=0 or j >=0:# 超出索引范围直接赋值为0,相当于长度短的数字前面填0,方便后续计算n1=int(num1[i]) if i>=0 else 0n2=int(num2[j]) if j>=0 else 0temp=n1+n2+carrycarry = temp//10res=str(temp%10)+resi,j=i-1,j-1# 循环结束时,如果carry为1,则加到头部,没有则直接返回结果return "1"+res if carry else res
找出字符串中第一个匹配项的下标
方法一:直接用Python的内置函数index或者find,可以用来寻找字符串中子串,如果能找到,则返回第一个下标,否则抛出异常。
时间复杂度O(n)
class Solution:def strStr(self, haystack: str, needle: str) -> int:try:return haystack.index(needle)except:return -1
方法二:切片
class Solution:def strStr(self, haystack: 'str', needle: 'str') -> 'int':for i in range(0, len(haystack) - len(needle) + 1):if haystack[i:i+len(needle)] == needle:return ireturn -1
最长和谐子序列
方法一:哈希表存储,用HashMap统计个数后,遍历的时候直接判断有没有相邻的数的个数统计答案即可
class Solution:def findLHS(self, nums: List[int]) -> int:cnt = defaultdict(int)ans=0for num in nums:cnt[num]+=1if num+1 in cnt:ans=max(ans,cnt[num]+cnt[num+1])if num-1 in cnt:ans=max(ans,cnt[num]+cnt[num-1])return ans
方法二:排序+双指针时间复杂度O(nlog(n)),空间复杂度O(1)
class Solution:def findLHS(self, nums: List[int]) -> int:nums.sort()left=0res=0for right in range(len(nums)):if nums[right]-nums[left]>1:left+=1if nums[right]-nums[left]==1:res=max(res,right-left+1)return res
存在重复元素
方法一:哈希集合,将数组转化为集合(会去掉重复元素),然后判断前后长度是否一致
class Solution:def containsDuplicate(self, nums: List[int]) -> bool:s=set(nums)if len(s)!=len(nums):return Trueelse:return False
方法二:哈希表
class Solution:def containsDuplicate(self, nums: List[int]) -> bool:numset={}for i in nums:if i not in numset:numset[i]=1else:return Truereturn False
字符串中的第一个唯一字符
方法一:Counter法,统计字符串中每一个字符出现次数,然后遍历到第一个字符直接返回下标
时间复杂度:O(n^2),空间复杂度O(1)
class Solution:def firstUniqChar(self, s: str) -> int:l=Counter(s)for i in s:if l[i]==1:return s.index(i)return -1
方法二:哈希表,用哈希表存储每个字符,如果出现次数大于1则值为False,等于1则为True
class Solution:def firstUniqChar(self, s: str) -> int:dic = {}for c in s:dic[c] = not c in dicfor i, c in enumerate(s):if dic[c]: return ireturn -1
罗马数字转整数
删除排序链表中的重复元素
快慢双指针,让快指针在前面探路,发现不重复元素,就放到慢指针后面,慢指针就往前一步,一直到遍历完整张表。此时从head到slow都是不重复元素,再断开slow后面的指针,即可去重。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:slow,fast=head,headif head is None:return Nonewhile fast:if fast.val!=slow.val:slow.next=fastslow=slow.nextfast=fast.nextslow.next=Nonereturn head
删除排序数组中的重复元素
快慢指针,同上一题
class Solution:def removeDuplicates(self, nums: List[int]) -> int:if len(nums)==0:return 0slow,fast=0,0while fast<len(nums):if nums[fast]!=nums[slow]:slow+=1nums[slow]=nums[fast]fast+=1return slow+1
最长公共前缀
方法一:Python内置函数zip,可以把多个序列中的元素打包成一个元组,zip(*可迭代对象)
例如,flower,float,flew是三个数,使用zip函数处理后,
[f,f,f],[l,l,l].[o,o,e]...,因此只需要判断这些序列去重后长度是否为1,即可判断是否能作为公共前缀
class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:l=0for i in zip(*strs):if len(set(i))>1:breakl+=1return strs[0][:l]
有效的括号
括号匹配,用栈来做最佳
方法一:栈+if-else循环
时间复杂度O(n),空间复杂度是O(n)
class Solution:def isValid(self, s: str) -> bool:if len(s)%2!=0:return Falsestk=[]for c in s:if c=="(":stk.append(")")elif c=="[":stk.append("]")elif c=="{":stk.append("}")elif not stk or stk.pop()!=c:return Falsereturn not stk
方法二:栈+哈希表
思路:使用哈希表存储,键是左括号,值是右括号,遍历字符串,当遍历字符在哈希表中,将值压入栈中;如果栈为空,说明只有右括号,或者出栈元素跟当前元素不同,说明不匹配。
时空复杂度都是O(n)
class Solution:def isValid(self, s: str) -> bool:if len(s)%2!=0:return Falsestk=[]mp={'(':')','[':']','{':'}'}for c in s:if c in mp:stk.append(mp[c])elif not stk or stk.pop()!=c:return Falsereturn not stk
反转字符串中的元音字母
对撞双指针,将元音字母顺序交换
class Solution:def reverseVowels(self, s: str) -> str:# a e i o u #元音元素dic = {'a','e','i','o','u','A','E','I','O','U'} #大小写元音元素集合作为判断依据pol = 0 #左指针por = len(s)-1 #右指针s_ = list(s) #str类型数据无法直接查询in和not in,转换为listwhile pol < por: #左右指针交错循环停止if s_[pol] in dic and s_[por] in dic: #左右指针所指元素均在集合中s_[pol], s_[por] = s_[por], s_[pol] #交换左右指针所指元素por -= 1 #右指针左移pol += 1 #左指针右移if s_[por] not in dic: #右指针所指元素不在集合中por -= 1 #右指针左移if s_[pol] not in dic: #左指针所指元素不在集合中pol += 1 #左指针右移return ''.join(s_) #返回str格式数据
二进制转十进制
def binary_to_decimal(binary_array):# 将数组转换成字符串binary_str = ''.join(str(bit) for bit in binary_array)# 判断是否为负数is_negative = binary_str[0] == '1'if is_negative:# 对于负数,转换为原码后计算inverted = ['0' if b == '1' else '1' for b in binary_str]inverted_str = ''.join(inverted)# 加1操作decimal_value = -int(inverted_str, 2) + 1else:# 正数直接转换decimal_value = int(binary_str, 2)return decimal_value# 示例
binary_array = [1, 1, 1, 1] # 表示-1(假设字长为4)
print(binary_to_decimal(binary_array)) # 输出: -1
反转二叉树
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def invertTree(self, root: TreeNode) -> TreeNode:if not root:return Nonequeue=[root]while queue:node=queue.pop(0)if node.left:queue.append(node.left)if node.right:queue.append(node.right)node.left,node.right=node.right,node.leftreturn root
二叉树的中序遍历
快乐数
中等题
三数之和
先给数组排序,固定好一个值,再创建两个对撞指针,遍历整张表,然后删除重复的元素。
class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:nums.sort()res = []n=len(nums)for i in range(n-2):x=nums[i]if i>0 and x==nums[i-1]:continuel=i+1r=n-1while l<r:s=x+nums[l]+nums[r]if s<0:l+=1elif s>0:r-=1else:res.append([x,nums[l],nums[r]])l+=1# 删除重复元素while l<r and nums[l]==nums[l-1]:l+=1r-=1while l<r and nums[r]==nums[r+1]:r-=1return res
反转字符串中的单词
class Solution:def reverseWords(self, s: str) -> str:# 删除首尾空格s=s.strip()# 分割字符串strs=s.split()# 翻转单词列表strs.reverse()return " ".join(strs)
合并区间
两数相加
新建一个链表,使用虚拟头结点,然后计算两条链表的值,处理好进位
# 注意:python 代码由 chatGPT🤖 根据我的 java 代码翻译。
# 本代码的正确性已通过力扣验证,如有疑问,可以对照我的 java 代码查看。class Solution:def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:# 在两条链表上的指针p1, p2 = l1, l2# 虚拟头结点(构建新链表时的常用技巧)dummy = ListNode(-1)# 指针 p 负责构建新链表p = dummy# 记录进位carry = 0# 开始执行加法,两条链表走完且没有进位时才能结束循环while p1 is not None or p2 is not None or carry > 0:# 先加上上次的进位val = carryif p1 is not None:val += p1.valp1 = p1.nextif p2 is not None:val += p2.valp2 = p2.next# 处理进位情况carry = val // 10val = val % 10# 构建新节点p.next = ListNode(val)p = p.next# 返回结果链表的头结点(去除虚拟头结点)return dummy.next
无重复字符的最长子串
滑动窗口
class Solution:def lengthOfLongestSubstring(self, s: str) -> int:ans = left = 0window = set() # 维护从下标 left 到下标 right 的字符for right, c in enumerate(s):# 如果窗口内已经包含 c,那么再加入一个 c 会导致窗口内有重复元素# 所以要在加入 c 之前,先移出窗口内的 cwhile c in window: # 窗口内有 cwindow.remove(s[left])left += 1 # 缩小窗口window.add(c) # 加入 cans = max(ans, right - left + 1) # 更新窗口长度最大值return ans
每日温度
创建一个列表,创建一个空单调栈,倒着遍历温度,如果当前栈中元素小于当前温度,则出栈,直到找到大于当前温度的元素,如果栈为空说明没有,则赋值为0,否则赋值为栈顶元素-当前下标
时间复杂度O(n),空间复杂度是O(n)
class Solution:def dailyTemperatures(self, temperatures):n = len(temperatures)res = [0]*n# 这里放元素索引,而不是元素s = []# 单调栈模板for i in range(n-1, -1, -1):while s and temperatures[s[-1]] <= temperatures[i]:s.pop()# 得到索引间距res[i] = 0 if not s else s[-1] - i# 将索引入栈,而不是元素s.append(i)return res
删除排序链表中重复元素II
class Solution:def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:cur = dummy = ListNode(next=head)while cur.next and cur.next.next:val = cur.next.valif cur.next.next.val == val:while cur.next and cur.next.val == val:cur.next = cur.next.nextelse:cur = cur.nextreturn dummy.next
跳跃游戏
思路:初始化一个值,表示当前能到达的最大位置,然后遍历nums,如果max_i大于当前下标,且i+jump大于当前能到达最大位置,则更新,最后输出能否到达尾部。
时间复杂度O(n),空间复杂度O(1)
class Solution:def canJump(self, nums: List[int]) -> bool:max_i=0for i,jump in enumerate(nums):if max_i>=i and i+jump>max_i:max_i=i+jumpreturn max_i>=len(nums)-1
和为K的子数组
class Solution:def subarraySum(self, nums: List[int], k: int) -> int:s = [0] * (len(nums) + 1)for i, x in enumerate(nums):s[i + 1] = s[i] + xans = 0cnt = defaultdict(int)for sj in s:ans += cnt[sj - k]cnt[sj] += 1return ans
买卖股票的最佳时机
class Solution:def maxProfit(self, prices: List[int]) -> int:ans = 0min_pirce = prices[0]for p in prices:ans = max(ans, p - min_pirce)min_pirce = min(min_pirce, p)return ans
救生艇
class Solution:def numRescueBoats(self, people: List[int], limit: int) -> int:if people is None or len(people)==0:return 0# 创建对撞指针p1 = 0p2 = len(people)-1res = 0people.sort()while p1<=p2:# 如果头和尾相加小于限制,则头指针+1,表示可以坐一艘船if people[p1]+people[p2]<=limit:p1+=1# 如果超重,则尾指针-1,表示尾部单独坐一艘船p2-=1res+=1return res
整数转罗马数字
R = (("", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"), # 个位("", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"), # 十位("", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"), # 百位("", "M", "MM", "MMM"), # 千位
)class Solution:def intToRoman(self, num: int) -> str:return R[3][num // 1000] + R[2][num // 100 % 10] + R[1][num // 10 % 10] + R[0][num % 10]
零钱兑换II
最后一块石头的重量II
相关文章:

华为高频手撕冲刺
简单题 两数之和 方法一,暴力破解,时间复杂度O(n^2),空间复杂度O(1) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:nlen(nums)for i in range(n):for j in range(i1,n):if nums[i]nums[j]target:retur…...

如何优雅的通过Spring Boot+Redission对订单实现定时关闭
简介 在电子商务及支付相关平台中,常规流程是首先生成订单或支付请求,用户随后会在规定时间内完成支付。如果用户未能在预设时限内完成支付动作,系统通常会执行相应的过期处理机制,即自动取消未支付的订单。 此外,这…...

二、IPD 的定义与背景
IPD 的定义与背景 1. IPD的定义 集成产品开发(Integrated Product Development,简称IPD)是一种系统化的产品开发模式,强调市场需求导向和跨职能团队的紧密合作,通过并行工程缩短开发周期、降低开发风险和成本。其核心目标是提高产品的市场竞争力,确保产品在开发各阶段都…...

STM32CubeMX初始生成工程
STM32CubeMX初始生成工程 STM32CubeMX软件可以很容易的配置STM32 MCU,例如引脚配置(Pins)、时钟树(Clock Tree)、外设(Peripherals)、中间件(Middleware)等 使用STM32CubeMX软件可以快速配置STM32工程,生成Keil工程文件以及初始化生成统一风格的C代码&…...

STM32单片机(F03C8T6)-点灯(寄存器点灯和库函数点灯)
作者:Whappy 时间:2024.10.9 日志:本实验是我第一个32位单片机实验程序,如有不足请指点! #include "stm32f10x.h" // Device headerint main(void) {//寄存器点灯RCC->APB2ENR 0x000…...

PCL 3D-SIFT关键点检测(曲率不变特征约束
PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 3D-SIFT(Scale-Invariant Feature Transform)关键点检测是用于点云分析的一种有效方法,具有尺度不变性和旋转不变性。在处理复杂场景和物体识别时,通过对点云…...

Android上的AES加密
基础算法说明 https://www.youtube.com/watch?vlnKPoWZnNNM 虽然这个视频讲的非常详细,但是涉及到具体底层算法,大致流程 1. 将数据转成HEX或者byte array 2.将数据分层一块块等大小的数据 3.将数据和key 进行一次混合,加密之后的输出&…...

安全测试的漏洞类型
目录 一、安全测试的定义 二、安全测试的分类 1、静态扫描 2、内存扫描 3、动态安全测试 三、安全测试主要关注哪些方面的漏洞 漏洞一:SQL注入 漏洞二:XSS 漏洞三:暴力破解 漏洞四:文件包含文件上传漏洞 漏洞五&#…...

51 | 适配器模式:代理、适配器、桥接、装饰,这四个模式有何区别?
前面几篇文章我们学习了代理模式、桥接模式、装饰器模式,今天,我们再来学习一个比较常用的结构型模式:适配器模式。这个模式相对来说还是比较简单、好理解的,应用场景也很具体,总体上来讲比较好掌握。 关于适配器模式…...

ORM框架简介
什么是ORM? ORM(Object-Relational Mapping,对象关系映射)是一种编程技术,用于在关系数据库和对象程序语言之间转换数据。ORM框架允许开发者以面向对象的方式来操作数据库,而不需要编写复杂的SQL语句。简单…...

Windows系统上根据端口号查找对应进程
“开始”-“运行”,输入cmd,打开命令行窗口,输入netstat和findstr的组合,找出占用了4118的端口的进程 根据上述PID,使用tasklist和findstr的组合,找出对应进程是dsa.exe 要想kill此进程,可以打开…...
一文通透OpenAI o1:从CoT、Quiet-STaR、Self-Correct、Self-play RL、MCST等技术细节到工程复现
前言 注意,本文自10.12日起,正在每天更新的过程中,包括已写的部分也在不断修改(以增加更多技术细节、更加通俗易懂) 预计10.20完成第一版,10月底修订到第二版——具体修订记录详见本文文末.. 可能是去年写或讲的关于ChatGPT原理的…...

如何解决与kernel32.dll相关的常见错误:详细指南解析kernel32.dll文件缺失、损坏或错误加载问题
当你的电脑中出现错误kernel32.dll丢失的问题,会导致电脑不能出现正常运行,希望能够有效的帮助你有效的将丢失的kernel32.dll文件进行修复同时也给大家介绍一些关于kernel32.dll文件的相关介绍,希望能够有效的帮助你快速修复错误。 kernel32.…...

Caffeine Cache解析(一):接口设计与TinyLFU
Caffeine is a high performance Java caching library providing a near optimal hit rate. 自动加载value, 支持异步加载基于size的eviction:frequency and recency基于时间的过期策略:last access or last write异步更新valuekey支持weak referenceva…...

深入探索LINUX中AWK命令:强大的文本处理工具
深入探索LINUX中AWK命令:强大的文本处理工具 AWK 是一种编程语言,专为文本和数据处理设计,它以其强大的文本处理能力和简洁的语法在 Unix/Linux 系统中占据了重要地位。AWK 程序由一系列的模式(pattern)和动作(action)组成,对于输…...

数字化转型:解决项目管理困境的新路径
在当今这个飞速发展的数字化时代,企业如同在汹涌波涛中航行的船只,承受着前所未有的变革压力。而作为企业运作核心环节之一的项目管理,同样面临着巨大的挑战。 传统项目管理模式中的种种问题,犹如顽固的礁石,阻碍着项目…...

Arthas常用的命令(三)--monitor、jad 、stack
monitor:监控方法的执行情况 监控指定类中方法的执行情况 用来监视一个时间段中指定方法的执行次数,成功次数,失败次数,耗时等这些信息 参数说明 方法拥有一个命名参数 [c:],意思是统计周期(cycle of ou…...

Power BI之常用DAX函数使用介绍——提供数据源练习
前述: 本次使用数据是包含产品表、客户表、区域表、销售订单表的一份销售订单数据,数据源链接如下: 链接:https://pan.baidu.com/s/1micl_09hFrgz2aUBERkeZg 提取码:y17e 一、CALCULATE 1.语法结构 语法结构CALCUL…...

SQL-触发器(trigger)的详解以及代码演示
一、触发器的概念 触发器是一种特殊的存储过程,但是触发器不存在输入和输出参数,所以不能被显式的去调用,而是与特定的表相关联,当表中的数据发生变化时,触发器被激活并执行其定义的SQL代码。触发器可以是行级触发器&…...

【devops】x-ui 实现一键安装 x-ray 打造高速国际冲浪 | xray管理平台
一、部署X-UI篇 1、Github 地址&说明 github地址如下: https://github.com/FranzKafkaYu/x-ui?tabreadme-ov-file 2、一键部署 2.1、更新并安装curl #Ubuntu、Deibian系统 apt update && apt upgrade -y apt install curl -y #CentOS7 系统 yum…...

Linux系统编程——进程标识、进程创建
一、进程标识(pid) 每个进程都有一个非负整数形式的唯一编号,即 PID。PID 在任何时刻都是唯一的,但是可以重用,当进程终止并被回收以后,其 PID 就可以为其它进程所用。进程的 PID 由系统内核根据延迟重用算…...

【超级福利】openMind开源实习来袭,奖励高达万元,解锁你的AI实践新篇章!
亲爱的小伙伴们,是不是梦想着能在真实的项目中大展拳脚,却又苦于找不到合适的舞台?别担心,OpenI启智社区携手openMind Library工具链,为你量身打造了一场开源实习盛宴,保证让你的学习不再无聊,技…...

React JSX 使用条件语句渲染UI的两种写法
只针对函数组件 1. 第一种写法: function App({ id }) {return id1? <h1>hello</h1> : <h1>world</h1>; } 或者: function App({ id }) {return (<h1>{id1 && "hello" || id2 && "wo…...

谷歌-BERT-第四步:模型部署
1 需求 需求1:基于gradio实现大模型的WEB UI交互界面 2 接口 3 示例 import gradio as gr from transformers import *classifier pipeline("text-classification", model"./model", tokenizer"./model")gr.Interface.from_pipel…...

猫咪化身蒲公英,浮毛满屋乱飞,有哪些宠物空气净化器值得购买?
不掉毛的猫咪究竟是谁在养? 当初去朋友家玩,被猫咪捕获芳心,没多久自己也领养了一只。没想到啊,这就意味着要和猫毛纠缠一辈子了。平时白天上班不在家,它就在一边跑动一边掉毛,回到家我都能推断它的行动路…...

端到端的开源OCR模型:GOT-OCR-2.0,支持场景文本、文档、乐谱、图表、数学公式等内容识别!
今天给大家分享一个端到端的开源 OCR 模型,号称 OCR 2.0! 支持场景文本、文档、乐谱、图表、数学公式等内容识别,拿到了 BLEU 0.972 高分。 从给出的演示图来看,一些非常复杂的数学公式都能正确的识别,颇为强大。模型…...

自注意力机制self-attention中QKV矩阵的含义
自注意力机制(Self-Attention)是Transformer模型的核心组件,其中Q、K、V矩阵分别代表查询(Query)、键(Key)、值(Value)。它们的作用和含义可以通过信息匹配过程来理解。在…...

【前端】Bootstrap:栅格系统 (Grid System)
Bootstrap的栅格系统是该框架的核心部分之一,能够让开发者轻松创建响应式网页布局,适配各种屏幕尺寸和设备。栅格系统通过将页面划分为12列的布局结构,开发者可以根据内容的重要性和设计需求灵活控制元素的宽度和排列。 在这篇文章中&#x…...

一文读懂,SSL证书怎么验签安装使用?
SSL证书目前已经有越来越多的企业网站开始使用,安装SSL证书后,原有的http协议将会变成安全性更好的https加密协议,这对保护用户的信息安全,保障企业及用户的利益起着重要作用。 一张SSL证书的获取,需要经历不少环节&a…...

Mysql(八) --- 视图
文章目录 前言1.什么是视图?2.创建视图3. 使用视图4. 修改数据4.1.注意事项 5. 删除视图6.视图的优点 前言 前面我们学习了索引,这次我们来学习视图 1.什么是视图? 视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询…...