自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 分布式锁相关

1.redis中的红锁写这个主要原因,redis实现分布式锁有个问题,那么就是重复枷锁的问题,也就是如果主节点宕机,但是锁没有更新到从节点,就会造成重复枷锁的情况。而红锁就可以解决这个情况。当然上面还有个问题,就是锁丢失,因为锁丢失造成的可能出现重复枷锁。红锁执行过程:一个客户端需要做如下操作来获取锁:1、获取当前时间(单位是毫秒)。2、轮流用相同的key和随机值在N个节点上请求锁,在这一步里,客户端在每个master上请求锁时,会有一个和总的锁释放时间相比小的多的超时时间。比如如果锁自动释放时

2021-07-28 15:29:28 142

原创 mysql随身记

数据库怎么实现的四大特性https://www.jb51.net/article/161042.htm原子性原子性是根据undolog实现的,undo log名为回滚日志,是实现原子性的关键,当事务回滚时能够撤销所有已经成功执行的sql语句,他需要记录你要回滚的相应日志信息。同时例如(1)当你delete一条数据的时候,就需要记录这条数据的信息,回滚的时候,insert这条旧数据(2)当你update一条数据的时候,就需要记录之前的旧值,回滚的时候,根据旧值执行update操作(3)当年in

2021-07-27 22:30:44 186

原创 java并发

