leetcode——哈希表1
242.有效的字母异位词
给定两个字符串
s
和t
,编写一个函数来判断t
是否是s
的字母异位词
。示例 1:
输入: s = "anagram", t = "nagaram" 输出: true示例 2:
输入: s = "rat", t = "car" 输出: false提示:
1 <= s.length, t.length <= 5 * 104
s
和t
仅包含小写字母进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
原理
字母异位词定义:
- 字母异位词(Anagram)是指两个字符串中,字符的种类和每个字符的出现次数完全相同,但字符的顺序可以不同。
思路:
- 首先,字母异位词的核心在于判断两个字符串的字符集合是否完全相同。因此,我们可以通过统计两个字符串中每个字符的出现次数来比较它们。
步骤:
- 创建两个数组
mapS
和mapT
:这两个数组的长度固定为 26(因为只有 26 个小写字母)。数组mapS
用于记录字符串s
中每个字符的出现次数,数组mapT
用于记录字符串t
中每个字符的出现次数。- 遍历字符串
s
和t
:通过字符的 ASCII 值来定位字符在数组中的位置,然后更新数组中的对应位置。
- 例如,字符
'a'
对应的索引是s.charAt(j) - 'a'
,即0
,字符'b'
对应的索引是1
,依此类推。- 比较两个数组
mapS
和mapT
:最终,我们遍历这两个数组,逐个位置进行比较。如果某个位置的字符频次不相同,则返回false
,表示这两个字符串不是字母异位词。如果所有位置的频次都相同,则返回true
。时间复杂度:
- 遍历两个字符串的时间复杂度为 O(n),其中
n
是字符串的长度。- 遍历两个数组
mapS
和mapT
的时间复杂度是 O(26),即常数时间。- 因此,总时间复杂度为 O(n),其中
n
是字符串的长度。空间复杂度:
- 我们只使用了两个固定大小的数组
mapS
和mapT
,它们的空间复杂度是 O(1)(因为它们的大小是常数 26)。- 总的空间复杂度是 O(1)。
进阶:处理 Unicode 字符
- 如果输入字符串包含 Unicode 字符(不仅限于小写字母),你可以考虑使用一个哈希表(如
HashMap
)来存储字符的频次,而不是使用固定大小的数组。- 你可以将字符作为键,字符的出现次数作为值。这样可以处理所有类型的字符,而不仅限于小写字母。
代码
class Solution {public boolean isAnagram(String s, String t) {// 创建两个数组,用来存储字符串s和t中各个字符出现的次数int[] mapS = new int[26]; // mapS 用于存储字符串s的字符频次int[] mapT = new int[26]; // mapT 用于存储字符串t的字符频次// 遍历字符串s,更新mapS中各个字符的频次for (int j = 0; j < s.length(); j++) {mapS[s.charAt(j) - 'a']++; // 根据字符的ASCII值减去'a'来确定数组的索引}// 遍历字符串t,更新mapT中各个字符的频次for (int j = 0; j < t.length(); j++) {mapT[t.charAt(j) - 'a']++; // 同上,更新mapT数组}// 比较mapS和mapT数组的值,检查两个字符串的字符频次是否完全相同for (int j = 0; j < 26; j++) {if (mapS[j] != mapT[j]) { // 如果在某个位置上的频次不同,返回falsereturn false;}}// 如果所有频次都相同,则返回true,表示t是s的字母异位词return true;}
}
38.赎金信
给你两个字符串:
ransomNote
和magazine
,判断ransomNote
能不能由magazine
里面的字符构成。如果可以,返回
true
;否则返回false
。
magazine
中的每个字符只能在ransomNote
中使用一次。示例 1:
输入:ransomNote = "a", magazine = "b" 输出:false示例 2:
输入:ransomNote = "aa", magazine = "ab" 输出:false示例 3:
输入:ransomNote = "aa", magazine = "aab" 输出:true提示:
1 <= ransomNote.length, magazine.length <= 105
ransomNote
和magazine
由小写英文字母组成
原理
该问题的目标是判断
ransomNote
中的每个字符是否都能从magazine
中找出对应字符,且每个字符在magazine
中只能使用一次。步骤:
字符计数:
- 由于题目限制字符串只包含小写字母,我们可以用一个长度为 26 的数组
mapM
来记录magazine
中每个字母的出现次数。magazine
中的每个字符通过magazine.charAt(i) - 'a'
转换为数组索引,从而更新该字符的计数。判断是否可以构建
ransomNote
:
- 遍历
ransomNote
中的每个字符,并从mapM
中减去对应字符的计数,表示我们“使用”了magazine
中的一个字符。- 如果在这个过程中,某个字符的计数变为负数,说明
magazine
中的字符数量不足,无法满足ransomNote
中该字符的需求,因此返回false
。最终判断:
- 如果遍历完
ransomNote
后,没有出现负数的情况,说明magazine
中有足够的字符来构建ransomNote
,返回true
。时间复杂度:
- 统计
magazine
字符的频次需要遍历一次magazine
,时间复杂度为 O(m),其中 m 是magazine
的长度。- 遍历
ransomNote
来检查字符计数需要遍历一次ransomNote
,时间复杂度为 O(n),其中 n 是ransomNote
的长度。- 最后,我们遍历 26 个字母来检查是否有负数,时间复杂度为 O(26),这是一个常数操作。
- 因此,总的时间复杂度为 O(m + n),其中 m 和 n 分别是
magazine
和ransomNote
的长度。空间复杂度:
- 使用了一个长度为 26 的数组
mapM
来存储字符的频次,空间复杂度是 O(1),因为数组的大小是常数。- 总的空间复杂度是 O(1)。
代码
class Solution {public boolean canConstruct(String ransomNote, String magazine) {// 创建一个长度为26的数组mapM,用于存储magazine中每个字母的出现次数int[] mapM = new int[26];// 遍历magazine,统计每个字符的出现次数for (int i = 0; i < magazine.length(); i++) {mapM[magazine.charAt(i) - 'a']++; // 通过字符减去'a'得到字符的索引,更新字符的计数}// 遍历ransomNote,尝试从mapM中减去字符的计数for (int i = 0; i < ransomNote.length(); i++) {mapM[ransomNote.charAt(i) - 'a']--; // 将ransomNote中的每个字符从magazine中对应字符的计数中减去}// 遍历mapM数组,检查是否有任何位置的值为负for (int i = 0; i < 26; i++) {if (mapM[i] < 0) { // 如果某个字符的计数小于0,说明magazine中的字符不足以构成ransomNotereturn false; // 返回false,表示无法构造ransomNote}}// 如果所有字符的计数都大于或等于0,表示magazine可以构造ransomNotereturn true; // 返回true}
}
49.字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs =["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]示例 2:
输入: strs =[""]
输出: [[""]]示例 3:
输入: strs =["a"]
输出: [["a"]]提示:
1 <= strs.length <= 104
0 <= strs[i].length <= 100
strs[i]
仅包含小写字母
原理
该问题的目标是找到字符串
s
中所有与p
是字母异位词的子串的位置。字母异位词是由相同字母组成但顺序不同的字符串,因此我们可以通过字符的频次来判断两个字符串是否为字母异位词。解决思路:
字符频次编码:
- 字母异位词的核心在于它们的字符频次相同。因此,我们为每个字符串(包括
p
和s
的子串)计算其字符频次并生成一个编码。- 这里使用一个大小为 26 的数组(
code
)来存储字符串中每个字符的频次。字符的频次数组最终转化为一个字符串,作为该字符串的“编码”。滑动窗口:
- 对于字符串
s
,我们使用滑动窗口技术来获取长度为p.length()
的子串。每次滑动一个字符位置,将窗口内的子串进行编码,并与p
的编码进行比较。- 如果某个子串的编码与
p
的编码相同,说明这个子串与p
是字母异位词,将该子串的起始位置记录下来。HashMap 用于存储编码和位置:
- 使用一个
HashMap
(anagrams
)来存储每个编码对应的子串起始位置的列表。encode()
方法将字符串转化为字符频次编码,并将编码作为键存入anagrams
。- 对于每个长度为
p.length()
的子串,如果它的编码与p
的编码相同,就将该子串的起始位置加入anagrams
中。返回结果:
- 在遍历
s
后,返回p
的编码对应的所有子串的起始位置列表。时间复杂度:
- 计算字符串
p
的编码需要 O(m),其中m
是p
的长度。- 遍历字符串
s
时,我们每次从s
中提取长度为m
的子串,并计算它的编码。每次计算编码的时间复杂度是 O(m)。- 因此,总的时间复杂度为 O(n * m),其中
n
是s
的长度,m
是p
的长度。空间复杂度:
- 用于存储字符频次的数组
code
的大小为常数 26,因此空间复杂度是 O(1)。- 使用
HashMap
存储编码和位置列表,最坏情况下,s
中的每个子串都可能有一个不同的编码,所以HashMap
的大小为 O(n),其中n
是s
的长度。
代码
class Solution {public List<Integer> findAnagrams(String s, String p) {// 创建一个 HashMap 来存储每个编码对应的位置列表HashMap<String, List<Integer>> anagrams = new HashMap<>();// 如果 s 的长度小于 p 的长度,则不可能有字母异位词,直接返回空列表if (s.length() < p.length()) {return new ArrayList<>();}// 对字符串 p 进行编码,并将其存储到 anagrams 中,确保编码存在String p1 = encode(p, p.length());anagrams.putIfAbsent(p1, new ArrayList<>());// 遍历字符串 s,检查每个长度为 p.length() 的子串for (int i = 0; i < s.length() - p.length() + 1; i++) {// 获取当前子串的编码String s1 = encode(s.substring(i, i + p.length()), p.length());// 将当前子串的编码放入 anagrams 中,如果编码不存在就初始化一个空列表anagrams.putIfAbsent(s1, new ArrayList<>());// 将当前子串的起始位置加入对应的编码列表中anagrams.get(s1).add(i);}// 返回 p 的编码对应的位置列表return anagrams.get(p1);}// 编码函数:将字符串的字符频次转化为固定大小的字符串(长度为26)public String encode(String str, int len) {// 创建一个长度为 26 的字符频次数组char[] code = new char[26];// 遍历字符串的每个字符,更新对应字符的频次for (int i = 0; i < len; i++) {code[str.charAt(i) - 'a']++;}// 将字符频次数组转换为字符串作为编码return String.valueOf(code);}
}
438.找到字符串中所有字母异位词
给定两个字符串
s
和p
,找到s
中所有p
的异位词
的子串,返回这些子串的起始索引。不考虑答案输出的顺序。示例 1:
输入: s = "cbaebabacd", p = "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。 起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。示例 2:
输入: s = "abab", p = "ab" 输出: [0,1,2] 解释: 起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。 起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。 起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。提示:
1 <= s.length, p.length <= 3 * 104
s
和p
仅包含小写字母
原理
该问题要求我们找到字符串
s
中所有与字符串p
字母异位词相同的子串的起始索引。字母异位词是指两个字符串含有相同的字符,但字符的顺序不同。可以通过字符频次的方式来判断两个字符串是否是字母异位词。解决思路:
编码转换:
- 字母异位词的核心在于它们的字符频次相同,因此我们可以对字符串
p
及s
中的每个长度为p.length()
的子串计算字符频次,并将其转化为一个“编码”。- 这里使用一个大小为 26 的数组(
code
)来记录字符的频次。字符的频次数组最终转化为一个字符串,作为该字符串的“编码”。滑动窗口:
- 我们使用滑动窗口技术来获取字符串
s
中所有长度为p.length()
的子串。- 每当滑动窗口向右移动时,我们检查当前窗口中的子串是否与
p
是字母异位词。通过对该子串进行编码并与p
的编码进行比较,判断它们是否相等。- 如果它们的编码相等,说明当前子串是字母异位词,我们将该子串的起始索引记录下来。
使用 HashMap 存储编码和位置:
- 我们使用一个
HashMap
(anagrams
)来存储每个编码对应的子串起始位置列表。encode()
方法将字符串转化为字符频次编码,并将编码作为键存入anagrams
。- 对于每个长度为
p.length()
的子串,计算其编码并与p
的编码进行比较。如果它们相等,说明该子串是p
的字母异位词,将该子串的起始位置加入anagrams
中。返回结果:
- 最后,我们返回
p
的编码对应的所有子串的起始位置列表,即返回所有字母异位词的位置。时间复杂度:
- 对于字符串
s
中的每个长度为p.length()
的子串,计算其字符频次编码的时间复杂度是 O(m),其中m
是p
的长度。- 遍历字符串
s
时,我们每次滑动窗口并计算子串的编码,这样的操作共进行n - m + 1
次,其中n
是s
的长度。- 因此,总的时间复杂度是 O(n * m),其中
n
是s
的长度,m
是p
的长度。空间复杂度:
- 用于存储字符频次的数组
code
的大小为常数 26,因此空间复杂度是 O(1)。- 使用
HashMap
存储编码和位置列表,最坏情况下,s
中的每个子串都可能有一个不同的编码,所以HashMap
的大小为 O(n),其中n
是s
的长度。
代码
class Solution {public List<Integer> findAnagrams(String s, String p) {// 创建一个 HashMap 用于存储编码与对应的子串起始索引HashMap<String, List<Integer>> anagrams = new HashMap<>();// 如果 s 的长度小于 p 的长度,无法找到字母异位词,直接返回空列表if (s.length() < p.length()) {return new ArrayList<>();}// 对字符串 p 进行编码,生成一个固定的字符频次表示String p1 = encode(p, p.length());// 确保 p 的编码在 anagrams 中存在anagrams.putIfAbsent(p1, new ArrayList<>());// 遍历字符串 s,获取每个长度为 p.length() 的子串for (int i = 0; i < s.length() - p.length() + 1; i++) {// 获取当前子串的编码String s1 = encode(s.substring(i, i + p.length()), p.length());// 确保当前子串编码在 anagrams 中存在anagrams.putIfAbsent(s1, new ArrayList<>());// 将当前子串的起始位置添加到对应编码的列表中anagrams.get(s1).add(i);}// 返回 p 的编码对应的子串起始位置列表return anagrams.get(p1);}// 编码函数:将字符串转换为一个字符频率数组的字符串表示public String encode(String str, int len) {// 创建一个长度为 26 的数组,用于记录字符的频次char[] code = new char[26];// 遍历字符串中的每个字符,更新字符的频次for (int i = 0; i < len; i++) {code[str.charAt(i) - 'a']++;}// 将字符频次数组转换为字符串并返回return String.valueOf(code);}
}
这题其实不用hash,能更好的解决,其实是滑动窗口的思想,滑动窗口能把时间复杂度降低到o(n)
原理
该问题要求我们在字符串
s
中找到所有的字母异位词子串的起始索引。字母异位词是由相同字母组成,但字母的顺序可以不同。可以通过字符的频次来判断两个字符串是否是字母异位词。解决思路:
字符频次差异:
- 我们使用一个长度为 26 的数组
code
来记录s
和p
中各个字母的频次差异。通过在遍历过程中对字符频次的增减,来判断当前窗口内的子串是否与p
是字母异位词。滑动窗口:
- 我们使用滑动窗口技术来遍历字符串
s
中的每个长度为p.length()
的子串。- 对于每一个字符,更新对应频次数组中的计数,并检查当前窗口中的字符频次是否与
p
完全匹配。- 如果字符频次数组中的所有值均为0,说明当前子串与
p
是字母异位词,并将其起始位置记录下来。更新字符频次:
- 每次滑动窗口时,当前窗口右端字符的频次会被减1,表示该字符被当前窗口包含。
- 然后,检查当前窗口是否是字母异位词,如果是,就记录下当前窗口的起始位置。
- 滑动窗口后,移出窗口左端字符时,我们需要恢复该字符的频次。
判断字母异位词:
- 通过
IsAnagrams
方法检查字符频次数组是否全为0,如果是,说明该子串是字母异位词。时间复杂度:
- 遍历字符串
s
的时间复杂度是 O(n),其中n
是字符串s
的长度。- 每次遍历时,我们需要检查一个长度为 26 的字符频次数组,
IsAnagrams
方法的时间复杂度是 O(26) ≈ O(1),因此可以认为是常数时间操作。- 总的时间复杂度是 O(n),其中
n
是字符串s
的长度。空间复杂度:
- 使用一个大小为 26 的数组
code
来存储字符频次,因此空间复杂度是 O(1),因为数组大小固定。- 使用一个列表
anagrams
存储所有字母异位词的起始位置,空间复杂度为 O(k),其中k
是找到的字母异位词的数量。- 因此,总的空间复杂度是 O(k)。
代码
class Solution {public List<Integer> findAnagrams(String s, String p) {// 创建一个长度为26的数组用于存储字符频次差异int[] code = new int[26];// 创建一个列表用于存储结果:所有字母异位词的起始索引List<Integer> anagrams = new ArrayList<>();// 遍历字符串 p,更新字符频次(将 p 中的每个字符计数加1)for (int i = 0; i < p.length(); i++) {code[p.charAt(i) - 'a']++; // 更新 p 中字符的频次}// 遍历字符串 s,检查每个长度为 p.length() 的子串是否是字母异位词for (int i = 0; i < s.length(); i++) {// 更新当前字符的频次(s 中的字符频次减1)code[s.charAt(i) - 'a']--;// 如果当前字符频次数组符合字母异位词条件(即所有字符的频次均为0),// 说明当前子串是 p 的字母异位词,将其起始位置加入结果列表if (IsAnagrams(code) == true) {anagrams.add(i + 1 - p.length()); // 记录当前子串的起始索引}// 如果 i+1-p.length() >= 0,则恢复上一个字符的频次(滑动窗口移动)if (i + 1 - p.length() >= 0) {code[s.charAt(i + 1 - p.length()) - 'a']++;}}return anagrams; // 返回所有字母异位词的起始索引列表}// 判断当前字符频次数组是否为字母异位词的条件:如果所有元素为0,则是字母异位词public boolean IsAnagrams(int[] array) {// 遍历频次数组,检查是否每个字符的频次均为0for (int i = 0; i < 26; i++) {if (array[i] != 0) {return false; // 如果有任何一个字符的频次不为0,说明不是字母异位词}}return true; // 所有字符的频次为0,说明是字母异位词}
}
相关文章:
leetcode——哈希表1
242.有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词 。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat", t "car" 输出: false 提示: 1 < s.le…...
STM32+模拟或硬件IIC+SHT20驱动问题:接上拉电阻、BUSY死锁?
主要问题: 1,使用STM32F103C8T6,模拟IIC,SCL和SDA口配置为推挽输出上拉,主要是SDA脚,每次都要输出输入模式重新配置,虽然也能通信,但不稳定,出错率大; 2&…...
Android四大组件——Activity(二)
一、Activity之间传递消息 在(一)中,我们把数据作为独立的键值对进行传递,那么现在把多条数据打包成一个对象进行传递: 1.假设有一个User类的对象,我们先使用putExtra进行传递 activity_demo06.xml <…...
PHP实现华为OBS存储
一:华为OBS存储文档地址 官方文档:https://support.huaweicloud.com/obs/index.html github地址:https://github.com/huaweicloud/huaweicloud-sdk-php-obs 二:安装华为OBS拓展 composer require obs/esdk-obs-php 三&#x…...
SQL连续登录问题(详细案例分析)
如果要统计用户活跃度,那就涉及连续登录问题,接下来将举一个简单的例子来详细说明这个问题: 一、创建一些模拟数据 一些测试数据如下: deviceid1,2022-10-26,2022-10-26,2022-11-01 deviceid1,2022-10-26,2022-11-03,2022-11-0…...
OpenCV相机标定与3D重建(9)相机标定函数calibrateCameraRO()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::calibrateCameraRO 是 OpenCV 中用于相机标定的函数,它允许固定某些点来进行更精确的标定。 函数原型 double cv::calibrateCa…...
【一本通】农场派对
【一本通】农场派对 💐The Begin💐点点关注,收藏不迷路💐 N头牛要去参加一场在编号为x(1≤x≤n)的牛的农场举行的派对(1≤N≤1000),有M(1≤m≤100000)条有向道路,每条路长ti(1≤ti≤100);每头牛…...
uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录
上篇文件介绍了,父组件数据更新正常但是页面渲染不生效的问题,详情可以看下:uniapp中父组件数组更新后与页面渲染数组不一致实战记录 本文在此基础上由于新增需求衍生出新的问题.本文只记录一下解决思路. 下面说下新增需求方便理解场景: 商品信息设置中添加抽奖概率设置…...
基础暴力算法
线性枚举 线性枚举(Linear Enumeration)是一种暴力枚举的方法,它逐一检查每个可能的解,适用于搜索和枚举问题。 其核心思路是:对问题的所有可能情况逐一进行遍历,并针对每种情况判断是否满足条件…...
【复变函数】三、复变函数的积分
目录 1. 复变函数积分1.1. 复积分1.2. 存在性与计算1.2.1 第二类曲线积分与格林公式1.2.2 第一类曲线积分与参数式 1.3. 性质1.4. 圆径积分 2. 柯西积分定理2.1. 柯西(Cauchy)基本定理与莫雷拉(Morrera)定理2.2. 复合闭路定理2.3.…...
ChatGPT Pro是什么
ChatGPT Pro 和 ChatGPT Plus 的区别主要体现在功能范围、适用场景和目标用户上。 ChatGPT Plus 功能 • 价格:20美元/月。 • 目标用户:针对个人用户设计。 • 主要特点: • 在高峰期响应速度更快。 • 使用高级模型(如 GPT-4…...
React - echarts 世界地图,中国地图绘制
中国地图 首先需要一个包含中国所有省份名称的 json,这个好多网站都能找到。 我传到资源里了,放百度网盘怕太长时间不登录给我删掉了。 中国地图中文版json 我把地图抽出来单独做成了组件,这样用的时候比较方便. 使用的时候: …...
knife4j-openapi3 4.5 最基本的使用 openAPI
最基本的使用,配置太多懒得研究 SpringBoot 整合 knfe4j ,使用 OpenAPI3 规范,这个兄弟写的挺好 环境: spring-boot-starter-parent:3.4.0 1. 依赖 <dependency><groupId>com.github.xiaoymin</gr…...
如何在 Ubuntu 22.04 上安装和使用 Apache Kafka
简介 Apache Kafka是一个高性能、低延迟的分布式流处理平台,广泛用于构建实时数据管道和流式应用。本文将指导你如何在Ubuntu 22.04系统上快速部署Apache Kafka,让你体验到Kafka在处理大规模实时数据流方面的强大能力。通过本教程,你将学会如…...
Linux:network:添加ip的时候自动添加一个本地路由
文章目录 问题问题 最近在看一个路由的问题,顺便看内核代码,发现在添加IP的时候,内核会自动添加一个local route。 net/ipv4/devinet.c inet_rtm_newaddr->__inet_insert_ifa /* Send message first, then call notifier.Notifier will trigger FIB update, so thatlis…...
Android 10、11、12存储适配相关
AndroidQ(10)分区存储完美适配 - 简书前言 最近时间在做AndroidQ的适配,截止到今天AndroidQ分区存储适配完成,期间出现很多坑,目前网上的帖子大部分都是概述变更内容,接下来的几篇帖子都是对分区存储实际...https://www.jianshu.c…...
如何将视频转化为音频?五个方法策略
在日常生活中,我们经常需要将视频中的音频提取出来,以便在特定的场合使用。无论是为了制作铃声、背景音乐,还是为了进行语音转文字处理,视频转音频的需求都非常普遍。如何将视频转化为音频?本文将详细介绍多种将视频转…...
ecovadis评估最新标准
EcoVadis评估的最新标准主要包括奖牌评估规则和新增的徽章规则,以下是对这两方面的详细阐述: 一、奖牌评估规则 评估范围:EcoVadis的评估总分为100分,评估内容涵盖环境、劳工与人权、商业道德、可持续采购等四大主题。 奖牌等级…...
Java版-图论-最小生成树-Kruskal算法
实现描述 为了造出一棵最小生成树,我们从最小边权的边开始,按边权从小到大依次加入,如果某次加边产生了环,就扔掉这条边,直到加入了 n-1 条边,即形成了一棵树。 实现代码 首选我们对所有的边,…...
【单片机开发】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]
目录 参考资料: 利用 Boot 选择不同的启动方式: 单片机的存储结构(主 FLASH/系统存储器/嵌入式 SRAM): 1. Cortex-M 内核芯片——启动原理: 1.1. 启动流程: 1.2. 根据单片机的存储器映射和架构图:启动…...
实验15 验证LSTM模型的长程依赖
本次实验依托上个实验 一 模型构建 创建LSTM模型,里面包括初始化init函数、初始化权重函数_init_weights、初始化状态函数init_state、前向传播函数forward。 init函数:虽然每个时间的输入和隐层都是一样的,但是他们会有四组不同的权重&am…...
Charles功能说明
1.扫把(clear the current Session) (前头方向) 作用:清除所有抓取的包(正方形框) 2.中心圈-未启用显示(Star Recording)点击启动 -启动之后显示(Stop Recording)点击停止 作用:启动之后开始抓取包(刷新一次页面或跳转抓取内容) 3.锁-未启动显示(Star SSL Proxying)点击启动 -启…...
自动秒收录程序与自动秒收录网站源码论坛版本下载
自动秒收录程序与自动秒收录网站源码论坛版本下载 随着互联网的快速发展,网站优化已成为众多企业和个人博主提升在线影响力的关键手段。其中,SEO(搜索引擎优化)作为提升网站排名的核心策略,备受关注。而SEO优化的一个…...
HTML颜色-HTML脚本
HTML脚本 js使得HTML页面具有更强的动态和交互性 HTML<script>标签 标签用于定义客户端脚本,比如javascript 可包含脚本语句,也可以通过src属性指向外部的脚本文件 JavaScript最常用于图片操作,表单验证以及动态的内容更新 HTML<n…...
【WRF理论第十三期】详细介绍 Registry 的作用、结构和内容
目录 1. Introduction:介绍 Registry 的作用和功能。2. Registry Contents:详细描述 Registry 的结构和内容,包括各个部分的条目类型。2.1. DIMSPEC ENTRIES(维度规格条目)2.2. STATE ENTRIES(状态变量条目…...
使用Kimi开发自己的问答应用
概述 Kimi是大家常用的一个人工智能助手,本文使用Kimi开发文档,以node作为后端,开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手,擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任…...
Vue前端开发-路由其他配置
在路由文件中,除了跳转配置外,还可以进行路径重定向配置,如果没有找到对应的地址,还可以实现404的配置,同时,如果某个页面需要权限登录,还可以进行路由守卫配置,接下来,分…...
AI与遥感的融合:构建新一代智能监测作业平台
在测绘地理信息与遥感领域,人工智能(AI)技术的融合正推动着一场监测作业模式的革命。AI不仅提升了数据处理的效率,还极大地扩展了遥感技术的应用范围和深度。 遥感监测的智能化趋势 随着遥感数据量的激增,传统的人工…...
3D 视觉定位技术:汽车零部件制造的智能变革引擎
在汽车零部件制造领域,传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求,促使企业寻求突破之道。而 3D 视觉定位技术,为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…...
git提交时出现merge branch main of xxx
git提交时出现merge branch main of xxx 原因: 1、同事commit了一个修改A,push到remote 2、我把这个修改直接pull了下来(pull是fetchmerge的操作,自动合并到本地workspace) 3、同事因为后续的commit有冲突,…...
重生之我在异世界学编程之C语言:深入结构体篇(上)
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文《1》 结构体的两种声明一、结构…...
到达率和服务率在python中实现
到达率和服务率在python中实现 概念理解 到达率(Arrival Rate):是指顾客(或任务、事件等)到达服务系统的平均速率,通常用单位时间内到达的数量来表示。例如,在一个客服中心,每小时平均有10个客户来电咨询,这里的每小时10个客户就是到达率。服务率(Service Rate):是…...
重视猫艾滋:宠物健康的隐秘挑战
猫艾滋,全称为猫获得性免疫缺陷综合征(Feline Acquired Immunodeficiency Syndrome),是由猫免疫缺陷病毒(FIV)感染引起的一种严重危害猫类健康的疾病。虽然其名称与人类艾滋病相似,但猫艾滋仅在…...
使用长轮询解决某些场景的实时消息推送需求
需求来源 最近做一个需求实现在移动端通过按钮,远程控制大屏幕上展示的资源进行实时切换,可以展示一个大屏页面,可以展示一段视频,也可以展示一张图片。 解决思路 大屏幕上打开一个游览器,访问指定动态资源展示页面…...
uniapp-内部项目使用文档
uniapp-内部项目使用文档 目录 uniapp-内部项目使用文档阶段1自行实现内容:阶段1问题记录: 阶段2自行实现内容: 阶段3 APP项目介绍及规范阶段4 公共组件方法UseList 列表页面HooksListItem 列表项uni-load-more 列表加载更多组件CardTitle 列…...
linux搭建NFS服务和autofs自动挂载NFS
文章目录 1、nfs服务1、nfs原理2、RPC和NFS通讯原理3、RPC和NFS流程4、NFS工作流程5、服务端搭建6、客户端搭建7、autofs自动挂载 1、nfs服务 1、nfs原理 是一个NAS的存储,通过网络来进行文件的共享,表现出来的形式就是一个文件夹 可以支持多个linux挂…...
springboot415社区网格化管理平台的构建-(论文+源码)_kaic
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区网格化管理平台就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据…...
ubuntu下open-webui + ollama本地大模型部署
文章目录 nvidia gpu驱动安装 安装卸载 ollama 部署 添加docker秘钥docker配置添加国内镜像源ollama安装 从源拉取ollama镜像。启动一个ollama容器 通过ollama下载模型到本地检验本地模型 open-webui 部署 安装容器和镜像下载webui使用查看模型运行时内存、cpu、gpu占用 业余…...
自动化运维-配置Mysql、emqx、redis、nginx等通用性Linux日志分割工具 - logrotate
前言:logrotate 是一个在 Linux 系统中用于管理和轮转日志文件的工具。它的主要目的是帮助系统管理员自动执行日志文件的轮转、压缩、删除和邮件通知等任务,以防止日志文件占用过多的磁盘空间,同时保持日志文件的可管理性。 参考命令&#x…...
71、docker镜像制作上传/下载到阿里云
基本思想:简单学习一下如何制作镜像和上传下载到私有阿里云,然后构建一个gpu的训练/推理环境,以备后续使用 一、配置环境 ubuntu@ubuntu:~$ sudo apt-get install docker.ioubuntu@ubuntu:~$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS P…...
力扣--LCR 178.训练计划VI
题目 教学过程中,教练示范一次,学员跟做三次。该过程被混乱剪辑后,记录于数组 actions,其中 actions[i] 表示做出该动作的人员编号。请返回教练的编号。 示例 1: 输入:actions [5, 7, 5, 5] 输出&#…...
独孤思维:又有一个副业项目降价了
不要过早量出底牌,不然会变得低贱且廉价。 昨天在一个群里,看到有个博主,没有成交订单。 她把和用户的聊天对话发出来,我们大致看了下。 发现人家是有意向付费的。 但是这个博主过于心急,说今天加入可以优惠&#…...
【笔记】分布式任务调度平台XXL-JOB
这篇笔记主要记录以下内容: (1)第一次启动xxl-job的过程 (2)模块、文件、数据库(表和字段)的作用 (3)极少的源码解读(XxlJobConfig) 有点像实…...
Java基础总结上(Ref:JavaGuide)
基础概念与常识 Java语言有哪些特点,优点? 简单易学,是一门面向对象的语言,有封装继承多态三大特性,而且有多重防护机制保证安全性,例如权限修饰符,限制程序直接访问操作系统资源。通过JIT编译…...
嘉誉府5区共有产权看房记
特地工作日来看下嘉誉府5区的网红共有产权的房子,主要是冲着均价2.1万/平才来看。说实话从塘尾地铁步行到嘉誉府5区还挺需要时间的哈。可能以后需要电驴代步到地铁?确实楼盘现在是现楼,今年买明年住。鸿荣源确实很666哈。 今天来不需要排队&a…...
PostgreSQL函数中使用now()或current_timestamp的异同
在PostgreSQL函数中使用now()或current_timestamp可以获取当前的日期和时间。 now()函数返回当前的日期和时间,包括时区信息。它可以用于记录操作的时间戳或在查询中进行时间比较。 current_timestamp函数也返回当前的日期和时间,但不包括时区信息。它…...
跟李笑来学美式俚语(Most Common American Idioms): Part 56
Most Common American Idioms: Part 56 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记,自用。 Github仓库链接:https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来(或者clone到本地…...
类和对象一
目录 1.类的引入 2.类的定义 3.访问限定符 4.类的作用域 5.类对象模型 6.类的大小 1.类的引入 C语言结构体中只能定义变量,在C中,结构体不仅可以定义变量,也可以定义函数。 C兼容C语言,结构用法可以继续使用 同时sruct也升…...
两个数的和最小
两个数的和最小 C 代码C 代码Java 代码Python 代码 💐The Begin💐点点关注,收藏不迷路💐 给你n个整数,你可以从中任意取两个数a和b,问a加上b的和的绝对值最小可能是多少? 输入 有多组测试数据…...
Mac mini m4本地跑大模型(ollama + llama + ComfyUI + Stable Diffusion | flux)
安装chat大模型(不推荐,本地运行的大模型只能聊废话,不如网页版使用openAI等高效) 首先下载ollama的安装包 https://ollama.com/ 点击启动访问:http://localhost:11434 Ollama is running 代表已经运行起来了&#x…...