双指针【灵神基础精讲】
来源0x3f:https://space.bilibili.com/206214
文章目录
- 同向双指针
- [209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/)
- [713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/)
- [3. 无重复字符的最长子串](https://leetcode.cn/problems/longest-substring-without-repeating-characters/)
- [1004. 最大连续1的个数 III](https://leetcode.cn/problems/max-consecutive-ones-iii/)
- [1234. 替换子串得到平衡字符串](https://leetcode.cn/problems/replace-the-substring-for-balanced-string/)
- 相向双指针
- [167. 两数之和 II - 输入有序数组](https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/)
- [15. 三数之和](https://leetcode.cn/problems/3sum/)
- [16. 最接近的三数之和](https://leetcode.cn/problems/3sum-closest/)
- [611. 有效三角形的个数](https://leetcode.cn/problems/valid-triangle-number/)
- [11. 盛最多水的容器](https://leetcode.cn/problems/container-with-most-water/)
- [42. 接雨水](https://leetcode.cn/problems/trapping-rain-water/)
同向双指针
209. 长度最小的子数组
难度中等1559
给定一个含有 n
个正整数的数组和一个正整数 target
。
找出该数组中满足其和 ≥ target
的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr]
,并返回其长度**。**如果不存在符合条件的子数组,返回 0
。
示例 1:
输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。
示例 2:
输入:target = 4, nums = [1,4,4]
输出:1
示例 3:
输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0
提示:
1 <= target <= 109
1 <= nums.length <= 105
1 <= nums[i] <= 105
进阶:
- 如果你已经实现
O(n)
时间复杂度的解法, 请尝试设计一个O(n log(n))
时间复杂度的解法。
//零神的写法
class Solution {public int minSubArrayLen(int target, int[] nums) {int left = 0, right = 0;int res = Integer.MAX_VALUE;int sum = 0;while(right < nums.length){sum += nums[right];right++;// 满足单调性下 条件由成立变为不成立while(sum - nums[left] >= target){sum -= nums[left];left++;}if(sum >= target){res = Math.min(res, right - left);}}return res == Integer.MAX_VALUE ? 0 : res;}
}
// -----------------------------------------------------------------
class Solution {public int minSubArrayLen(int target, int[] nums) {int left = 0, right = 0;int res = Integer.MAX_VALUE;int sum = 0;while(right < nums.length){sum += nums[right];right++;while(sum >= target){res = Math.min(res, right - left);sum -= nums[left];left++;}}return res == Integer.MAX_VALUE ? 0 : res;}
}
713. 乘积小于 K 的子数组
难度中等646
给你一个整数数组 nums
和一个整数 k
,请你返回子数组内所有元素的乘积严格小于 k
的连续子数组的数目。
示例 1:
输入:nums = [10,5,2,6], k = 100
输出:8
解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。
需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。
示例 2:
输入:nums = [1,2,3], k = 0
输出:0
提示:
1 <= nums.length <= 3 * 104
1 <= nums[i] <= 1000
0 <= k <= 106
class Solution {public int numSubarrayProductLessThanK(int[] nums, int k) {if(k == 0) return 0;int left = 0, right = 0;int res = 0;int mul = 1;while(right < nums.length){mul *= nums[right];right++;while(left < right && mul >= k){mul /= nums[left];left++;}// 子数组个数的计算方法:// 移动到right时 以right为右端点的满足要求的子数组个数res += (right-left);}return res;}
}
3. 无重复字符的最长子串
难度中等8709
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
提示:
0 <= s.length <= 5 * 104
s
由英文字母、数字、符号和空格组成
class Solution {public int lengthOfLongestSubstring(String S) {char[] s = S.toCharArray(); // 转换成 char[] 加快效率(忽略带来的空间消耗)int n = s.length, ans = 0;int right = 0, left = 0;int[] cnt = new int[128];while(right < n) {char c = s[right];++cnt[c];right++;while (cnt[c] > 1) // 不满足要求--cnt[s[left++]];ans = Math.max(ans, right - left);}return ans;}
}
1004. 最大连续1的个数 III
难度中等509
给定一个二进制数组 nums
和一个整数 k
,如果可以翻转最多 k
个 0
,则返回 数组中连续 1
的最大个数 。
示例 1:
输入:nums = [1,1,1,0,0,0,1,1,1,1,0], K = 2
输出:6
解释:[1,1,1,0,0,1,1,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 6。
示例 2:
输入:nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], K = 3
输出:10
解释:[0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
粗体数字从 0 翻转到 1,最长的子数组长度为 10。
提示:
1 <= nums.length <= 105
nums[i]
不是0
就是1
0 <= k <= nums.length
class Solution {public int longestOnes(int[] nums, int k) {int res = 0;int left = 0, right = 0;int cnt = 0;while(right < nums.length){if(nums[right] == 0) cnt++;right++;while(cnt > k){if(nums[left] == 0) cnt--;left++;}res = Math.max(res, right-left);}return res;}
}
1234. 替换子串得到平衡字符串
难度中等222
有一个只含有 'Q', 'W', 'E', 'R'
四种字符,且长度为 n
的字符串。
假如在该字符串中,这四个字符都恰好出现 n/4
次,那么它就是一个「平衡字符串」。
给你一个这样的字符串 s
,请通过「替换一个子串」的方式,使原字符串 s
变成一个「平衡字符串」。
你可以用和「待替换子串」长度相同的 任何 其他字符串来完成替换。
请返回待替换子串的最小可能长度。
如果原字符串自身就是一个平衡字符串,则返回 0
。
示例 1:
输入:s = "QWER"
输出:0
解释:s 已经是平衡的了。
示例 2:
输入:s = "QQWE"
输出:1
解释:我们需要把一个 'Q' 替换成 'R',这样得到的 "RQWE" (或 "QRWE") 是平衡的。
示例 3:
输入:s = "QQQW"
输出:2
解释:我们可以把前面的 "QQ" 替换成 "ER"。
示例 4:
输入:s = "QQQQ"
输出:3
解释:我们可以替换后 3 个 'Q',使 s = "QWER"。
提示:
1 <= s.length <= 10^5
s.length
是4
的倍数s
中只含有'Q'
,'W'
,'E'
,'R'
四种字符
class Solution {public int balancedString(String s) {//只需要窗口外每种字符的数目小于等于平均值即可int[] count = new int[26];int len = s.length();for(int i = 0; i < len; i++){count[s.charAt(i) - 'A']++;}int left = 0, right = 0;int res = len;int average = len / 4;while(right < len){//滑动窗口里进来一个元素 就把count里的这个值减1count[s.charAt(right) - 'A']--;//如果四个元素都符合要求 就计算最小值while(left < len && count['Q'-'A'] <= average && count['W'-'A'] <= average && count['E'-'A'] <= average && count['R'-'A'] <= average){res = Math.min(res, right - left + 1);count[s.charAt(left) - 'A']++;left++;}right++;}return res;}
}
相向双指针
167. 两数之和 II - 输入有序数组
难度中等981
给你一个下标从 1 开始的整数数组 numbers
,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target
的两个数。如果设这两个数分别是 numbers[index1]
和 numbers[index2]
,则 1 <= index1 < index2 <= numbers.length
。
以长度为 2 的整数数组 [index1, index2]
的形式返回这两个整数的下标 index1
和 index2
。
你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
你所设计的解决方案必须只使用常量级的额外空间。
示例 1:
输入:numbers = [2,7,11,15], target = 9
输出:[1,2]
解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
示例 2:
输入:numbers = [2,3,4], target = 6
输出:[1,3]
解释:2 与 4 之和等于目标数 6 。因此 index1 = 1, index2 = 3 。返回 [1, 3] 。
示例 3:
输入:numbers = [-1,0], target = -1
输出:[1,2]
解释:-1 与 0 之和等于目标数 -1 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。
提示:
2 <= numbers.length <= 3 * 104
-1000 <= numbers[i] <= 1000
numbers
按 非递减顺序 排列-1000 <= target <= 1000
- 仅存在一个有效答案
class Solution {public int[] twoSum(int[] numbers, int target) {int n = numbers.length;int left = 0, right = n-1;while(left < right){while((numbers[right] + numbers[left]) < target) left++;if((numbers[right] + numbers[left]) == target) return new int[]{left+1, right+1};right--;}return new int[]{-1,-1};}
}
更加简洁的写法
class Solution {public int[] twoSum(int[] numbers, int target) {int n = numbers.length;int left = 0, right = n-1;while(true){int sum = numbers[left] + numbers[right];if(sum == target){return new int[]{left+1, right+1};}else if(sum > target){right--;}else{left++;}}}
}
15. 三数之和
难度中等5631
给你一个整数数组 nums
,判断是否存在三元组 [nums[i], nums[j], nums[k]]
满足 i != j
、i != k
且 j != k
,同时还满足 nums[i] + nums[j] + nums[k] == 0
。请
你返回所有和为 0
且不重复的三元组。
**注意:**答案中不可以包含重复的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。
示例 2:
输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。
示例 3:
输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。
提示:
3 <= nums.length <= 3000
-105 <= nums[i] <= 105
class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> res = new ArrayList<>();for(int i = 0; i < nums.length-2; i++){if(i > 0 && nums[i] == nums[i-1]){continue;}int left = i+1, right = nums.length-1;while(left < right){int sum = nums[i] + nums[left] + nums[right];if(sum == 0){List<Integer> tmp = new ArrayList<>();tmp.add(nums[i]);tmp.add(nums[left]);tmp.add(nums[right]);res.add(tmp);left += 1;while(left < nums.length && nums[left] == nums[left-1]) left += 1;right -= 1;while(right > 0 && nums[right] == nums[right+1]) right -= 1;}else if(sum > 0){right--;}else{left++;}}}return res;}
}
16. 最接近的三数之和
难度中等1332
给你一个长度为 n
的整数数组 nums
和 一个目标值 target
。请你从 nums
中选出三个整数,使它们的和与 target
最接近。
返回这三个数的和。
假定每组输入只存在恰好一个解。
示例 1:
输入:nums = [-1,2,1,-4], target = 1
输出:2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
示例 2:
输入:nums = [0,0,0], target = 1
输出:0
提示:
3 <= nums.length <= 1000
-1000 <= nums[i] <= 1000
-104 <= target <= 104
class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int res = nums[0] + nums[1] + nums[2];for(int i = 0; i < nums.length-2; i++){int left = i+1, right = nums.length-1;while(left < right){int sum = nums[i] + nums[left] + nums[right];if(Math.abs(res-target) > Math.abs(sum-target)){res = sum;}if(sum == target){return sum;}else if(sum > target){right--;}else{left++;}}}return res;}
}
611. 有效三角形的个数
难度中等471
给定一个包含非负整数的数组 nums
,返回其中可以组成三角形三条边的三元组个数。
示例 1:
输入: nums = [2,2,3,4]
输出: 3
解释:有效的组合是:
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3
示例 2:
输入: nums = [4,2,3,4]
输出: 4
提示:
1 <= nums.length <= 1000
0 <= nums[i] <= 1000
class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int n = nums.length;int res = 0;for(int i = 2; i < n; i++){int left = 0, right = i-1;while(left < right){if(nums[left] + nums[right] > nums[i]){res += right-1 - left + 1; // 从i r 和 l到r-1都可组成三角形right--;}else left++;}}return res;}
}
11. 盛最多水的容器
难度中等4081
给定一个长度为 n
的整数数组 height
。有 n
条垂线,第 i
条线的两个端点是 (i, 0)
和 (i, height[i])
。
找出其中的两条线,使得它们与 x
轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
**说明:**你不能倾斜容器。
示例 1:
输入:[1,8,6,2,5,4,8,3,7]
输出:49
解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
示例 2:
输入:height = [1,1]
输出:1
提示:
n == height.length
2 <= n <= 105
0 <= height[i] <= 104
class Solution {public int maxArea(int[] height) {int res = 0;int n = height.length;int left = 0, right = n-1;while(left < right){int area = (right-left) * Math.min(height[left], height[right]);res = Math.max(res, area);if(height[left] < height[right]) left++;else right--;}return res;}
}
42. 接雨水
难度困难4100
给定 n
个非负整数表示每个宽度为 1
的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
示例 1:
输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
示例 2:
输入:height = [4,2,0,3,2,5]
输出:9
提示:
n == height.length
1 <= n <= 2 * 104
0 <= height[i] <= 105
双指针做法
class Solution {public int trap(int[] height) {int n = height.length;int res = 0;int left = 0, right = n-1;int premax = 0, sufmax = 0;while(left <= right){premax = Math.max(premax, height[left]);sufmax = Math.max(sufmax, height[right]);if(premax < sufmax){res += premax - height[left];left += 1;}else{res += sufmax - height[right];right -= 1;}}return res;}
}
前后缀分解
class Solution {public int trap(int[] height) {int n = height.length;int[] premax = new int[n];premax[0] = height[0];for(int i = 1; i < n; i++){premax[i] = Math.max(premax[i-1], height[i]);}int[] sufmax = new int[n];sufmax[n-1] = height[n-1];for(int i = n-2; i >= 0; i--){sufmax[i] = Math.max(sufmax[i+1], height[i]);}int res = 0;for(int i = 0; i < n; i++){int h = height[i], pre = premax[i], suf = sufmax[i];res += Math.min(pre, suf) - h;}return res;}
}
单调栈做法
class Solution {public int trap(int[] height) {Stack<Integer> stack = new Stack<>();int res = 0;for(int i = 0; i < height.length; i++){int right = height[i];while(!stack.isEmpty() && height[stack.peek()] < right){int bottomidx = stack.pop();while(!stack.isEmpty() && height[bottomidx] == height[stack.peek()]){stack.pop();}if(!stack.isEmpty()){res += (Math.min(height[stack.peek()], height[i]) - height[bottomidx]) * (i-stack.peek()-1);}}stack.push(i);}return res;}
}
es += Math.min(pre, suf) - h;
}
return res;
}
}
单调栈做法```java
class Solution {public int trap(int[] height) {Stack<Integer> stack = new Stack<>();int res = 0;for(int i = 0; i < height.length; i++){int right = height[i];while(!stack.isEmpty() && height[stack.peek()] < right){int bottomidx = stack.pop();while(!stack.isEmpty() && height[bottomidx] == height[stack.peek()]){stack.pop();}if(!stack.isEmpty()){res += (Math.min(height[stack.peek()], height[i]) - height[bottomidx]) * (i-stack.peek()-1);}}stack.push(i);}return res;}
}
相关文章:
双指针【灵神基础精讲】
来源0x3f:https://space.bilibili.com/206214 文章目录同向双指针[209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/)[713. 乘积小于 K 的子数组](https://leetcode.cn/problems/subarray-product-less-than-k/)[3. 无重复字符的最…...
tushare量化数据库模块怎么分析?
tushare量化数据其实包含的数据库有些是需要收费的,也有些会免费提供,不过tushare量化数据库整个库就很大很大,涉及的范围也广,挖掘这些数据还得从量化股票接口说起,就比如说在股票量化领域,tushare量化数据…...
模型转换 PyTorch转ONNX 入门
前言 本文主要介绍如何将PyTorch模型转换为ONNX模型,为后面的模型部署做准备。转换后的xxx.onnx模型,进行加载和测试。最后介绍使用Netron,可视化ONNX模型,看一下网络结构;查看使用了那些算子,以便开发部署…...
【深度学习】激活函数
上一章——认识神经网络 新课P54介绍了强人工智能概念,P55到P58解读了矩阵乘法在代码中的应用,P59,P60介绍了在Tensflow中实现神经网络的代码及细节,详细的内容可以自行观看2022吴恩达机器学习Deeplearning.ai课程,专…...
【新2023】华为OD机试 - 数字的排列(Python)
华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 数字的排列 题目 小华是个很有对数字很敏感的小朋友, 他觉得数字的不同排列方式有特殊的美感。 某天,小华突发奇想,如果数字多行排列, 第一行1个数, 第二行2个, 第三行3个, 即第n行n个数字,并且…...
[oeasy]python0085_ASCII之父_Bemer_COBOL_数据交换网络
编码进化 回忆上次内容 上次 回顾了 字符编码的 进化过程 IBM 在数字化过程中 作用 非常大IBM 的 BCDIC 有 黑历史 😄 6-bit的 BCDIC 直接进化成 8-bit的 EBCDIC补全了 小写字母 和 控制字符 在ibm就是信息产业的年代 ibm的标准 怎么最终 没有成为 行业的标准 呢…...
volatile,内存屏障
volatile的特性可见性: 对于其他线程是可见,假设线程1修改了volatile修饰的变量,那么线程2是可见的,并且是线程安全的重排序: 由于CPU执行的时候,指令在后面的会先执行,在指令层级的时候我们晓得volatile的特性后,我们就要去volatile是如何实现的,这个很重要!&#…...
【ESP 保姆级教程】玩转emqx MQTT篇① —— 系统主题、延迟发布、服务器配置预算、常见问题
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-02-18 ❤️❤️ 本篇更新记录 2023-02-18 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝🙏 此博客均由博主单独编写,不存在任何商业团队运营,如发现错误,请…...
第48讲:SQL优化之ORDER BY排序查询的优化
文章目录1.ORDEY BY排序查询优化方面的概念2.ORDER BY排序的优化原则3.ORDER BY排序优化的案例3.1.准备排序优化的表以及索引3.2.同时对nl和lxfs字段使用升序排序3.3.同时对nl和lxfs字段使用降序排序3.4.排序时调整联合索引中字段的位置顺序3.5.排序时一个字段使用升序一个字段…...
[Datawhale][CS224W]图机器学习(三)
目录一、简介与准备二、教程2.1 下载安装2.2 创建图2.2.1 常用图创建(自定义图创建)1.创建图对象2.添加图节点3.创建连接2.2.2 经典图结构1.全连接无向图2.全连接有向图3.环状图4.梯状图5.线性串珠图6.星状图7.轮辐图8.二项树2.2.3 栅格图1.二维矩形栅格…...
2023版最新最强大数据面试宝典
此套面试题来自于各大厂的真实面试题及常问的知识点,如果能理解吃透这些问题,你的大数据能力将会大大提升,进入大厂指日可待!目前已经更新到第4版,广受好评!复习大数据面试题,看这一套就够了&am…...
CSS 中的 BFC 是什么,有什么作用?
BFC,即“块级格式化上下文”(Block Formatting Context),是 CSS 中一个重要的概念,它指的是一个独立的渲染区域,让块级盒子在布局时遵循一些特定的规则。BFC 的存在使得我们可以更好地控制文档流࿰…...
总结在使用 Git 踩过的坑
问题一: 原因 git 有两种拉代码的方式,一个是 HTTP,另一个是 ssh。git 的 HTTP 底层是通过 curl 的。HTTP 底层基于 TCP,而 TCP 协议的实现是有缓冲区的。 所以这个报错大致意思就是说,连接已经关闭,但是此时有未处理…...
从 HTTP 到 gRPC:APISIX 中 etcd 操作的迁移之路
罗泽轩,API7.ai 技术专家/技术工程师,Apache APISIX PMC 成员。 原文链接 Apache APISIX 现有基于 HTTP 的 etcd 操作的局限性 etcd 在 2.x 版本的时候,对外暴露的是 HTTP 1 (以下简称 HTTP)的接口。etcd 升级到 3.x…...
【C语言每日一题】——倒置字符串
【C语言每日一题】——倒置字符串😎前言🙌倒置字符串🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者简…...
Native扩展开发的一般流程(类似开发一个插件)
文章目录大致开发流程1、编写对应的java类服务2、将jar包放到对应位置3、配置文件中进行服务配置4、在代码中调用5、如何查看服务调用成功大致开发流程 1、编写服务,打包为jar包2、将jar包放到指定的位置3、在配置文件中进行配置,调用对应的服务 1、编…...
【新解法】华为OD机试 - 任务调度 | 备考思路,刷题要点,答疑,od Base 提供
华为 OD 清单查看地址:blog.csdn.net/hihell/category_12199275.html 任务调度 题目 现有一个 CPU 和一些任务需要处理,已提前获知每个任务的任务 ID、优先级、所需执行时间和到达时间。 CPU 同时只能运行一个任务,请编写一个任务调度程序,采用“可抢占优先权调度”调度…...
Spring3定时任务
简介 Spring 内部有一个 task 是 Spring 自带的一个设定时间自动任务调度,提供了两种方式进行配置,一种是注解的方式,而另外一种就是 XML 配置方式了;注解方式比较简洁,XML 配置方式相对而言有些繁琐,但是应用场景的不…...
数据库版本管理工具Flyway应用研究
目录1 为什么使用数据库版本控制2 数据库版本管理工具选型:Flyway、Liquibase、Bytebase、阿里 DMSFlywayLiquibaseBytebase阿里 DMS3 Flyway数据库版本管理研究3.1 参考资料3.2 Flyway概述3.3 Flyway原理3.4 Flyway版本和功能3.5 Flyway概念3.5.1 版本迁移…...
更换 Ubuntu 系统 apt 命令安装软件源
更换 Ubuntu 系统 apt 命令安装软件源清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/ 1. Ubuntu 的软件源配置文件 /etc/apt/sources.list MIRRORS -> 使用帮助 -> ubuntu https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ Ubuntu 系统 apt 命令安…...
2023年可见光通信(LiFi)研究新进展
可见光无线通信Light Fidelity(LiFi)又称“光保真技术”,是一种利用可见光进行数据传输的全新无线传输技术。LiFi是一种以半导体光源作为信号发射源,利用无需授权的自由光谱实现无线连接的新型无线通信技术,支持高密度…...
Greenplum的两阶段提交
注:本文章引自终于把分布式事务讲明白了! 在前面的文章中,我们了解了单机库中的事务一致性实现以及分布式事务中的两阶段提交协议。大多数分布式系统都是采用了两阶段提交塄来保证事务的原子性,Greenplum也是采用了两阶段提交&am…...
多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序)
多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序) 目录 多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序)预测结果评价指标基本介绍程序设计参考资料预测结果 评价指标 训练结束: 已完成最大轮…...
git命令行推送本地分支到远程仓库
之前说过Git与IDEA强强联合(HTTPS协议连接)那么如何使用命令行来推送代码呢? 如下图所示为一个基于layui的前端代码: 目录工作区文件: 本地内容就是将这些内容推送到远程仓库 首先使用git命令初始化git本地仓库&…...
在vscode中使用Typescript并运行
首先呢,我们在学习ts之前,需要先安装ts 1、安装 typescript npm install -g typescript //检查是否安装tsc -v 2、生成配置文件,cd进入该文件夹,在控制台输 tsc --init 此时我们就可以看到在ts文件夹下面出现了 一个tsco…...
【C++提高编程】C++全栈体系(十九)
C提高编程 第三章 STL - 常用容器 一、string容器 1. string基本概念 本质: string是C风格的字符串,而string本质上是一个类 string和char * 区别: char * 是一个指针string是一个类,类内部封装了char*,管理这个…...
Java版电能表协议解析源码(DL/T645-2007)、Modbus串口虚拟工具、网络串口调试工具分享
什么是Modbus通信协议Modbus串口调试工具Java版协议解析源码 网络与串口二合一调试助手TCPCOM: https://download.csdn.net/download/liuyuan_java/87454762 Modbus调试工具,模拟串口调试工具 https://download.csdn.net/download/liuyuan_java/874274…...
2023美赛选题建议 美国大学生数学建模竞赛ABCDEF题
选题建议和粗略思路已更新完毕 对于没有基础的同学来说CD两题上手难度较高,大家可以根据自己的实际情况选择最适合自己的题目,团队将持续更新各题后续内容,Q群322297051 A题主要难度就是建立第一问的模型,综合来看难度不大&…...
2023,想跳槽的可以再等等
今天讲讲跳槽。 金三银四即将开启,一些不满现状,被外界的“高薪”“好福利”吸引的人,一般就在这时候毅然决然地跳槽了。 跳槽是为了寻求更好的发展,但在跳槽前我们也不能确定下家就是更好的归宿,这就更加需要我们审…...
Java之滑动窗口详解
目录 一.滑动窗口 1.什么滑动窗口 2.滑动窗口的三要素 二.找到字符串中所有字母异位词 1.题目描述 2.问题分析 3.代码实现 三.字符串的排列 1.题目描述 2.问题分析 3.代码实现 四.考试的最大困扰度 1.题目描述 2.问题分析 3.代码实现 五.替换后的最长重复字符 …...
集团网站建设案例/推广平台有哪些渠道
今天一起安装了4块1080的卡。也算有一些坑吧,记录一下。 1)1080显卡,驱动型号,tensorflow,cuda, cudnn 版本一定要一致。我的清单如下: ############################################# nvidia显卡…...
企业建设网站的资金策划/石家庄seo全网营销
小白一只,边刷边总结~ps:cpp,图片截取自LeetCode题解,侵删是为了方便自己看啦,有错误希望大家留言指出~不断更新~1.无重复字符的最长子串(滑窗hash优化)1)无重复则继续右移2)有重复则…...
织梦wordpress帝国对比/市场调研流程
大浪淘沙的AI创业圈,触景无限正在这个技术浪潮中不断找寻自己的位置。 有人说,AI创业的大门已经慢慢关闭,场内的玩家也已基本定型,未来的战争将聚焦在头部几家,马太效应的收紧会使得一大波竞逐者生存艰难,…...
网站建设流程 文档/seo培训学什么
Bootstrap是最广泛采用的开源前端框架之一。 将Bootstrap包含在您的项目中,您将能够立即生成响应式网页。 如果您尝试将Masonry与Bootstrap Tabs小部件(Bootstrap必须提供的众多JavaScript组件之一)一起使用,那么您可能会偶然发现…...
做招生网站/关键词挖掘工具爱站网
遇到个奇怪的问题,同时开启本地和远程两个事务,远程事务是sql2000没问题,是sql2008的不报错,但是写不上数据。 倒腾了4、5天,找到最终的解决办法:直接调用AdoConnection.execute(sq脚本),看来Ad…...
html网站简易模板/石家庄seo推广
1.应用场景 主要学习索引结构,这里主要是你指Mysql索引,然后根据具体的业务场景,选择或创建合适的索引,期望达到优化数据库查询速,或者平衡查询速度与储存容量,从而开发出满足业务需求的服务。 2.介绍[多读…...