- 博客(28)
- 收藏
- 关注
原创 SQL分组TopK问题
185. 部门工资前三高的所有员工 法一:利用子查询 SELECT d.Name AS 'Department', e1.Name AS 'Employee', e1.Salary FROM Employee e1 JOIN Department d ON e1.DepartmentId = d.Id WHERE 3 > (SELECT COUNT(DISTINCT e2.Salary) FROM
2021-05-30 13:38:32
1300
原创 leetcode 78. 子集
子集问题 78. 子集 常规方法暂不介绍,介绍一种巧妙的解法:二进制遍历 每次构造一个子集,原数组每个元素都有两种情况:选和不选,对应到二进制的 0、1,于是可以一个二进制数对应一个子集,比如:0000 对应空集, 1111 对应全集。 代码如下 class Solution { public List<List<Integer>> subsets(int[] nums) { int n = nums.length; List<List&
2021-05-16 23:37:53
202
原创 Java多线程:并行处理串行输出的五种方法
最近研究了一些多线程中并行处理,串行输出的题。总结了几种方法。 这种题的内容一般是:三个线程,分别能够输出"A"、“B”、“C”,按照"A"、“B”、"C"的顺序输出
2021-05-03 12:22:04
1472
原创 位运算取余
当 除数 为 2 的幂次时 x%n=x&(n−1) x \% n = x \& (n-1) x%n=x&(n−1) 其中 n=2k n = 2^k n=2k
2020-08-14 15:04:55
243
原创 1~n中m的出现次数
从下面两道题总结的规律 剑指 Offer 43. 1~n整数中1出现的次数 面试题 17.06. 2出现的次数 根据下面的题解 面试题43. 1~n 整数中 1 出现的次数(清晰图解) 进一步应用到任意数字 m 的情况 class Solution { public int countDigit(int n, int m) { int high = n / 10; int low = 0; int cur = n % 10; int d
2020-08-09 17:04:42
571
原创 判定字符是否唯一
面试题 01.01. 判定字符是否唯一 方法1:哈希表 方法2:位运算 ASCII码一共128个,long型数值位长64,用两个long变量,0代表当前字符未出现,1表示出现过 class Solution { public boolean isUnique(String astr) { //方法1 // HashSet<Character> set = new HashSet<>(); // for(char c : astr.to
2020-07-17 16:44:21
247
原创 归并排序模板
void merge(int[] arr, int start, int end) { if (start == end) return; int mid = (start + end) / 2; merge(arr, start, mid); merge(arr, mid + 1, end); int[] temp = new int[end - start + 1]; int i = start, ...
2020-07-01 21:52:13
120
原创 微分算子法
D=d/dx(1) D = d/dx\tag{1} D=d/dx(1) y∗=F(D)f(x)(2) y*=F(D)f(x)\tag{2} y∗=F(D)f(x)(2) F(D)eax=F(a)eax(3) F(D)e^{ax} = F(a)e^{ax}\tag{3} F(D)eax=F(a)eax(3) F(D)eaxg(x)=eaxF(D+a)g(x)(4) F(D)e^{ax}g(x) = e^{ax}F(D+a)g(x)\tag{4} F(D)eaxg(x)=eaxF(D+a)g(x)(4) F(D
2020-06-29 15:09:14
2039
原创 面试题52. 两个链表的第一个公共节点
面试题52. 两个链表的第一个公共节点 两个指针同时行走,当到链表尾部就跳到另一个链表头部,当两个指针相遇时停止 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ publi
2020-06-17 22:53:53
134
原创 739.每日温度-单调栈
739.每日温度 暴力法 O(n2)O(n^2)O(n2) class Solution { public int[] dailyTemperatures(int[] T) { int L = T.length; int[] res = new int[L]; for(int i=0;i<L;i++){ int tmp = 1; for(int j=i+1;j<L;j++){
2020-06-13 13:38:32
205
原创 面试题35. 复杂链表的复制
面试题35. 复杂链表的复制 链表深拷贝 第一步:copyList 在每个原节点后面插入复制节点 第二步:randromCopy 复制随机连接 第三步:reList 把原链表和复制的链表分离出来 java代码如下 /* // Definition for a Node. class Node { int val; Node next; Node random; ...
2020-03-22 22:35:38
177
原创 贝祖定理
对任何整数aaa、bbb和mmm,关于未知数xxx和yyy的线性丢番图方程 ax+by=m ax+by=m ax+by=m 有整数解时当且仅当mmm是aaa及bbb的最大公约数ddd的倍数。 m%gcd(x,y)=0 m\%gcd(x,y)=0 m%gcd(x,y)=0 ...
2020-03-21 12:52:48
2338
原创 idea tomcat中文乱码
该调成UTF-8的地方都调了 tomcat7换成tomcat9也是乱码 单独打开tomcat没有乱码 在idea里一直是乱码 最终根据这篇文章解决 【IntelliJ IDEA】 启动Tomcat时,有乱码,出现 “淇℃伅 [main] org.apach” 解决方案 修改tomcat安装目录下的config/logging.properties文件,找到java.util.logging.Con...
2020-03-20 13:32:35
153
原创 代理模式学习笔记
代理模式 Proxy 根据下面的文章学习代理模式 https://juejin.im/post/5a99048a6fb9a028d5668e62#heading-0 https://juejin.im/post/5dec590551882512480a76e3 我们的目标:增强方法,尤其是在一些封装好,不能直接修改原方法的情况下,对方法进行增强。 解决方案 a)继承 最直观解决方案 b)聚合(静态...
2020-03-17 00:27:30
160
原创 摩尔投票法 169. 多数元素
class Solution { public int majorityElement(int[] nums) { //摩尔投票法 int m = 0; int p = 0; for(int num:nums){ if(p == 0){ m = num; ...
2020-03-13 11:37:48
138
原创 二叉树求深度模板
543. 二叉树的直径 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solutio...
2020-03-10 15:33:58
170
原创 bug(面试题59 - II. 队列的最大值)(已解决)
做面试题59 - II. 队列的最大值时遇见个bug public int pop_front() { if(q.isEmpty()) return -1; //int val = q.poll(); if(q.peek() == d.peekFirst()){ d.poll(); } ...
2020-03-07 21:35:21
160
原创 LeetCode 994. 腐烂的橘子
看别人的写法模仿了一下 为橘子引入腐败时间 然后就是BFS了 class Orange{ int x; int y; int time; public Orange(int x,int y,int time){ this.x = x; this.y = y; this.time = time; } } clas...
2020-03-04 20:11:31
136
原创 LeetCode剑指4,二维数组中查找
右上角或左下角开始寻找 优化方向:每次不一定只向下或向左移一位,用二分的思想找到连续同方向移动的终止坐标 class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix.length==0) return false; int m = ...
2020-02-24 17:13:41
178
原创 【LeetCode8】40.组合数目II
class Solution { List<List<Integer>> res = new ArrayList<>(); int[] candidates; int len; public List<List<Integer>> combinationSum2(int[] candidates,...
2020-02-22 12:53:41
148
原创 【LeetCode刷题记录7】39.组合数目(回溯算法)
39.组合数目 注意: *题中有可以重复使用数组元素的条件*(没好好看条件,程序过了,自己一直想不明白为啥过了,后来发现误打误撞满足了题中的条件) 每次更新路径都要在复制的原路径上加元素,不能直接用旧路径,子分支多于一个,假如第一个分支在原路径上更新,后面的分支也要更新,可原路径已经没了 每次都要产生一堆List记录路径,可以加入及时删除List的语句,降低空间复杂度 class Solut...
2020-02-22 00:45:38
138
原创 java二分搜索模板
class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length-1; while(left<=right){ int mid = left+((right-left)>>...
2020-02-19 16:27:21
178
原创 【LeetCode6】剑指offer.面试题03. 数组中重复的数字
布尔数组 class Solution { public int findRepeatNumber(int[] nums) { int len = nums.length; boolean[] vis = new boolean[len]; for(int i:nums){ if(vis[i]==true) retu...
2020-02-19 12:32:22
241
原创 区块链学习记录1
跟着网上的教程用java实现了个简易的区块链,真正的比特币之类应该是加入了一万个细节:) 主要根据以下几篇文章学习: SHA256算法原理详解 150行java代码让你彻底理解区块链是什么 区块链之工作量证明,挖矿是什么? 代码如下(最后输出的是json格式,需要下个gson的jar包导入) 定义区块类 import java.util.Date; public class Block { ...
2020-02-10 22:52:08
285
原创 【LeetCode刷题记录4】24. 两两交换链表中的节点
个人LeetCode刷题记录:24. 两两交换链表中的节点 题目地址 递推法 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Sol...
2020-02-03 15:53:45
163
原创 【LeetCode刷题记录3】23. 合并K个排序链表
法一:暴力法(差一个测试无法通过) /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public Li...
2020-02-03 15:43:39
201
原创 【LeetCode刷题记录2】8. 字符串转换整数 (atoi)
个人LeetCode刷题记录:8. 字符串转换整数 (atoi) 题目地址 java求解代码 class Solution { public int myAtoi(String str) { char[] charList = str.toCharArray(); //String转字符数组 int flag = 1; //正负号标记 ...
2020-02-01 18:43:13
195
原创 【LeetCode刷题记录1】7. 整数反转
个人LeetCode刷题记录:7. 整数反转 题目地址 java求解代码 class Solution { public int reverse(int x) { int res = 0; //记录最后返回的结果值 int t ; //用来临时记录 while(x != 0) //因为x可取正负,不适合用x>0,或x<0,每次...
2020-02-01 18:42:19
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