当前位置: 首页 > news >正文

【Leetcode】 top100 round2 需要加强版

知识补充
  • python赋值的执行顺序:

在41中,对于测试案例[-1,4,3,1] 当i=1时,以下两条语句的执行结果不一致:

“nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1]”

“nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]”

解析:① 先计算右侧,nums[i] = 4, nums[nums[i]-1] = nums[4-1] = nums[3]

                再执行从左到右的赋值:nums[nums[i]-1] = nums[i] = 4    导致nums[3] = 4

                                                        nums[i] = nums[3] = 1                 导致nums[1] = 1

                得到 [-1,1,3,4] 的交换结果

           ② 先计算右侧,nums[nums[i]-1] = nums[4-1] = nums[3],nums[i] = 4

                再执行从左到右的赋值:nums[i] = nums[3] = 1                 导致nums[1] = 1

                                                        nums[nums[i]-1] = nums[1-1] = nums[i] = 4   导致nums[0] = 4

                得到 [4,1,3,1] 的交换结果

问题出在语句②左侧的计算顺序在nums[i]重新赋值之后

15  三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。

1.i/j/k不等:只往i后取j,只往j后取k

2.三元组组合不重复:hashmap/set去重(要求排序)

方法一:回溯    枚举每种组合可能,看是否同时满足len=3,sum=0

方法二:固定nums[i]转为在[i:-1]里查找两数之和为-nums[i]的组合可能

方法三:双指针  排序后固定nums[i],用一头一尾双指针来控制sum大小,需要保证元素不重复;

