leetcode-2670找出不同元素数目差数组
leetcode-2670找出不同元素数目差数组
初始解题思路:
1234567891011121314151617181920class Solution { public int[] distinctDifferenceArray(int[] nums) { int n = nums.length; int[] res = new int[n]; int[][] dp = new int[n][n]; Set<Integer> set1 = new HashSet<Integer>(); Set<Integer> set2 = new HashSet<Integer>(); for (int i = 0; i < n; i++) { set1.add(nums[i]); set2.clear(); for (int j = i + 1; j &l ...
leetcode-218. 天际线问题
leetcode-218. 天际线问题
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889import java.util.*;class Solution { public List<List<Integer>> getSkyline(int[][] buildings) { List<List<Integer>> res = new ArrayList<>(); if(buildings == null || buildings.length == 0){ return res; } // 采用扫描线方案解决 ...
leetcode-297. 二叉树的序列化与反序列化
leetcode-297. 二叉树的序列化与反序列化
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.*;public class Codec { // Encodes a tree to a sin ...
leetcode-230. 二叉搜索树中第K小的元素
leetcode-230. 二叉搜索树中第K小的元素
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ ...
leetcode-454. 四数相加 II
leetcode-454. 四数相加 II
123456789101112131415161718192021222324252627282930313233class Solution { public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) { int res = 0; // 分治思想 Map<Integer, Integer> map1 = merge(nums1, nums2); Map<Integer, Integer> map2 = merge(nums3, nums4); for(Map.Entry<Integer, Integer> entry : map1.entrySet()){ // 遍历整个集合 Integer key = entry.getKey(); Int ...
leetcode-171. Excel 表列序号
171. Excel 表列序号
1234567891011121314151617181920import java.math.*;class Solution { public int titleToNumber(String columnTitle) { if(columnTitle == null){ return 0; } int n = columnTitle.length(); int res = 0; // 大A的为65 for(int i = 0; i < columnTitle.length(); i++){ char x = columnTitle.charAt(i); int k = Integer.valueOf(x) - Integer.valueOf('A') + 1 ; res += Math.pow(26 ...
leetcode-1971. 寻找图中是否存在路径
leetcode-1971. 寻找图中是否存在路径
解法一:深度优先搜索
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970import java.util.*;class Solution { public boolean validPath(int n, int[][] edges, int source, int destination) { if(source == destination){ return true; } if(edges.length == 0){ return false; } // 深度优先搜索 // 存放路径 Map<Integer ...
spring-boot源码解析笔记
🐣Ques1:springboot是如何进行自动配置的,都把哪些组件进行了自动配置?
leetcode-239. 滑动窗口最大值
239. 滑动窗口最大值
优先队列
123456789101112131415161718192021222324252627282930313233343536class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int[] ans = new int[nums.length - k + 1]; // 使用优先队列 Queue<int[]> queue = new PriorityQueue<int[]>((o1, o2)->{ if(o2[0] - o1[0] > 0){ return 1; }else if(o2[0] - o1[0] < 0){ return -1; }else{ ...
redis-geek-04-哨兵机制-主库挂了如何不间断服务
哨兵机制-主库挂了如何不间断服务
主观下线和客观下线
哨兵进程会使用ping命令检测它自己和主、从库的网络连接情况,来判断实例的状态,如果哨兵发现主库或从库对PING命令的响应超时了,那么,哨兵就会先把它标记为“主观下线”。 如果检测的是从库,那么,哨兵简单地把它标记为“主观下线”就⾏了,因为从库的下线影响⼀般不太⼤, 集群的对外服务不会间断。在判断主库是否下线时,不能由⼀个哨兵说了算,只有⼤多数的哨兵实例,都判断主库已经“主观下 线”了,主库才会被标记为“客观下线”,这个叫法也是表明主库下线成为⼀个客观事实了。这个判断原则 就是:少数服从多数。同时,这会进⼀步触发哨兵开始主从切换流程。
如何选定新主库
先从多个从库中筛选掉不在线的和网络连接状态较差的,然后从库的优先级、从库的复制进度以及从库的ID号进行打分
第⼀轮:优先级最⾼的从库得分⾼。
第二轮:和旧主库同步程度最接近的从库得分高
第三轮:ID号越小的从库得分高
Redis的哨兵机制⾃动完成了以下三⼤功能,从⽽实现了主从库的⾃动切换,可以降低Redis集群的运维开销:
监控主库运⾏状态,并判断主库是否客观下线;
在主库 ...