- 博客(38)
- 收藏
- 关注
原创 Leetcode 第227 场周赛总结
题目链接class Solution { public boolean check(int[] nums) { // 判断是否存在两个非递减数列,且后一个的最大值 <= 前一个的最小值 int count = 0; // 逆序对个数 for (int i = 1; i < nums.length; ++i) { if (nums[i] < nums[i - 1]) count++; }
2021-02-07 12:36:30 305
原创 Leetcode 665. Non-decreasing Array
题目详情找规律class Solution { public boolean checkPossibility(int[] nums) { int count = 0; // 分情况讨论 for (int i = 1; i < nums.length; ++i) { if (nums[i] < nums[i - 1]) { //1. 当出现类似1536,修改nums[i-1] =
2021-02-07 10:00:55 127
原创 剑指 Offer 45. 把数组排成最小的数
题目链接排序法思路很巧妙,具体看注释,证明过程参考:K神题解class Solution { public String minNumber(int[] nums) { // 转化为排序问题,A拼接B > B拼接A,则B > A String[] strings = new String[nums.length]; for (int i = 0; i < nums.length; ++i) strings[i] = String
2021-02-06 21:04:20 113
原创 Leetcode1423. 可获得的最大点数
题目详情滑动窗口class Solution { public int maxScore(int[] cardPoints, int k) { // 使用滑动窗口,寻找连续的,长度为cardPoints.length-k的,且和最小的子数组 // 剩下的元素的和即为题目所求的maximum score int total = 0; for (int value: cardPoints) { total +=
2021-02-06 15:54:44 81
原创 Leetcode 1208. Get Equal Substrings Within Budget
题目链接参考题解:负雪明烛题解滑动窗口套滑动窗口模板,总体思路是右指针向前探索,不满足要求的时候左指针前进,直到符合要求,重复上述过程,在这个过程中一直更新满足要求的最大值。class Solution { public int equalSubstring(String s, String t, int maxCost) { int left = 0, right = 0; int N = s.length(); int[] diff = n
2021-02-05 11:04:11 127
原创 剑指 Offer 41. 数据流中的中位数
题目链接维护两个优先队列class MedianFinder { Queue<Integer> A, B; /** initialize your data structure here. */ public MedianFinder() { // A保存较大的一半,小顶堆 A = new PriorityQueue<>(); // B保存较小的一半,大顶堆 B = new Priority
2021-02-04 20:26:18 83
原创 剑指offer 复杂链表的复制
牛客链接普通链表的深拷贝只需要通过遍历原链表一次就能实现,但是题目给出的复杂链表多了random指针,会跳跃性的指向任意节点,这让我们无法通过一次遍历解决这个问题。利用HashMap建立映射提前存储新节点对应哪个原节点,这样就能够找到新节点的random指针应该指向哪(指向原节点的random指针指向的节点的对应新节点)。/*public class RandomListNode { int label; RandomListNode next = null; Random
2021-02-02 22:37:52 69
原创 Leetcode 191. Number of 1 Bits
题目链接本题可以利用32位int,写循环右移32次来做,但是我觉得更自然的方法是以下两种。1. 利用无符号右移Java没有无符号整型,但是利用>>>可以实现无符号右移,即不论符号位是1还是0,统一在左侧补0。public class Solution { public int hammingWeight(int n) { int count = 0; while (n != 0) { count += (n &
2021-02-02 00:27:35 118
原创 Leetcode 215. Kth Largest Element in an Array 优先队列&快速选择
题目链接快速选择使用快速排序的partition方法,结合二分查找的思想。class Solution { public int findKthLargest(int[] nums, int k) { if (nums == null || nums.length == 0 || k > nums.length) return 0; if (nums.length == 1) return 1; int lo = 0; i
2021-01-31 17:15:36 128
原创 Leetcode 17. Letter Combinations of a Phone Number
题目链接DFSclass Solution { public List<String> letterCombinations(String digits) { List<String> list = new ArrayList<String>(); if(digits.length() == 0) return list; Map<Character, String> map = new HashMa
2021-01-31 12:44:46 85
原创 Leetcode 1675. Minimize Deviation in Array 两种做法(带注释)
题目链接1. 使用TreeSetclass Solution { public int minimumDeviation(int[] nums) { if (nums == null || nums.length == 0) return 0; TreeSet<Integer> set = new TreeSet<>(); // 1. Pre-double all the odd numbers, and numbers o
2021-01-31 11:55:44 238
原创 【踩坑系列】sm整合,配置dataSource时value=“${username}“获取的是系统用户名
第一次写ssm整合demo,最后测试的时候死活连接不上数据库,查看错误信息时发现:Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: Access denied for user 'Alchemist'@'localhost'
2020-08-04 19:40:45 1237
原创 Java异常类总结
异常类finally唯一不执行的情况?使用了退出虚拟机的指令如System.exit(1);否则一定会执行finally,如果try,catch中有return或者throw,那么在执行之前先执行finally中的代码块,如果finally中也有return或throw,那就直接出去了,不会返回到try,catch中。如果在finally中修改了在try,catch中要返回的值,如果是基本数据类型则不会被修改,如果是引用数据类型(对象,数组)就会修改在缓存中的值,进而改变try,catch中return
2020-07-10 17:55:53 228
原创 Java集合框架总结
Collection可以存放不同类型的数据。用ArrayList实现,初始长度10,长度不够就自动扩容。(1.5倍)。Vector相比ArrayList是线程安全的,但效率低(synchronized),扩容时变为2倍。LinkedList为双向链表。相比数组,不能随机访问,但是插入删除不需要大规模的移动元素。迭代器使用实例:List list = new ArrayList();list.add(1);list.add("a");list.add("wjs");// Collec
2020-07-10 17:53:25 102
原创 Java常用类小结
包装类自动装箱(int->Integer): Integer.valueOf(i)自动拆箱(Integer->int): integer.intValue()当包装类类和基本类型比较的时候,会将包装类自动拆箱,所以比较结果总是True。Integer中有一个缓存,在自动装箱的时候Integer i = 1,调用valueOf方法将基本数据类型转化为Integer对象,如果这个数字i >= IntegerCache.low && i <= IntegerCach
2020-07-10 17:49:10 125
原创 Leetcode 100. Same Tree
// 递归解法public boolean isSameTree(TreeNode p, TreeNode q) { if(p == null && q == null){ return true; } if(p == null || q == null){ return false; } else if(p.val != q.val){
2020-06-05 00:28:12 96
原创 Leetcode 1143. 最长公共子序列
class Solution {public: int longestCommonSubsequence(string text1, string text2) { // 动态规划 递推式 // dp[i][j] = dp[i-1][j-1] + 1 if text1[i] = text2[i] // dp[i][j] = max(dp[i][j-1], dp[i-1][j]) else int len1 = text1.size
2020-06-03 20:42:41 174
原创 Leetcode 面试题64. 求1+2+…+n
class Solution {public: int sumNums(int n) { !n || (n += sumNums(n-1)); return n; } int sumNums1(int n){ n && (n += sumNums1(n-1)); return n; }};利用与或来进行条件判断。或的特性:当第一项为1,则直接返回1而不执行第二项。与的特性:当第一项为0
2020-06-02 20:07:18 94
原创 leetcode 176. Second Highest Salary
limit子句对记录进行筛选limit row_count offset offset_numrow_count代表输出的行数,offset代表偏移量。即从(1+offset_num)行开始展示row_count行。常常与order by 子句一起使用,让操作更有意义。例如这道题,取出第二高的薪水,就可以先将记录按照薪水数值降序排序,然后取出第二位的一行,即row_count=1,offset_num=1。用代码表示就是select distinct salary from Empl
2020-05-30 01:01:59 118
原创 《剑指offer》16. 数值的整数次方 python
快速幂class Solution: def myPow(self, x: float, n: int) -> float: if x == 0: return 0 # 幂数为负数,取倒数 if n < 0: x, n = 1/x, -n result = 1 # 二分法求快速幂 while n: # 当幂数为奇数的时候
2020-05-26 15:06:29 171
原创 《剑指offer》15. 二进制中1的个数 python
位运算def hammingWeight(self, n: int) -> int: # python 的int是无限大的,所以不能以unsigned flag溢出来判断 flag = 1 count = 0 for i in range(32): if n & flag != 0: count += 1 flag = flag << 1 return count最好不要采用右移n,和1与的方式,若n < 0
2020-05-25 16:56:44 184
原创 《剑指offer》14. 剪绳子 python
贪心class Solution: def cuttingRope(self, n: int) -> int: if n < 2: return 0 if n == 2: return 1 if n == 3: return 2 # 尽量剪3出来 timeOf3 = int(n / 3) if n - timeOf3*3
2020-05-25 15:55:27 104
原创 初试shell
#! /bin/shecho -n please, input a number:read numfor((i=$num;i>0;i--))do for((j=$i;j>0;j--)) do echo -n "$j" done echo -en "\n"done输出效果:tips:echo -n 表示输出末尾不换行 echo -e 表示识别转义符号,使用echo也能起到换行的作用。 for循环使用类似C的写法,使用.
2020-05-16 23:08:01 105
原创 FTP 连接超时解决办法
连接linux中的ftp服务器超时,考虑关闭linux中的自带防火墙。两个常见防火墙依此检查是否开启1. firewalld2. iptables可以看见这里iptables开启,导致ftp连接超时,关闭iptables服务后,ftp连接成功。...
2020-05-13 19:13:18 32272
原创 最大长方体问题
此题思路:1,先编写一维的“最大字段和”的解法。2,基于“最大字段和”,编写二维的“最大子矩阵和”的解法。3,基于“最大子矩阵和”,编写三维的“最大子长方体和”的解法。一维最大子段和采用动态规划,高维的则是遍历多个相邻行(最高维)的情况,将这些行压缩叠加为低一维的数据b,再用低一维的最大子段和算法算出最大子段和,这个结果就是高一维的最大子段和。代码:#include&l...
2019-11-29 22:13:34 595
原创 工作分配问题(回溯法)
Description有n件工作分配给n个人,将工作i分配给第j个人需要支付劳务费用Cij。请为每人分配一个工作,并使得总劳务费用达到最小。输入格式第一行一个正整数n(1<=n<=11),表示n个工作数,接下来n行,每行代表第i个工作支付给n个不同的人的劳务费用。输出格式两行。第一行为最小的总劳务费用。第二行有n个数,表示工作分配方案。...
2019-11-22 00:15:01 1913
原创 端口查看与结束进程
查看9999端口的使用情况netstat -ano | findstr "9999"查看996对应的是哪个进程,由图可知,学java注定996(请无视那个有道词典)tasklist | findstr "996"结束进程taskkill /f /t /im javaw.exe...
2019-11-13 21:52:49 109
原创 适配器模式
适配器的目的是在不改变原有类的情况下,使用一个适配器类来为有类添加新的方法,得到新的接口。类适配器:Adapter继承Adaptee,编写缺少的方法。对象适配器:Adapter包装了Adaptee的一个实例。...
2019-10-16 08:40:10 89
原创 python构造字典的坑
今天写手动决策树,一直在debug解决计算出的信息增益为负数的问题,最终发现是这个小问题,构造字典会自动删除重复的键值对。在数据集中可能出现feture:label完全相同的情况,所以导致了错误。由于前两个list的长度之和不等于第三个list的长度,我在计算划分后的熵值的时候将len(dicList) (以下为sortList,是排序后的dicList) 看作样本总数,故分母偏小,...
2019-10-11 15:26:09 209
原创 有重复元素的全排列
使用递归的方法解决全排列问题全排列的本质:对于一个字符串,递归的令每一个元素与其后面的每一个元素交换。或者可以理解为例如字符串abc:先观察第一个元素a,将a分别与b,c交换 得到bac cba 再对于abc, bac, cba 观察第二个元素,与第三个元素交换得 acb, bca, cab ...
2019-10-09 13:22:26 2380
原创 DataFrame list np.array 之间的相互转换
df <-> np.arrayarr = np.array(dataset)df = pd.DataFrame(arr)np.array <-> listarr = np.array(list)list = arr.tolist()
2019-09-29 12:24:59 442
原创 决策树的剪枝和连续值,缺失值处理
剪枝 预剪枝:在使用训练集生成时,如果划分不能带来泛化性能的提升(验证集),就将其标注为叶结点。可能会导致欠拟合。 后剪枝:从训练集生成完整的决策树后自底向上来看将子树变成叶结点会不会增加泛化能力。性能优,计算量大。连续值 二分法。用过的属性可以继续用。缺失值(1)如何划分? 分析每一个属性的信息增益时,忽略对于这个属性的缺失部分,乘以系数ρ。(无缺失...
2019-09-23 16:29:52 309
原创 matplotlib colorbar
colorbar(**kwargs)colorbar(mappable, **kwargs)colorbar(mappable, cax=cax, **kwargs)colorbar(mappable, ax=ax, **kwargs)没有子图的时候可以直接使用plt.colorbar()有子图的时候,mappable指示一个用于生成映射颜色的对象。省略的时候默认当前图像。...
2019-09-20 18:19:34 1275
原创 分治策略求最大子数组
def maxCrossSum(nums, left, right): mid = int((left+right) / 2) # 初始化为无穷小 left_max = float('-inf') # 倒序遍历左序列,得到从中见到左边延伸的最大值 left_sum = 0 for i in range(mid, left-1, -1): ...
2019-09-10 15:19:17 159
原创 数据降维 初步理解
1、降维的概念降维的目标是用一组维度为d的向量表示维度为D的向量的有用信息(d < D),例如面对稀疏矩阵,为了防止维数太高导致计算量的爆炸增长,就可以采用降维的策略。数据可以降维说明原始数据有重复的或无用的信息,降维后的数据保留大部分重要信息,从而可以代替原始数据输入。2、降维方法2.1、PCA主成分分析对原始特征空间的重构中心:将原本特征空间线性相关的变为线性无关(正交)的。...
2019-08-28 12:39:01 2396
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人