面试Java笔试题精选解答
文章目录
- 热身级别
- 数组中重复的数字
- 思路:使用map或HashSet来遍历一遍就可以找出重复的字符
- 样例解答
- 用两个栈实现队列
- 思路:Stack1正向进入,队头在栈底,用于进队列操作;Stack2是Stack1倒栈形成,队头在栈顶,用于出队列操作。
- 样例解答
- 非递归实现斐波那契数列
- 思路:循环来实现,2个变量保留前2个历史值。
- 样例解答
- log(n)复杂度查找旋转数组的最小数字
- 思路:原来是排序数组,现队尾是原排序数组的中间值,二分查找并和现队尾比较来确定舍弃哪部分。
- 样例解答
- 调整数组顺序使奇数位于偶数前面
- 首位双指针遍历交换奇偶
- 样例解答
- 连续子数组的最大和
- 每当sum小于0就置0,并记录sum的最大值。
- 样例解答
- 第一个只出现一次的字符
- 思路:使用Map记录出现次数。考虑到只有小写字母,也可使用字母表数组实现会更高效。
- 样例解答
- 在排序数组中查找数字出现的次数
- 2次二分查找重复数字的前、后边界
- 样例题解
- 查找0~n-1中缺失的数字
- 思路:二分查找,判断是否是目标的依据:该位置的值和该位置坐标是否相同
- 样例解答
- 和为s的两个数字
- 双位指针。当和大了移动尾指针,当和小了移动首指针,当首指针>尾指针结束。
- 样例题解
- 和为s的连续正数序列
- 思路:1)双循环枚举,第2个循环直接使用求和公式替代,根据求和公式反向求解可行的终点。2)滑动窗口双指针。初始时窗口为1-2,sum=3,当sum小于s时尾指针后移,当大于时首指针后移,当相等时记录并首指针后移。当首指针等于尾指针时结束。
- 样例题解
- 翻转单词顺序
- 双指针倒序遍历。
- 样例解答
- 两数之和
- 思路:使用Map存储,遍历同时查找Map是否存在所求之数
- 实战级别
- 数组中的逆序对
- 思路:分治法,类似归并排序的做法,在合并2个有序数组时,计算逆序对。
- 样例解答
- 把数组排成最小的数
- 利用字符串s1+s2和s2+s1的比较来确定s1和s2哪个比较小。
- 样例解答
- 无重复字符的最长子串
- 思路:2个指针记录滑动窗口(表示当前最长不重复字符串)的首尾,不断移动尾指针,如果尾部值已经在滑动窗口内就移动首指针直至将其移出;使用map/HashSet存储滑动窗口内的值来加速查找;不断根据滑动窗口大小更新max值。
- 样例解答
- 寻找2个仅出现1次的数字
- 思路:位运算求解。先求出异或和,从异或和找到某位为1的数,使用该数和数组每个数相异或来判断属于a或b分组,2个分组分别求异或和,得到2个解。
- 样例解答
- 寻找仅出现1次的数字
- 1)位运算求解。统计所有数字中从低位到高位该位为1的数字的个数,如果个数不可以整除3,则所求在该位为1。2)状态机。
- 样例解答待补全
热身级别
数组中重复的数字
题源:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/
思路:使用map或HashSet来遍历一遍就可以找出重复的字符
样例解答
class Solution {public int findRepeatDocument(int[] documents) {Map<Integer, Integer> map = new HashMap();for(int i : documents){// 判断是否已经存在if(map.containsKey(i)){return i;}// 不存在则记录到mapmap.put(i, 1);}// 未找到return -1;}
}
class Solution {public int findRepeatDocument(int[] documents) { Set<Integer> set = new HashSet<>(); for(int i : documents){ // 如果添加失败,则说明已经存在该元素,直接返回 if(!set.add(i)){ return i; } } // 未找到 return -1; }
}
用两个栈实现队列
题源:https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/
思路:Stack1正向进入,队头在栈底,用于进队列操作;Stack2是Stack1倒栈形成,队头在栈顶,用于出队列操作。
样例解答
class CQueue {// 操作push元素private Stack<Integer> stack1;// 操作pop元素private Stack<Integer> stack2;public CQueue() {stack1 = new Stack<>();stack2 = new Stack<>();}public void appendTail(int value) {// 操作stack1stack1.push(value);}public int deleteHead() {// 操作stack2if(!stack2.isEmpty()){return stack2.pop();}// stack2为空,需要进行倒栈while(!stack1.isEmpty()){stack2.push(stack1.pop());}// 再次操作stack2if(!stack2.isEmpty()){return stack2.pop();}// 为空的情况return -1;}
}
非递归实现斐波那契数列
题源:https://leetcode.cn/problems/fei-bo-na-qi-shu-lie-lcof/description/
思路:循环来实现,2个变量保留前2个历史值。
样例解答
class Solution {public int fib(int n) {if(n<=1){return n;}// n-2值int p2=0;// n-1值int p1=1;for(int i=2;i<=n;i++){// int t = (p1+p2)%1000000007;int t = p1+p2;p2=p1;p1=t;}return p1;}
}
log(n)复杂度查找旋转数组的最小数字
题源:https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof/description/
思路:原来是排序数组,现队尾是原排序数组的中间值,二分查找并和现队尾比较来确定舍弃哪部分。
样例解答
class Solution {public int stockManagement(int[] stock) {int low = 0;int high = stock.length - 1;while(low<high){// 现在队列的队尾都是原队列的分割点,根据和其比较来判断mid的位置(不使用队头是因为要考虑现队列为升序情况)int mid = (low + high)/2;if(stock[mid] > stock[high]){// mid在原队列的分割点后面,现在变为现队列的前部(原队列头部现在在其后面),故舍去其前的部分;且mid比high点值大,肯定非最小值,故low可取mid+1,避免low+1=high时死循环low = mid + 1;} else if(stock[mid] < stock[high]) {// mid在原队列的分割点前面,现在变为现队列的后部(原队列头部现在在其前面),故舍去其后部分high = mid;} else {// mid和high位置的值相同,则可能在前,也可能在后,故前后部分都不能舍弃,仅舍去high这个边界点high = high - 1;}}return stock[low];}
}
调整数组顺序使奇数位于偶数前面
题源:https://leetcode.cn/problems/diao-zheng-shu-zu-shun-xu-shi-qi-shu-wei-yu-ou-shu-qian-mian-lcof/
首位双指针遍历交换奇偶
样例解答
class Solution {public int[] trainingPlan(int[] actions) {int head = 0;int tail = actions.length - 1;while(true){// 从头部开始寻找偶数while(head<tail && actions[head]%2!=0)head++;// 从尾部开始寻找奇数while(head<tail && actions[tail]%2!=1)tail--;// 交换找到的奇数偶数if(head<tail){int t = actions[head];actions[head] = actions[tail];actions[tail] = t;} else {// head和tail相遇,出口return actions;}}}
}
连续子数组的最大和
题源:https://leetcode.cn/problems/lian-xu-zi-shu-zu-de-zui-da-he-lcof/
每当sum小于0就置0,并记录sum的最大值。
样例解答
class Solution {public int maxSales(int[] sales) {int max = sales[0];int pre = sales[0];for(int i = 1;i<sales.length;i++){// 动态规划,实际不需要保存max[],只需要保存前值// max[i]表示以i位置结尾的连续子数组最大和,则:// max[0]=sales[0]// max[i] = max[i-1]+sales[i];(max[i-1]>0)// max[i] = 0+sales[i];(max[i-1]<=0)int cur=pre>0?pre+sales[i]:sales[i];if(cur>max){max = cur;}pre=cur;}return max;}
}
第一个只出现一次的字符
题源:https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/description/
思路:使用Map记录出现次数。考虑到只有小写字母,也可使用字母表数组实现会更高效。
样例解答
class Solution {public char dismantlingAction(String arr) {Map<Character, Boolean> map = new HashMap<>(arr.length());// 循环一遍,记录是否重复字符for(char c : arr.toCharArray()){if(map.containsKey(c)){map.put(c, false);} else {map.put(c, true);}}// 循环一遍,寻找第一个不重复字符for(char c : arr.toCharArray()){if(map.get(c)){return c;}}// 不存在不重复字符return ' ';}
}
class Solution {public char dismantlingAction(String arr) {// 代表了26个字母表的数组byte[] charArr = new byte[26];char[] sc = arr.toCharArray();byte init = 0;byte one = 1;byte more = 2;for(char c : sc){// 标记对应字母表位置的记号charArr[c-'a']=charArr[c-'a']==init?one:more;}for(char c : sc){// 寻找第一个非重复的字母if(charArr[c-'a']==one){return c;}}return ' ';}
}
在排序数组中查找数字出现的次数
题源:https://leetcode.cn/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/description/
2次二分查找重复数字的前、后边界
样例题解
class Solution {public int countTarget(int[] scores, int target) {// 二分查找int low = 0;int high = scores.length - 1;int targetIndex = -1;while(low <= high){int mid = (low + high)/2;if(scores[mid] == target){// 找到目标,直接退出targetIndex = mid;break;}if(scores[mid] < target){// 目标在mid右侧,舍去mid左侧low = mid + 1;} else {// 目标在mid左侧,舍去mid右侧high = mid - 1;}}// 未找到目标if(targetIndex == -1){return 0;}// 进一步二分查找左边界int tLow = low;int tHigh = targetIndex;int leftIndex = -1;while(true){ // 左边界一定存在,故死循环即可int mid = (tLow + tHigh)/2;if(scores[mid] == target){if(mid==tLow || scores[mid-1]<target){// 找到左边界leftIndex = mid;break;}// 非左边界,目标在mid左侧,舍去mid右侧tHigh = mid - 1;} else {// 只剩target[mid]<target的情况,此时,目标在mid右侧,舍去mid左侧tLow = mid + 1;}}// 进一步二分查找右边界tLow = targetIndex;tHigh = high;int rightIndex = -1;while(true){ // 右边界一定存在,故死循环即可int mid = (tLow + tHigh)/2;if(scores[mid] == target){if(mid==tHigh || scores[mid+1]>target){// 找到右边界rightIndex = mid;break;}// 非右边界,目标在mid右侧,舍去mid左侧tLow = mid + 1;} else {// 只剩target[mid]>target的情况,此时,目标在mid左侧,舍去mid右侧tHigh = mid - 1;}}return rightIndex - leftIndex + 1;}
}
查找0~n-1中缺失的数字
题源:https://leetcode.cn/problems/que-shi-de-shu-zi-lcof/
思路:二分查找,判断是否是目标的依据:该位置的值和该位置坐标是否相同
样例解答
class Solution {public int takeAttendance(int[] records) {int low = 0;int high = records.length - 1;while(low <= high){int mid = (low + high)/2;if(records[mid] != mid){// 判断是否是分界点if(mid==0 || records[mid-1] == mid-1){return mid;}// 分界点在mid左侧,舍去mid右侧部分high = mid - 1;} else {// 分界点在mid右侧,舍弃mid左侧部分low = mid + 1;}}// 没有找到,返回最后1个数,即数组长度return records.length;}
}
和为s的两个数字
题源:https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/description/
双位指针。当和大了移动尾指针,当和小了移动首指针,当首指针>尾指针结束。
样例题解
class Solution {public int[] twoSum(int[] price, int target) {int head = 0;int tail = price.length-1;while(head<=tail){if(price[head] + price[tail] == target){// 找到目标return new int[]{price[head], price[tail]};}if(price[head] + price[tail] > target){// 和偏大,前移尾指针tail--;} else {// 和偏小,后移头指针head++;}}// 未找到return new int[0];}
}
和为s的连续正数序列
题源:https://leetcode.cn/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/description/
思路:1)双循环枚举,第2个循环直接使用求和公式替代,根据求和公式反向求解可行的终点。2)滑动窗口双指针。初始时窗口为1-2,sum=3,当sum小于s时尾指针后移,当大于时首指针后移,当相等时记录并首指针后移。当首指针等于尾指针时结束。
样例题解
class Solution {public int[][] fileCombination(int target) {int head = 1;int tail = 2;List<List<Integer>> rst = new ArrayList();while(head<tail){// 计算head至tail的值int sum=(head+tail)*(tail-head+1)/2;if(sum==target){// 找到一个目标,记录并后移head指针List<Integer> one = new ArrayList();for(int i=head;i<=tail;i++){one.add(i);}rst.add(one);head++;}if(sum>target){// 和偏大,后移head指针head++;} else {// 和偏小,后移tail指针tail++;}}// 组装答案int[][] rstArr = new int[rst.size()][];int i = 0;for(List<Integer> one : rst){int[] oneArr = one.stream().mapToInt(Integer::intValue).toArray();rstArr[i++] = oneArr;}return rstArr;}
}
翻转单词顺序
题源:https://leetcode.cn/problems/fan-zhuan-dan-ci-shun-xu-lcof/description/
双指针倒序遍历。
样例解答
class Solution {public String reverseMessage(String message) {int start = message.length() - 1;int end = message.length() - 1;StringBuilder sb = new StringBuilder();while(true){// 先end指针寻找单词结尾while(end>=0 && message.charAt(end) == ' '){end--;}if(end<0){// 未找到,结束return sb.length()>0?sb.deleteCharAt(sb.length()-1).toString():"";}// 再start指针寻找单词开始start = end;while(start>=0 && message.charAt(start) != ' '){start--;}// 记录单词,即[start-1,end]sb.append(message.substring(start+1, end+1));sb.append(' ');// 将end移动到下一次寻找为止end = start;}}
}
两数之和
题源:https://leetcode.cn/problems/two-sum/description/
思路:使用Map存储,遍历同时查找Map是否存在所求之数
class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<>();// 循环时边查询是否存在匹配的,边插入for(int i=0;i<nums.length;i++){if(map.containsKey(target-nums[i])){// 查询到,结束return new int[]{i, map.get(target-nums[i])};}map.put(nums[i], i);}return new int[0];}
}
实战级别
数组中的逆序对
题源:https://leetcode.cn/problems/shu-zu-zhong-de-ni-xu-dui-lcof/
思路:分治法,类似归并排序的做法,在合并2个有序数组时,计算逆序对。
样例解答
class Solution {// 逆序计数private int count;public int reversePairs(int[] record) {count = 0;sortMerge(record);return count;}private int[] sortMerge(int[] record){int len = record.length;// 出口if(len <= 1){return record;}// 拆分2部分分别进行归并排序int mid = len/2;int[] sorted1 = sortMerge(Arrays.copyOfRange(record, 0, mid));int[] sorted2 = sortMerge(Arrays.copyOfRange(record, mid, len));// 逆序合并2个有序数组int i = 0;int j = 0;int cur = 0;int[] merged = new int[len];while(i<mid && j<len-mid){if(sorted1[i]>sorted2[j]){// 在逆序合并中,当前情况说明sorted1当前元素比sorted2中剩余的所有元素都大,而sorted1在原数组中位于sorted2前面,故sorted2中剩余的元素个数即为逆序对个数count += len - mid - j;merged[cur++] = sorted1[i++];} else {merged[cur++] = sorted2[j++];}}// 处理剩余的部分while(i<mid){merged[cur++] = sorted1[i++];}while(j<len-mid){merged[cur++] = sorted2[j++];}return merged;}
}
把数组排成最小的数
题源:https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof/
利用字符串s1+s2和s2+s1的比较来确定s1和s2哪个比较小。
样例解答
class Solution {public String crackPassword(int[] password) {List<String> list = new ArrayList<>();// 将数字转换为字符串for(int i : password){list.add(String.valueOf(i));}// 对字符串列表排序,然后拼接为字符串// 不使用字符串自然序比较,是因为类似3和30这种情况下会出错。return list.stream().sorted((s1, s2)->(s1+s2).compareTo(s2+s1)).collect(Collectors.joining(""));}
}
无重复字符的最长子串
题源:https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof/description/
思路:2个指针记录滑动窗口(表示当前最长不重复字符串)的首尾,不断移动尾指针,如果尾部值已经在滑动窗口内就移动首指针直至将其移出;使用map/HashSet存储滑动窗口内的值来加速查找;不断根据滑动窗口大小更新max值。
样例解答
class Solution {public int dismantlingAction(String arr) {if(arr.length() <= 1){return arr.length();}int max = 1;Set<Character> set = new HashSet<>();int head = 0;int tail = 1;set.add(arr.charAt(0));while(tail < arr.length()){// 判断当前tail是否存在于当前窗口中if(!set.add(arr.charAt(tail))){// 添加失败,说明当前值已经在窗口中存在。需要将head前移,直至该值移出窗口// 先统计当前窗口的长度,更新max记录if(set.size()>max){max = set.size();}while(arr.charAt(head) != arr.charAt(tail)){set.remove(arr.charAt(head));head++;}head++;}// 继续扩大窗口tail++;}// 统计当前窗口的长度,更新max记录if(set.size()>max){max = set.size();}return max;}
}
class Solution {public int lengthOfLongestSubstring(String s) {if(s.length() <= 1){return s.length();}int max = 1;// map存储元素和其下标,不做删除,故需要和窗口的左边界比较判断是否在窗口内Map<Character, Integer> map = new HashMap<>();int head = 0;int tail = 1;map.put(s.charAt(0), 0);while(tail < s.length()){// 判断当前tail是否存在于当前窗口中if(map.containsKey(s.charAt(tail)) && map.get(s.charAt(tail))>=head){// 当前值已经在窗口中存在。需要将head前移至重复的元素的下一个位置// 先统计当前窗口的长度,更新max记录if(tail-head>max){max = tail-head;}head=map.get(s.charAt(tail))+1;// 更新重复元素的新坐标map.put(s.charAt(tail), tail);} else {// 添加元素map.put(s.charAt(tail), tail);}// 继续扩大窗口tail++;}// 统计当前窗口的长度,更新max记录if(tail-head>max){max = tail-head;}return max;}
}
// 动态规划方法
class Solution {public int dismantlingAction(String arr) {if(arr.length() <= 1){return arr.length();}int max = 1;// 动态规划// 设max[i]表示以i位置结尾的最长不重复字符串,则:// max[0]=第一个字符;// max[i]=max[i-1]+当前字符;(max[i-1]不包含当前字符)// max[i]=max[i-1]中当前字符之后的部分+当前字符;(max[i-1]包含当前字符)// 实际不需要保存max[],只需要保存前值即可String pre = arr.substring(0,1);for(int i=1;i<arr.length();i++){int index = pre.indexOf(arr.charAt(i));if(index==-1){pre=pre+arr.charAt(i);} else {pre=pre.substring(index+1)+arr.charAt(i);}// 统计pre长度,更新maxif(pre.length() > max){max = pre.length();}}return max;}
}
寻找2个仅出现1次的数字
题源:https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-lcof/description/
思路:位运算求解。先求出异或和,从异或和找到某位为1的数,使用该数和数组每个数相异或来判断属于a或b分组,2个分组分别求异或和,得到2个解。
样例解答
class Solution {public int[] sockCollocation(int[] sockets) {// 先对所有值进行异或int s = 0;for(int i : sockets){s=s^i;}// 对s的2进制寻找1个为1的位,该位为1说明2个目标数字在该位的值不同,故依据该位对所有值分为2组,2个目标数字必然各在1个组内1int bit = 0x1;while((s & bit)==0){bit = bit << 1;}// bit即对应位为1,使用其来进行分组int group1 = 0;int group2 = 0;for(int i : sockets){if((i & bit) == 0){// 对应位为0,分到1组,直接进行累加异或group1=group1^i;} else {// 对应位为1,分到2组,直接进行累加异或group2=group2^i;}}// 根据异或性质,累加异或后,group1和group2就只剩不同的值了,即目标数字return new int[]{group1, group2};}
}
寻找仅出现1次的数字
题源:https://leetcode.cn/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/description/
1)位运算求解。统计所有数字中从低位到高位该位为1的数字的个数,如果个数不可以整除3,则所求在该位为1。2)状态机。
样例解答待补全
相关文章:
面试Java笔试题精选解答
文章目录 热身级别数组中重复的数字思路:使用map或HashSet来遍历一遍就可以找出重复的字符样例解答 用两个栈实现队列思路:Stack1正向进入,队头在栈底,用于进队列操作;Stack2是Stack1倒栈形成,队头在栈顶&a…...
使用Python画一棵树
🎊专栏【不单调的代码】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出我的问题 文章目录 🌹Turtle模块🎄效果🌺代码🛸代码…...
nginx学习(4)Nginx 负载均衡
负载均衡:是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应 足够快,给用户很好的体验。 在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务, 而且 Nginx 提供了几种分配方式(策略)&#…...
WSL登录时提示nsenter: cannot open /proc/320/ns/time: No such file or directory的解决办法
在登录 WSL 的 Ubuntu 时,不仅要求 root 权限,还登录失败,提示“nsenter: cannot open /proc/320/ns/time: No such file or directory”。 解决办法是在 powershell 中执行 “wsl – sudo vi /etc/profile”命令,删除文件内容&a…...
git修改远程分支名称
先拉取old_branch最新代码到本地 git checkout old_branchgit pull origin old_branch本地修改后并推送 git branch -m old_branch new_branch # 修改分支名称git push --delete origin old_branch # 删除在远程的老分支推送新分支 git push origin new_branch本地分支与远…...
Django 入门学习总结7-静态文件管理
Django Web框架有关门的静态文件管理机制。 首先,在polls文件夹中创建static文件,Django 将会自动地在这里查询静态文件。 Django 框架在配置 STATICFILES_FINDERS中,指出了一系列静态文件所在位置。 依据配置 INSTALLED_APPS 的名称来查询…...
游戏开发引擎Cocos Creator和Unity如何对接广告-AdSet聚合广告平台
在游戏开发方面,游戏引擎的选择对开发过程和最终的产品质量有着重大的影响,Unity和Cocos是目前全球两大商用、通用交互内容开发工具,这两款引擎受到广泛关注,本文将从多个维度对两者进行比较,为开发者提供正确的选择建…...
振南技术干货集:制冷设备大型IoT监测项目研发纪实(4)
注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 (制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。) 2、电路设计 2.1 防护电路 2.1.1 强电防护 …...
Android线程优化——整体思路与方法
**在日常开发APP的过程中,难免需要使用第二方库和第三方库来帮助开发者快速实现一些功能,提高开发效率。但是,这些库也可能会给线程带来一定的压力,主要表现在以下几个方面: 线程数量增多:一些库可能会在后…...
论防火墙的体系结构
防火墙的体系结构 防火墙的体系结构 双重宿主主机体系结构。屏蔽主机体系结构。屏蔽子网体系结构。 双重宿主主机体系结构 双重宿主主机体系结构是指以一台具有双重宿主的主机计算机作为防火墙系统的主体,执行分离外部网络与内部网络的任务。该计算机至少有两个…...
BeansTalkd 做消息队列服务
无意间看到这个仓库讲php关于 BeanStalkd 的扩展,然后就去了解了一下beanstalkd,用它可以用来做队列服务。 话不多说,安装一下试试。 首先 sudo apt search beanstalk 搜索一下发现 Sorting... Done Full Text Search... Done awscli/focal…...
csv文件添加文件内容和读取
append content to file import numpy as np acc_listnp.array([0.97,0.92,0.93,0.89]) # 注意这个地方添加文件不需要特别声明是什么文件 file open("result.csv", "a") print("{:.2f}, {:.2f}".format(acc_list.mean(), acc_list.std()), f…...
关于禅道的安装配置以及项目管理、团队协同工作
目录 一、禅道是什么? 二、特点和功能 三、安装禅道 3.1 下载官网 3.2 版本考虑 3.3 禅道使用手册参考 3.4 Windows端安装禅道 四、启动禅道 4.1 访问禅道 四、禅道部分功能的使用 4.1 添加项目集 4.2 启动/关闭项目 4.3 项目计划仪表盘/阶段目标/研发…...
使用Wireshark提取流量中图片方法
0.前言 记得一次CTF当中有一题是给了一个pcapng格式的流量包,flag好像在某个响应中的图片里。比较简单,后来也遇到过类似的情况,所以总结和记录一下使用Wireshark提取图片的方法。 提取的前提是HTTP协议,至于HTTPS的协议需要导入服…...
C#,简单修改Visual Studio 2022设置以支持C#最新版本的编译器,尊享编程之趣
1 PLS README & CHAPTER 5 用一个超简单的例子说明各版本 C# 的差异。 使用新版本(比如C#.11),当然有一定的好处。我们在写程序的时候一般这样: Visual Studio 2022 默认只能这样写: string imageFile Path.C…...
小程序Tab栏与页面滚动联动
小程序tab栏切换与页面滚动联动 tab栏与页面滚动联动点击tab栏页面跳到指定位置滚动页面时切换tab栏 tab栏与页面滚动联动 在进行小程序开发时,需要实现点击tab栏页面滚动到某一指定位置,并且滚动页面时,小程序的tab栏进行切换。 在一开始&a…...
Java,数据结构与集合源码,关于List接口的实现类(ArrayList、Vector、LinkedList)的源码剖析
目录 ArrayList ArrayList的特点: ArrayList源码解析: Vector Vector的特点: Vector源码解析: LinkedList LinkedList的特点: LinkedList的源码剖析: 使用说明: ArrayList ArrayList的…...
算法基础(python版本)
第二章 算法设计思想 一、搜索排序 1.排序算法 https://visualgo.net/zh/sorting (1)冒泡排序 # 思路: # (1)比较相邻元素,如果第一个比第二个大,则交换他们 # (2)第一轮下来,可以保证最后一个数一定是最大的;第二…...
使用Arrays.Sort并定制Comparator排序解决合并区间
合并区间-力扣算法题56题 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入&am…...
【机器学习】039_合理初始化
一、稳定训练 目标:使梯度值在更合理的范围内 常见方法如下: 将乘法变为加法 ResNet:当层数较多时,会加入一些加法进去 LSTM:如果时序序列较长时,把一些对时序的乘法做加法 归一化 梯度归一化&…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
快刀集(1): 一刀斩断视频片头广告
一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。 电影嘛,要沉浸,…...