class Solution(object):def threeSum(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""# 固定一个数然后在排列好的数组中一头一尾取nums.sort()n = len(nums)res = []for i in range(n):if i and nums[i]==nums[i-1]: continuej,k = i+1,n-1while j<k:tmp = nums[i]+nums[j]+nums[k]if tmp==0: res.append([nums[i],nums[j],nums[k]])while j<n and nums[j] == tmp-(nums[i]+nums[k]):        # 跳到下一个不同的nums[j]j += 1elif tmp<0: j += 1else: k -= 1# 实际上只有tmp=0是需要跳到下一个不相同的数,避免有效答案不重复即可return res
 560 和为K的子数组

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。子数组是数组中元素的连续非空序列。

连续非空序列求和=区间和=前缀和

知识补充:

前缀和:sum[i]=num[1]+num[2]+……+num[i]        实现区间和的O(1)查询

核心操作:sum(num[i:j]) = sum[j-1] - sum[i-1]

差分数组:cf[i]=num[i]-num[i-1]                              实现区间修改的O(1)操作

核心操作:对num[i:j]全+1 等价于  cf[i]+=1   cf[j+1]-=1   

b[1] = a[1]

b[2] = a[2] - a[1]

...

b[n] = a[n] - a[n-1]

两者关系:b[i] 是 a[i] 的差分数组,a[i] 是 b[i] 的前缀和,某种程度上的逆运算;对差分数组进行前缀和操作可以得到原数组;

为了不特殊处理,perSum[i]表示sum(num[:i-1])

一维前缀和:sum[i:j] = perSum[j+1] - perSum[i]     

二维前缀和:sum[i:j][m:n] = perSum[j+1][n+1] - perSum[j][m] - perSum[i][n] + perSum[i][m]

相关题目:leetcode:1480/303/304/

方法:构造前缀和后,转为找两个数的差值为K(两数之和也是先判断再插入字典)

class Solution(object):def subarraySum(self, nums, k):""":type nums: List[int]:type k: int:rtype: int"""tmp = {0:1}    summ, res = 0, 0for num in nums:summ += numif summ-k in tmp:            # 这俩if不能交换位置!!!res += tmp[summ-k]if summ not in tmp:tmp[summ] = 1else:tmp[summ] += 1return res
239 滑动窗口最大值

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 

方法:在窗口中只保留能用到的元素(即>=nums[i])的排序;

class Solution(object):def maxSlidingWindow(self, nums, k):""":type nums: List[int]:type k: int:rtype: List[int]"""n = len(nums)if k>=n: return [max(nums)]stack, res = sorted(nums[:k], reverse=True), []res.append(max(stack))for i in range(k, n):while stack and nums[i] > stack[-1]:   #只留下比nums[i]大的值stack.pop()stack.append(nums[i])          # 插入当前值if nums[i-k] in stack:         # 移出仍在stack中超过窗口长度的值stack.remove(nums[i-k])res.append(stack[0])return res

案例[-6,-10,-7,-1,-9,9,-8,-4,10,-5,2,9,0,-7,7,4,-2,-10,8,7] k=7 无法通过

原因:窗口[-7,-1,-9,9,-8,-4,10]对应的stack是[10]

           而窗口[-8,-4,10,-5,2,9,0]对应的stack是[10,9,0] 但此时nums[i-k]=9 就把第12位的9当成第6位的9移出stack

解决:利用不重复的值(下标)来表示每个元素

class Solution:def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:n = len(nums)if k>=n: return [max(nums)]stack, res = [], []for i in range(n): while stack and nums[i] > nums[stack[-1]]: #只留下比nums[i]大的下标值stack.pop()   stack.append(i)                   # 插入当前下标值if i>=k-1:if (i-k) in stack:   # 移出仍在stack中超过窗口长度的值stack.remove(i-k)res.append(nums[stack[0]])return res
76 最小覆盖字串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""

方法:先右侧扩展至找齐t的所有字符,再左侧缩减至缺少t的一个字符,记录长度;

class Solution:def minWindow(self, s: str, t: str) -> str:m, n = len(s), len(t)left, right = 0, 0tmp, cnt, res = {}, n, swhile left<=right and right<m:if cnt:             # 未找齐全部字符, 右侧扩展if right<n:if t[right] in tmp: tmp[t[right]] += 1else: tmp[t[right]] = 1if s[right] in tmp:       tmp[s[right]] -= 1if not tmp[s[right]]: cnt -= 1      # 要确保是tmp[s[right]]还差right += 1else:               # 找齐全部字符,左侧收缩if right-left < len(res):res = s[left:right]if s[left] in tmp:tmp[s[left]] += 1if tmp[s[left]]: cnt += 1left += 1while left<m and not cnt:      # 最后处理if right-left < len(res):res = s[left:right]if s[left] in tmp:tmp[s[left]] += 1if tmp[s[left]]: cnt += 1left += 1return '' if res==s else res

案例s = 'abc' t = 'cba' 无法通过

原因:同步计数使遍历s的'a'时被认为不在t中

解决:先对t计数

案例s = 'aa' t = 'aa' 无法通过

原因:判断 tmp[s[right]] 条件错误;初始化和最终结果相同,无法具体判断

解决:初始化res=2*s  有效字符判断条件改成 if tmp[s[right]]>=0

from collections import Counter
class Solution:def minWindow(self, s: str, t: str) -> str:m, n = len(s), len(t)left, right = 0, 0cnt, res = n, 2*stmp = Counter(t)while left<=right and right<m:if cnt:             # 未找齐全部字符, 右侧扩展if s[right] in tmp:       tmp[s[right]] -= 1if tmp[s[right]]>=0: cnt -= 1      # 要确保是tmp[s[right]]还差right += 1else:               # 找齐全部字符,左侧收缩if right-left < len(res):res = s[left:right]if s[left] in tmp:tmp[s[left]] += 1if tmp[s[left]]>0: cnt += 1left += 1while left<m and not cnt:      # 最后处理if right-left < len(res):res = s[left:right]if s[left] in tmp:tmp[s[left]] += 1if tmp[s[left]]>0: cnt += 1left += 1return '' if res==2*s else res 
53 最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。

方法一:区间和—构造前缀和找(后-前)的最大值   O(n^2)

方法二:动态规划

dp[i]表示以i结尾的连续子数组的最大值

dp[i] = dp[i-1]+nums[i] if dp[i-1]>=0 else nums[i]

class Solution(object):def maxSubArray(self, nums):""":type nums: List[int]:rtype: int"""n = len(nums)dp, res = [0]*n, float('-inf')for i,num in enumerate(nums):if i==0:dp[i] = numelse:if dp[i-1]<0: dp[i] = numelse: dp[i] = dp[i-1]+numres = max(res, dp[i])return res# 完成如上代码后发现可以优化空间
class Solution(object):def maxSubArray(self, nums):""":type nums: List[int]:rtype: int"""n = len(nums)dp, res = 0, float('-inf')for i,num in enumerate(nums):if i==0:dp = numelse:if dp<0: dp = numelse: dp = dp + numres = max(res, dp)return res
41 缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

方法:原地哈希, 越界值不处理;

class Solution:def firstMissingPositive(self, nums: List[int]) -> int:i, n = 0, len(nums)while i<n:if 0<nums[i]<=n and nums[i] != i+1 and nums[nums[i]-1] != nums[i]: # 注意交换条件:当前值在处理范围且不在正确位置!!同时需要被交换的值也不在正确位置!!# 注意交换顺序# nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]nums[nums[i]-1], nums[i] = nums[i], nums[nums[i]-1]else: i+=1 # 越界值不处理for i in range(n):if nums[i] != i+1: return i+1return n+1
142 环形列表II

检测链表是否有环:快慢指针判断是否会再次相遇;

求链表环入口:假设入环前长度x,环长度y,当快慢指针相遇时fast比slow多在环内绕n圈,则slow=ny,即slow再走x步即可到达环入口;

class Solution:def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:if head == None:return Noneslow, fast = head, head.nextwhile fast and fast.next and fast != slow:fast, slow = fast.next.next, slow.nextif not fast or not fast.next:return None  # 无环fast, slow = head, slow.nextwhile fast != slow:fast, slow = fast.next, slow.nextreturn fast
437 路径总和III

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

相当于求区间和为目标值的所有区间——前缀和

class Solution:def pathSum(self, root: Optional[TreeNode], targetSum: int) -> int:global restmp, res, hashmap = 0, 0, {0:1}def backtrack(node, tmp):if not node: returnglobal restmp += node.val                # 当前前缀和if tmp-targetSum in hashmap:   # 能找到区间和为targetSum的区间res += hashmap[tmp-targetSum]if tmp in hashmap: hashmap[tmp] += 1   # 更新前缀和else: hashmap[tmp] = 1backtrack(node.left, tmp)backtrack(node.right, tmp)hashmap[tmp] -= 1tmp -= node.valreturnbacktrack(root, tmp)return res
994 腐烂的橘子

在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一:

  • 值 0 代表空单元格;
  • 值 1 代表新鲜橘子;
  • 值 2 代表腐烂的橘子。

每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。返回 直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回 -1 。

方法:一次遍历统计新鲜橘子个数和腐烂橘子位置,模拟腐烂后统计腐烂时间(需要多点同时腐烂才能得到最小分钟数

class Solution:def orangesRotting(self, grid: List[List[int]]) -> int:m, n = len(grid), len(grid[0])stack, cnt, res = [], 0, 0for i in range(m):for j in range(n):if grid[i][j] == 1: cnt += 1elif grid[i][j] == 2: stack.append([i,j])if cnt==0: return 0if not stack: return -1while stack:# print(stack)time = len(stack)for _ in range(time):[x, y] = stack.pop(0)                       # 左出右进for [i,j] in ([0,-1],[0,1],[-1,0],[1,0]):if 0<=x+i<m and 0<=y+j<n:# print([x+i,y+j])if grid[x+i][y+j] == 1:grid[x+i][y+j] = 0              # 避免后续重复stack.append([x+i, y+j])cnt -= 1res += 1if cnt: return -1else: return res-1
153 寻找旋转排序数组最小数

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:

  • 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
  • 若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]

给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

由于题目强调数组中的元素值互不相同,所以增加特殊判断,避免mid和left/right元素值相同的情况

class Solution:def findMin(self, nums: List[int]) -> int:# 不限制时间复杂度的话一次遍历找到断点即可left, right = 0, len(nums)-1while left<=right:mid = (left+right)//2if nums[left]<nums[mid]:        # 左侧有序if nums[left]<nums[right]:  return nums[left]else:left = mid + 1elif nums[mid]<nums[right]:     # 右侧有序right = midelse: return min(nums[left], nums[right])
416 分割等和子集

给你一个 只包含正整数 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。

方法一:计算数组总和后转为求数组和为sum//2的子集组合——回溯

方法二:动态规划,dp代表元素和

class Solution:def canPartition(self, nums: List[int]) -> bool:summ = sum(nums)if summ%2: return Falseelse: summ = summ//2dp = [False]*(summ+1)dp[0] = Truefor num in nums:for i in range(summ, num-1, -1):  # 从后往前,避免加入num后使dp[k*num]都有效if dp[i-num]: dp[i] = Truereturn dp[-1]
1143 最长公共子序列

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

  • 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。

两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

思路:动态规划

dp[i][j]表示text1[:i]和text2[:j]的最长公共子序列长度;

状态转移:

当text1[i-1]==text2[j-1]时,dp[i][j] = dp[i-1][j-1]+1

当text1[i-1]!=text2[j-1]时,dp[i][j] = max(dp[i-1][j], dp[i][j-1])

class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:m, n = len(text1), len(text2)dp = [[0]*(n+1) for _ in range(m+1)]for i in range(m+1):for j in range(n+1):if i==0: dp[i][j] = 0      # 和空字符串的最长公共子序列为0elif j==0: dp[i][j] = 0else:if text1[i-1]==text2[j-1]:dp[i][j] = dp[i-1][j-1]+1else:dp[i][j] = max(dp[i-1][j], dp[i][j-1])return dp[-1][-1]
72 编辑距离

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数  。

你可以对一个单词进行如下三种操作:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

思路:动态规划

dp[i][j]表示word1[:i]转换成word2[:j]的最少操作数;

状态转移:dp[i][j] = dp[i][j-1]+1  (插入)  dp[i][j] = dp[i-1][j]+1 (删除)   dp[i][j] = dp[i-1][j-1]+1(替换)

故:dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1])+1