力扣1293bfs超级经典题 记录一下补充重点:补充1 JMM(java内存模型不是jvm内存模型)一定要区分好,JMM 仅仅是java内存模型,和jvm一点关系没有**JMM:**屏蔽了各种硬件和操作系统的对内存访问差异,以实现让java程序在各种平台下都能达到一致的内存访问效果。用来解决由于多线程操作共享变量时,存在的原子性、可见性(缓存一致性)以及有序性问题。(就像我们想要保证可见性和有序,需要使用内存屏障,而不同平台内存屏障种类不同,例如x86架构只有一个stroeload屏障,因为x

2021-07-17 23:12:29 511

原创 Leetcode84和85新开一个吧,属于单调栈但是更多是一种思想吧,就是设计柱状图的时候都有类似的思想,还有就是思想的一系列流程

Leetcode84 柱状图中的最大矩形方法1:暴力法,就是找每个高度,连续的个数即可未改进的暴力法用时:646ms,打败5.05class Solution { public int largestRectangleArea(int[] heights) { Map<Integer,Integer> map=new HashMap();//存放高度以...

2019-11-13 19:58:56 156

原创 单调栈结构(也会涉及一些别的知识)(利口 讲的很好)

Leetcode42 接雨水题目:方法1: 求每一列的,遍历每个列,当前列只和她左边的最大值以及右边的最大值有关系,因为木桶效应。class Solution { public int trap(int[] height) { //两端一定没水,因为他们 int res=0; for(int i=1;i<height.length...

2019-11-11 19:26:11 157

原创 (有马拉车)leetcode409 最长回文串 125

方法1:自己想的,当时看到就想到了可以看组合数,然后根据有没有剩余元素加1和不加1,因为是字母,所以我不想用hashmap,而是用的数组,类似于计数排序的思想,速度非常快,打败了百分之百class Solution { public int longestPalindrome(String s) { int [] next=new int['z'-'A'+1]; ...

2019-11-01 18:25:36 196

原创 java笔记

1:关于正则表达式:自己搜。。。网上一堆,挺有用的,做字符串的一些题的时候,因为string的replace和replaceAll方法,但是这俩方法是有区别的,就是后者可以用正则表达式参考:replace和replaceAll的区别,正则表达式(网上有一堆)2:string和stringbuilder这些类还是很重要的,多记一些方法,对于做题有用,例如stringbuilder可以用方法直接r...

2019-10-30 11:13:18 82

原创 KMP

先来个题,这块我不确定下次看会不会蒙,但是我也确实用语言表达不出来Leetcode 28暴力法:class Solution { public int strStr(String s1, String s2) { char[] arr1=s1.toCharArray(); char[] arr2=s2.toCharArray(); i...

2019-10-30 10:15:07 79

原创 天池新人赛-机器学习问题总结

1:sklearn的参数矩阵(dataframe包括),必须是2维,这个时候如果是series必须转array然后reshape(1,-1),其他的dataframe不需要这样,只有series需要这样2:dataframe 取均值是返回一个series,里面有很多列均值,然后通过。values转换为nparray,然后可以求中间值,求和等操作...

2019-10-30 00:46:37 146

原创 连续子数组的问题,本来想在原来那个写,但是怕太多了自己都不想看了,重新开一个

Leetcode525:连续数组题目:方法1:把0变-1,等价于求连续子数组累加和为0的最大连续子数组的长度,但是这种问题都会有一个边界,只要求最大连续子数组的长度都会有边界问题,这个是0,-1 但是如果我改成求累加和为7的最大连续子数组的长度,那么边界就是7,-1,也就是首先把(7,-1)放到map里面class Solution { public int findMaxLe...

2019-10-27 13:13:52 106

原创 某易 压缩字符串(这个题好到不得了,对于计算表达式都可以这么做)

就是,{}这里面用一个地柜去求解出结果,自定义了一个数据类型package orc.shi.s;public class isB { public static class data { int index; String str; public data(int index,String str){ this.index=index; this.str=str;...

2019-10-26 09:21:59 159

原创 某 易最大杀伤力

题目:某游戏是一个卡牌类游戏,玩家通过战斗或抽牌可以拿到一些 技能牌,每张技能牌都有对应的伤害值(伤 害值>=0),当你有 了组合技属性之后,你可以在自己手头上选择任意张技能牌, 以组合技的方式来攻击 boss,组合技的总伤害将等于所组合的 各张技能牌的伤害值的乘积(只有一张牌时,组合技伤害值等于 这张牌 本身的伤害值),但是能发动组合技必须有个前提:所有 被选择的技能牌的伤害系数...

2019-10-25 20:10:12 109

原创 某汤算法题,倒水求面积

加粗样式package orc.shi.s;public class isB {public static void main(String[] args) { //旷世笔试题 int[] a= {5,4,3,2,1,6,78,6,54,4,4,4,4,4,4,490,78,78,89}; System.out.println(process(0,a,0));}public ...

2019-10-23 19:53:43 143

原创 Leetcode20 有效的表达式

开始以为case不全,因为我设置了一个s==null s.length()1 但是我没注意到的是,snull和s是空串完全不一样,s.length=0才表示是空串,题目很简单,一个栈就解决了class Solution { public boolean isValid(String s) { //栈 Stack<Character> s...

2019-10-23 18:44:00 149

原创 Leetcode1139 最大以1为边界的正方形(预处理数组技巧)

方法1:左神的暴力法和预处里数组检查法class Solution { //数组预处理法,大幅度加快速度 public int largest1BorderedSquare(int[][] grid) { if(grid.length==0||grid[0].length==0){ return 0; } i...

2019-10-23 10:30:34 269

原创 Leetcode41缺失的第一个正数,其实自己做真坐不上,而且老师讲的方法,为什么对,就是交换那个地方,也不知道,反正这个题不适合我

class Solution { public int firstMissingPositive(int[] a) { int l = 0;//表示目前已经冲到的数 int r = a.length;//表示可以冲的上限,也就是在网上就冲不上去了 while(l<r){ if(a[l]==l+1){ ...

2019-10-22 19:40:56 102

原创 Leetcode70爬楼梯,全宇宙最全解法

方法1 暴力地柜,超时了。。从头遍历,每次遍历两种可能 大该是o2的nclass Solution { int count=0; public int climbStairs(int n) { process(n,0); return count; } public void process(int n,int cur){ ...

2019-10-21 10:13:46 268

原创 Leetcode55跳跃游戏和跳跃游戏二

Leetcode55 跳跃游戏1class Solution { public boolean canJump(int[] nums) { int max=0;//最大的距离 for(int i=0;i<nums.length;i++){ if(max<i) return false; max=M...

2019-10-21 09:13:17 155

原创 Leetcode编程遇到的问题

问题1: String和String比较相等,只能用equals方法。。我擦,例如a="c"和 b="c"比较,地址不一样,用==就不一样,==比较的是地址(不是基础类型的时候,基础类型当然是值,基础类型只能比较值),equals比较的是字符串的值...

2019-10-20 17:30:42 127

原创 二叉搜索树转化为排序的双向链表(bst)和Leetcode108 将有序数组转平衡二叉树

方法1:地柜我不知道为啥,lintcode就是报空指针,同一个例子,我跑就不报,他跑就报,实在是有病。process作用就是返回一个排序后的链表,那么left得到的就是左边排序的链表,right就是得到右边的,如果只有一个节点那么就是这个节点了对吧,和归并排序一个思想(merge,,虽然我有点忘了归并拍虚了)。Tpublic class Solution { /** * @...

2019-10-20 12:42:32 217

原创 Leetcode76覆盖最小子串(都说是魔板操作)

方法1:在这里插入代码片

2019-10-20 11:57:23 68

原创 Leetcode438找字符串的字母异构词

方法1:用一个26个长度的int数组表示p串字符出现的次数(map也行,大多数是用map的),从时间考虑的话用int数组,然后窗口的i,j指针指向第一个元素,j向右走,用一个计数器标记如果map中元素用了class Solution { List<Integer> res=new ArrayList(); public List<Integer> find...

2019-10-19 12:33:41 304

原创 Leetcode795(不是滑动窗口但是可以用吧,虽然我没写出了)

就是统计以每个节点结尾的满足需求的。居然是结尾,不是起始,而且从-1开始,这都是点,记住class Solution { public int numSubarrayBoundedMax(int[] A, int L, int R) { //思想就是如果当前节点在l到r之间,那么所有以他结尾的都是可以的,然后如果小于l的那种,要看他前面最近连续的(被last标记了),两者...

2019-10-19 08:52:33 102

原创 左神進階班

【题目】给定数组 arr 和整数 num,共返回有多少个子数组满足如下情况:max(arr[i…j]) - min(arr[i…j]) <= nummax(arr[i…j])表示子数组 arr[i…j]中的最大值,min(arr[i…j])表示子数组 arr[i…j]中的最 小值。package orc.shi.s;import java.util.LinkedList;pu...

2019-10-18 20:29:01 74

原创 Leetcode239滑动窗口的最大值

方法1:代码最多,也是最容易写的滑动窗口,就是用双端列表实现,插入都是在尾端,左端第一个元素一定是最大值,数组也是两个指针,l和r,r每次向右移动一个位置,然后插入队列,就是和队列的右端进行比较,如果大于右端,右端弹出(不要了,不会影响结果,没用的),一直到遇到等于或者大于他的,然后插入,如果l移动一个位置,就要看左端是否失效(就是是否此位置不在窗口中了),或者用l和队列的左端元素比较,看是否相...

2019-10-18 11:04:12 102

原创 Leetcode 329矩阵中的最长递增路径

方法1:暴力递归,这个很简单,就是对每一个位置求最大递增路径,然后在看谁最大,单独对每一个位置,可以先递归看是否可左,上,下,右,以及如果可以走的最大递增路径,然后取最大值即是所求,代码很简单,没什么难扣的边界,关键是这个方法是超时的,不行的,因为存在大量重复的递归操作,所以引入方法2,记忆化搜索,我感觉这个题貌似没办法转dp,因为怎么确定初始的值呢。。。更正:可以dp,哎,奈何我如此菜,根本没...

2019-10-17 09:00:02 169

原创 Leetcode49 字母异位词分组

方法1:就是用map,看,每一个次字符一样,个数一样,那么排序之后,一定一样,也就是key一样,这样可以放到一个map,然后map的value是个list即可,class Solution { public List<List<String>> groupAnagrams(String[] strs) { List<List<Strin...

2019-10-16 20:59:34 53

原创 leetcode263-264丑数

方法1:从头遍历找到第n个,但是会超时的,判断丑数的方法就是,把是2的因子全部去掉,把含5的因子全部去掉,把3的因子全部去掉,看是否是1.class Solution { public int nthUglyNumber(int n) { int count=1; int i=1; while(count<n){ ...

2019-10-16 15:11:36 119

原创 Leetcode 寻找最近的回文数

是个高反对低赞的题,但是感觉学完这个,回文也就没问题了思路:确定标准回文(标准回文数就是把例如12345>12321),下面的其他操作都是在这个基础之上展开的。求距离最近的最大回文数求距离最近的最小回文数求最大回文数:对数组进行长度增加1,就是在头部增加一个位置,然后把这个位置令为0,然后对len/2之前第一个元素开始加1,如果不大于9就停止,返回这个数的标准回文即可,如果大...

2019-10-16 11:25:19 276

原创 左神进阶班找两数的值等于目标值

1.找出有序数组的两个数,使其值等于目标值双指针法package orc.shi.s;import java.util.HashMap;import java.util.Map;public class test1 { public static void main(String[] args) { int [] arr= {1,2,3,4,5,6,7,8}; int ta...

2019-10-15 15:42:01 129

原创 Leetcode 回文数

方法1:就是左右比class Solution { public boolean isPalindrome(int x) { if(x<0){ return false; } int n=Math.abs(x); int help=1; //下面这个代码确实是越界了,他输入一个正好是int最...

2019-10-14 21:22:10 80

原创 左神-基础-二讲-堆和堆排序

public class leet832__1 { /** * 堆排序最重要的两个函数就是:上浮和下沉 * 上浮:插入元素时发生 * 下沉:删除元素(必发生在顶部)或者修改元素变小 * * 构建堆:可以从头遍历进行上浮 * 也可以从n/2-1位置进行下沉 * * * 堆的一些重要特点:i结点的父结点下标就...

2019-10-14 20:10:54 221

原创 (扩充的有点多,不过基本点是子数组求和+数组预处理+伪压缩矩阵(悄悄。。))Leetcode 53最大子序列求和(有扩充,15阿里,leetcode1074)

方法1:class Solution { public int maxSubArray(int[] nums) { int sum=0; int now=nums[0]; for(int i=0;i<nums.length;i++){ if(sum<0){ sum=nums[i...

2019-10-14 20:10:20 82

原创 Leetcode64最小路径和(暴力递归转动态规划)

递归版本:class Solution { public int minPathSum(int[][] grid) { //一共三种情况,左右都可以,只能左,只能有 int m=grid.length; int n=grid[0].length; return dfs(grid,0,0,m,n); } pu...

2019-10-13 20:38:41 169

原创 (超级无敌重要,背下来背下来)Leetcode(46,47,78,90,39,40)dfs和回溯(全排列)

简单的打印全排列:dfs,用标记数组used标记是否用过package leetcode160;public class queue { static int count=0; public static void main(String[] args) { char[] chs= {'a','b','c'}; int[] used=new int[3]; char[] t...

2019-10-13 12:23:20 185

原创 lintcode上有汉诺塔的题

,,

2019-10-11 18:04:11 85

原创 Leetcode122 买卖股票的最佳时机Ⅱ

峰谷法(我用的贪心但是发现实现是一样的)class Solution { public int maxProfit(int[] prices) { //贪心,交易次数最少,如果题目限制交易次数,用他 int i=0; int j=0; int sum=0; for(int k=0;k<prices.le...

2019-10-11 13:17:47 98

原创 宣讲会议室最多

题目:一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目 的宣讲。 给你每一个项目开始的时间和结束的时间(给你一个数 组,里面 是一个个具体的项目),你来安排宣讲的日程,要求会 议室进行 的宣讲的场次最多。返回这个最多的宣讲场次public class Code_06_BestArrange { public static class Program { public int st...

2019-10-11 12:18:51 199

原创 Leetcode 502IPO(项目最大利润)

题不难,不属于hard,应该算中,贪心策略很符合人的思维,就是在能够做的项目里选择利润最大的去做,没做一次重新更新能做的项目,再去选,这里用了一个大根堆和一个小根堆,class Solution { public int findMaximizedCapital(int k, int W, int[] Profits, int[] Capital) { int res=0...

2019-10-11 10:48:51 238

原创 贪心算法之切金条

题目:一块金条切成两半,是需要花费和长度数值一样的铜板的。比如 长度为20的 金条,不管切成长度多大的两半,都要花费20个铜 板。一群人想整分整块金 条,怎么分最省铜板? 例如,给定数组{10,20,30},代表一共三个人,整块金条长度为 10+20+30=60. 金条要分成10,20,30三个部分。 如果, 先把长 度60的金条分成10和50,花费60 再把长度50的金条分成20和30...

2019-10-11 09:16:12 549

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除