class Solution:def minDistance(self, word1: str, word2: str) -> int:m, n = len(word1), len(word2)dp = [[0]*(n+1) for _ in range(m+1)]for i in range(m+1):for j in range(n+1):if i==0: dp[i][j] = j         # 空的word1变成word2,直接插入elif j==0: dp[i][j] = i       # word1变成空的word2,直接删除else:if word1[i-1]==word2[j-1]:    # 不用操作dp[i][j] = dp[i-1][j-1]else:dp[i][j] = min(dp[i][j-1], dp[i-1][j], dp[i-1][j-1])+1# print(dp)return dp[-1][-1]
287 寻找重复数

给定一个包含 n + 1 个整数的数组 nums ,其数字都在 [1, n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。

取消数组不修改的限制可以用原地哈希;

本质上是一个环形链表找环入口的问题;

建立下标i和nums[i]的映射关系,若有重复的nums[i],则代表有多个不同的i能映射到nums[i],即构成环;解决思路参考142

class Solution:def findDuplicate(self, nums: List[int]) -> int:if len(nums) == 1: return nums[0]fast, slow = nums[nums[0]], nums[0]while fast != slow: fast = nums[nums[fast]]slow = nums[slow]idx1, idx2 = 0, fastwhile idx1 != idx2:idx1 = nums[idx1]idx2 = nums[idx2]return idx1

相关文章:

【Leetcode】 top100 round2 需要加强版

知识补充 python赋值的执行顺序&#xff1a; 在41中&#xff0c;对于测试案例[-1,4,3,1] 当i1时&#xff0c;以下两条语句的执行结果不一致&#xff1a; “nums[nums[i]-1], nums[i] nums[i], nums[nums[i]-1]” “nums[i], nums[nums[i]-1] nums[nums[i]-1], nums[i]” 解析…...

ElasticSearch知识点汇总

1、ES中的​​​​​​​倒排索引是什么。 倒排索引&#xff0c;是通过分词策略&#xff0c;形成了词和文章的映射关系表&#xff0c;这种词典映射表即为倒排索引 2、ES是如何实现master选举的。 选举过程主要包括以下几个步骤&#xff1a; 心跳检测&#xff1a; 每个节点…...

phpize +Visual Studio + MSYS2 + bison 草稿记录并未正常完成

phpize Visual Studio MSYS2 bison 先安装 Visual Studio https://visualstudio.microsoft.com/zh-hans/vs/ 在安装过程中&#xff0c;选择安装工作负载。确保选择了 C 工作负载以及适用于 C 开发的相关组件&#xff0c;例如 MSVC v142 - VS 2022 C x64/x86 build tools。 …...

网络安全与IP地址的关联

网络安全与IP地址之间存在着密不可分的关系。IP地址作为网络通信的基础&#xff0c;对于网络安全的保障具有至关重要的作用。以下将详细探讨网络安全与IP地址之间的关联&#xff0c;以及IP地址在网络安全中的应用。 一、IP地址与网络安全的关系 IP地址是网络通信的基础&#x…...

罗德与施瓦茨 SMC100A信号发生器9kHz至3.2 GHz

罗德与施瓦茨 SMC100A信号发生器&#xff0c;9 kHz - 3.2 GHz 罗德与施瓦茨 SMC100A 以极具吸引力的价格提供出色的信号质量。它覆盖的频率范围为 9 kHz 至 1.1 GHz 或 3.2 GHz。输出功率为典型值。> 17 dBm。所有重要功能&#xff08;AM/FM/φM/脉冲调制&#xff09;均已集…...

新能源汽车充电站智慧充电电能服务综合解决方案

安科瑞薛瑶瑶18701709087/17343930412 ★解决方案 ✔目的地充电-EMS微电网平台 基于EMS解决方案从设备运维的角度解决本地充电的能量管理及运维问题&#xff0c;与充电管理平台打通数据&#xff0c;为企业微电网提供源、网、荷、储、充一体化解决方案。 ✔运营场站--电能服务…...

pytest(二):关于pytest自动化脚本编写中,初始化方式setup_class与fixture的对比

一、自动化脚本实例对比 下面是一条用例,使用pytest框架,放在一个类中,两种实现方式: 1.1 setup_class初始化方式 1. 优点: 代码结构清晰,setup_class 和 teardown_class 看起来像传统的类级别的 setup 和 teardown 方法。2. 缺点: 使用 autouse=True 的 fixture 作为…...

项目中遇到的问题

web项目中请求线程到service层的时候远程调用服务之前是串行化执行每个任务都要get阻塞等待任务完成&#xff0c;举例当用户在购物车页面点击去结算就会请求后台toTrade请求获取订单确认的详情数据并渲染到订单详情页&#xff0c;现在在toTrade请求中使用异步任务编排Completab…...

Deeplab的复现(pytorch实现)

DeepLab复现的pytorch实现 本文复现的主要是deeplabv3。使用的数据集和之前发的文章FCN一样&#xff0c;没有了解的可以移步到之前发的文章中去查看一下。 1.该模型的主要结构 对于代码部分&#xff0c;主要只写了模型部分的&#xff0c;其他部分内容基本和FCN的一致&#xf…...

input上添加disabled=“true“,点击事件失效处理办法

当我们给input标签上添加disabled"true"时&#xff0c;再添加点击事件&#xff0c;点击事件会不生效&#xff0c;处理办法如下&#xff1a; 给input标签添加样式style"pointer-events: none;" 代码如下&#xff1a; <input style"pointer-event…...

精酿啤酒的魅力:啤酒的与众不同风味

啤酒&#xff0c;作为世界上古老的酒精饮品之一&#xff0c;一直以来都以其与众不同的魅力吸引着无数人的味蕾。而精酿啤酒&#xff0c;作为啤酒中的佼佼者之一&#xff0c;更是以其丰富的口感和多样的风格&#xff0c;成为了啤酒爱好者的心头好。在这其中&#xff0c;Fendi cl…...

检测机构的双资质是什么?

CMA和CNAS是两种在检测、校准和认证领域具有权威性的资质。 CMA资质全称为“检验检测机构资质认定”&#xff08;China Inspection Body and Laboratory Mandatory Approval&#xff09;。它是根据《中华人民共和国计量法》等相关法规&#xff0c;由国家认证认可监督管理委员会…...

基于springboot的校园食堂订餐系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…...

基于SpringBoot的高校推荐系统

项目介绍 当前&#xff0c;随着高等教育的不断普及&#xff0c;越来越多的学生选择考研究生来提高自身的学术水平和竞争力。然而&#xff0c;考研生在选择报考院校和专业时面临着众多的选择和信息不对称的问题。为了解决这些问题&#xff0c;一些网站和APP已经推出了相关的院校…...

了解 websocket

​ 1. 概念 1、 websocket 是一种双向通行协议。实现了浏览器与服务器全双工通信&#xff0c;能更好的节省服务器资源和带宽并达到实时通讯的目的&#xff1b; 2、websocket连接成功后&#xff0c;只要连接不断开&#xff0c;通信就会一保持着&#xff1b; 3、要打开一个 WebS…...

C++中erase函数的用法

在C中&#xff0c;erase函数用于从容器中删除一个或一系列元素。它通常用于删除容器中的指定位置的元素或特定值的元素。 erase函数通常有两种用法&#xff1a; 删除指定位置的元素&#xff1a;erase(iterator position) 这种用法会删除容器中迭代器position指向的元素。 st…...

数字旅游以科技创新为核心竞争力:推动旅游服务的智能化、高效化,满足游客日益增长的旅游需求

一、引言 随着科技的飞速发展&#xff0c;数字旅游作为旅游业与信息技术结合的产物&#xff0c;正以其独特的魅力改变着传统旅游业的格局。科技创新作为数字旅游的核心竞争力&#xff0c;不仅推动了旅游服务的智能化、高效化&#xff0c;更满足了游客日益增长的旅游需求。本文…...

(MATLAB)安装指南

参考链接&#xff1a;MATLAB2019a安装教程&#xff08;避坑版&#xff09;...

社区智能奶柜:创业新机遇

社区智能奶柜&#xff1a;创业新机遇 在追求高质量生活的今天&#xff0c;健康食品成为大众焦点。社区智能奶柜适时登台&#xff0c;革新了居民获取新鲜牛奶的传统模式&#xff0c;为创业者开辟了一片蓝海市场。 一、新兴创业蓝海&#xff1a;牛奶随享站 日常膳食中&#xf…...

地盘紧固的关键技术——SunTorque智能扭矩系统

底盘紧固件是汽车底盘系统中不可或缺的一部分&#xff0c;它们负责连接和固定各个部件&#xff0c;确保车辆行驶的安全和稳定。底盘紧固件的开发涉及到多个环节和关键技术&#xff0c;下面SunTorque智能扭矩系统将详细介绍底盘紧固件开发流程和关键技术。 一、底盘紧固件开发的…...

Mybatis plus update PG json 类型 报错解决

Mybatis plus update PG json 类型 报错解决 1. 定义的PG数据库对象2. 自定义 JSON Handler3. update Wrapper4. update 报错信息4.1 No hstore extension installed.4.2 Error setting non null for parameter #1 with JdbcType null . Try setting a different JdbcType for …...

精通 Docker:简化开发、部署与安全保障

踏上 Docker 之旅&#xff0c;每一条命令都是高效与可靠的新境界。Docker 彻底改变了软件开发&#xff0c;为构建、部署和保障应用程序提供了前所未有的便利。从打造精益敏捷的镜像到编排复杂的微服务架构&#xff0c;Docker 让开发人员和运维人员都倍感轻松。让我们深入探索 D…...

KIMI的API使用:重点是他的API在使用的适合可以实时调用tool(外部联网等)

User: 如何获取kimi 的API Kimi: 要获取Kimi的API,您需要按照以下步骤操作: 注册账号:首先,您需要访问Kimi开放平台(platform.moonshot.cn/console)并注册一个账号。 获取API Key:登录后,在平台的“账户总览”部分查看平台赠送的免费额度。然后,点击“API Key 管理”…...

Android内核之Binder读写通信:binder_ioctl_write_read用法实例(七十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…...

【C语言/数据结构】经典链表OJ习题~第二期——链中寻环

&#x1f388;&#x1f388;&#x1f388;欢迎采访小残风的博客主页&#xff1a;残风也想永存-CSDN博客&#x1f388;&#x1f388;&#x1f388; &#x1f388;&#x1f388;&#x1f388;本人码云 链接&#xff1a;残风也想永存 (FSRMWK) - Gitee.com&#x1f388;&#x1f…...

MySQL日志机制【undo log、redo log、binlog 】

前言 SQL执行流程图文分析&#xff1a;从连接到执行的全貌_一条 sql 执行的全流程?-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞20次&#xff0c;收藏12次。本文探讨 MySQL 执行一条 SQL 查询语句的详细流程&#xff0c;从连接器开始&#xff0c;逐步介绍了查询缓存、解析 S…...

SSL通信、证书认证原理和失败原因

目录 SSL通信SSL认证原理SSL证书认证失败的原因分析 SSL通信 SSL通信指的是使用SSL&#xff08;Secure Sockets Layer&#xff09;协议进行的加密通讯。SSL是一种标准的安全技术&#xff0c;用于建立一个加密链接&#xff0c;确保从用户的浏览器到服务器之间的数据传输是私密和…...

【MsSQL】数据库基础 库的基本操作

目录 一&#xff0c;数据库基础 1&#xff0c;什么是数据库 2&#xff0c;主流的数据库 3&#xff0c;连接服务器 4&#xff0c;服务器&#xff0c;数据库&#xff0c;表关系 5&#xff0c;使用案例 二&#xff0c;库的操作 1&#xff0c;创建数据库 2&#xff0c;创建…...

AI编码工具-通义灵码功能实测

AI编码工具-通义灵码功能实测 通义灵码功能介绍行级/函数级实时续写自然语言生成代码单元测试生成异常排错智能排查生成代码注释生成代码解释研发领域自由问答 在上一篇文章中&#xff0c;我介绍了通义灵码的功能以及支持的操作系统&#xff0c;主流IDE等&#xff0c;详细内容可…...

直接显示二进制图片

Option Explicit Private Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Private Declare Function CreateStreamOnHGlobal Lib “ole32.dll” (ByRef hGlobal As Any, ByVal fDeleteOnResume As Long, ByRef ppstr As Any) As Long P…...

微软exchange邮箱发送

使用java发送exchange类型的邮件&#xff0c;foxmail中配置如下图&#xff1a; 需要的maven依赖如下&#xff1a; <dependency><groupId>com.microsoft.ews-java-api</groupId><artifactId>ews-java-api</artifactId><version>2.0</ve…...

AI绘画Stable Diffusion SDXL 超赞!高质量万能大模型,写实人像、时尚设计、建筑设计、电影制作—筑梦工业XLV4.0

大家好&#xff0c;我是阿威 今天为大家带来了一款多功能大模型——Dream Tech XL | 筑梦工业XL V4.0。该模型是大佬Dr_Dream基于V3.0训练而来的迭代版本&#xff0c;在提升画面质感的同时&#xff0c;对于提示词理解能力有跨越式提升&#xff0c;可以做到100%还原提示词。筑梦…...

数字人捕捉、建模与合成

在感知系统中&#xff0c;我们与外部合作者一起创建逼真的 3D 人类&#xff0c;其行为可以像虚拟世界中的真实人类一样。这项工作在今天有许多实际应用&#xff0c;并且对于元宇宙的未来至关重要。但是&#xff0c;在感知系统中&#xff0c;我们的目标是科学的——通过重现人类…...

Yarn:下一代JavaScript包管理器的安装与实战指南

当然&#xff0c;让我们深入探讨Yarn——一个高效、可靠的JavaScript包管理器&#xff0c;它为前端开发带来了新的速度和便利。Yarn由Facebook、Google、Exponent和Tilde公司共同推出&#xff0c;旨在解决npm&#xff08;Node.js包管理器&#xff09;存在的问题&#xff0c;如依…...

JVM进程缓存 Caffeine

JVM进程缓存 Caffeine 初识Caffeine Caffeine是一个基于Java8开发的&#xff0c;提供了近乎最佳命中率的高性能的本地缓存库。 ben-manes/caffeine: A high performance caching library for Java (github.com) 实例代码 Test void testBasicOps() {// 创建缓存对象Cache&…...

c++ 线程交叉场景试验

1.需求 处理一个列表的数据&#xff0c;要求按照列表的数据处理10个数据可以使用多线程处理&#xff0c;但是针对每个线程&#xff0c;1~10的处理顺序不能变。每个数据的处理必须原子&#xff0c;即只有一个线程可以针对某个数据进行处理&#xff0c;但是10个数据是可以由10个…...

Cell:如何升华你的单细胞数据——PCF空间单细胞蛋白组联合scRNA-seq解析骨髓微环境

骨髓微环境非常复杂&#xff0c;含有不同的细胞类型&#xff0c;包括了造血、间充质、内皮、血管平滑肌和神经谱系细胞等。非造血细胞对于骨髓造血非常关键。然而&#xff0c;这些细胞在人骨髓中的异质性和空间定位在很大程度上仍未被表征。来自佩雷尔曼医学院的研究者使用scRN…...

vue强制刷新组件

在Vue中强制刷新一个组件&#xff0c;通常不是一个推荐的做法&#xff0c;因为Vue的响应式系统设计就是为了自动处理依赖的更新。要强制重新渲染组件&#xff0c;以下是几种方法&#xff1a; 使用key属性&#xff1a; 最常见的方法是改变组件的key属性。当key发生变化时&#x…...

分享5款对工作学习有帮助的效率软件

​ 今天再来推荐5个超级好用的效率软件&#xff0c;无论是对你的学习还是办公都能有所帮助&#xff0c;每个都堪称神器中的神器&#xff0c;用完后觉得不好用你找我。 1.文件复制——ClipClip ​ ClipClip是一款功能强大、操作简便的文件复制与管理软件。它改变了传统的复制粘…...

redis秒杀(PHP版本)

前提提要 今天产品端提了个需求&#xff0c;院校组要求借调我去帮忙&#xff0c;因为我以前做过商城&#xff0c;现在他们需求做一个积分商城&#xff0c;需要做一个秒杀模块&#xff0c;结果毫无意外的我被借调过去了&#xff0c;刚好可以复习一下以前的知识&#xff0c;现在介…...

图形用户界面(GUI)在AI去衣技术中的作用与重要性

引言&#xff1a; 随着人工智能技术的不断进步&#xff0c;AI去衣这一概念逐渐进入公众视野。它指的是利用深度学习算法&#xff0c;从图片或视频中自动移除人物的衣物&#xff0c;生成相应的“裸体”图像。尽管这项技术在道德和隐私方面引发了诸多争议&#xff0c;但其背后的技…...

如何阅读:一个已被证实的低投入高回报的学习方法的笔记

系列文章目录 如何有效阅读一本书笔记 如何阅读&#xff1a;一个已被证实的低投入高回报的学习方法 麦肯锡精英高效阅读法笔记 读懂一本书笔记 文章目录 系列文章目录第一章 扫清阅读障碍破解读不快、读不进去的谜题一切为了阅读小学教师让你做&#xff0c;但中学老师阻止你做的…...

pycharm 安装“通义灵码“并测试

过程&#xff1a;“File>setting>Plugins” 提示&#xff1a; 翻译之后&#xff1a; 点击"接受"之后&#xff0c;提示一下图片&#xff0c;点击ok 安装完成&#xff1a; 安装完"通义灵码"之后&#xff0c;需要登陆&#xff0c;登陆后测试 参考…...

React 之 useMemo Hook (九)

useMemo 是 React 的一个Hook&#xff0c;它允许你“记住”一些计算值&#xff0c;只有在依赖项之一发生变化时才会重新计算这些值。这有助于避免不必要的重新计算和渲染&#xff0c;从而提高应用程序的性能。 代码栗子&#xff08;计算一个斐波那契数列的值&#xff09;&#…...

短视频矩阵系统源码saas开发--可视化剪辑、矩阵托管、多功能合一开发

短视频矩阵系统源码saas开发&#xff08;可视化剪辑、矩阵托管、智能私信聚合、线索转化、数据看板、seo关键词、子账号等多个板块开发&#xff09; 短视频矩阵系统是一种集成了多种功能的系统&#xff0c;旨在帮助用户在短视频平台上进行高效的内容创作、管理和发布。根据您提…...

百度大模型文心一言api 请求错误码 一览表

错误码说明 千帆大模型平台API包含两类&#xff0c;分别为大模型能力API和大模型平台管控API&#xff0c;具体细分如下&#xff1a; 大模型能力API 对话Chat续写Completions向量Embeddings图像Images 大模型平台管控API 模型管理Prompt工程服务管理模型精调数据管理TPM&RP…...

Unity调用智谱API(简单操作 文本实时翻译)

代码展示&#xff1a; using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; using UnityEngine.UI;public class ZhiPuAi : MonoBehaviour {// API的端点URLpublic string…...

Android 开机启动扫描SD卡apk流程源码分析

在开机的时候&#xff0c;装在SD卡的apk和装在系统盘的apk扫描过程不一样&#xff0c;系统盘apk在系统启动过程中扫描&#xff0c;而SD卡上的就不是&#xff0c;等系统启动好了才挂载、扫描&#xff0c;下面就说下SD扫描的流程&#xff1a; 在SystemServer启动MountService&am…...

如何恢复回收站中被删除的文件?3个恢复策略,实测有用!

“刚刚一不小心把回收站清空了&#xff0c;大家有什么好用的方法可以帮我恢复回收站中删除的文件吗&#xff1f;快帮帮我吧&#xff01;” 在使用电脑的过程中&#xff0c;我们有时可能会不小心将重要的文件或文件夹删除到回收站&#xff0c;并且随后可能进一步从回收站中彻底删…...

Unity---版本控制软件

13.3 版本控制——Git-1_哔哩哔哩_bilibili Git用的比较多 Git 常用Linux命令 pwd&#xff1a;显示当前所在路径 ls&#xff1a;显示当前路径下的所有文件 tab键自动补全 cd&#xff1a;切换路径 mkdir&#xff1a;在当前路径下创建一个文件夹 clear&#xff1a;清屏 vim…...

代码随想录-算法训练营day39【动态规划02:不同路径】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第九章 动态规划part02● 62.不同路径 ● 63. 不同路径 II 今天开始逐渐有 dp的感觉了&#xff0c;题目不多&#xff0c;就两个 不同路径&#xff0c;可以好好研究一下详细布置 62.不同路径 本题大家掌握动态规划的方…...

Git项目管理——提交项目和版本回退(二)

个人名片&#xff1a; &#x1f393;作者简介&#xff1a;嵌入式领域优质创作者&#x1f310;个人主页&#xff1a;妄北y &#x1f4de;个人QQ&#xff1a;2061314755 &#x1f48c;个人邮箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;个人微信&#xff1a;Vir2025WB…...

c++AVL树的模拟实现

前面对map/multimap/set/multiset进行了简单的介绍&#xff0c;在其文档介绍中发现&#xff0c;这几个容器有个 共同点是&#xff1a;其底层都是按照二叉搜索树来实现的&#xff0c;但是二叉搜索树有其自身的缺陷&#xff0c;假如往树中 插入的元素有序或者接近有序&#xff0c…...

电子邮箱是什么?付费电子邮箱和免费电子邮箱有什么区别?

注册电子邮箱前&#xff0c;有付费电子邮箱和免费电子邮箱两类选择。付费的电子邮箱和免费的电子邮箱有什么区别呢&#xff1f;区别主要在于存储空间、功能丰富度和售后服务等方面&#xff0c;本文将为您详细介绍。 一、电子邮箱是什么&#xff1f; 电子邮箱就是线上的邮局&a…...

如何在WordPress中启用两因素身份验证?

在WordPress中启用两因素身份验证方法&#xff1a;安装和激活WordFence安全性、启用两因素验证。 使用您可以从任何位置登录的任何门户&#xff0c;建议启用两个因素身份验证以增加帐户的安全性。 这样&#xff0c;即使有人可以正确猜测你的密码&#xff0c;它们仍然需要获得2…...

Netty-面试题(上)(四十九)

为什么Netty适合做网络编程? Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架&#xff0c;用以快速开发高性能、高可靠性的网络 IO 程序。Netty 主要用来做网络通信&#xff0c;一般可以用来作RPC框架的通信工具、实现即时通讯…...