- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 刷题记录
刷题记录剑指offer二叉搜索树第k个结点先遍历左子树不存在遍历自己再遍历右子树数据流中的中位数制造一个大根堆和一个小根堆,当前为偶数时向小根堆里插入并从小根堆提一个到大根堆,奇数则相反,当前偶数则为大根堆的顶部元素,奇数为大根和小根的顶部元素平均值滑动窗口最大值制造一个queue存放索引,从first到last递减,并且保证当前的first在当前的窗口中矩阵中的路径dfs+回溯机器人的运动范围bfs|dfs剪绳子动态规划...
2020-07-20 23:51:29
160
原创 开源项目miaosha学习(四)
上一章结束说到最后进行redis扣减库存和写入MQpublic ResultGeekQ<Boolean> deductStockCache(String goodsId) { ResultGeekQ<Boolean> resultGeekQ = ResultGeekQ.build(); try { //redis操作原子性 Long stock = redisService.decr(GoodsKe
2020-05-26 09:17:28
389
原创 开源项目miaosha学习(三)
上一章介绍到访问/{path}/confirm也就是秒杀系统的核心位置其实一开始不太理解生成秒杀地址的意义,后来查了下了解到秒杀地址的意义是为了防止用户获得秒杀的url而越过前端界面直接秒杀,所以就用uuid的md5码来生成,这样连程序设计人员也不知道地址是什么,加上本身对于秒杀的Controller都通过自定义注解配合拦截器来实现限流,所以不会出现刷单的现象好了,现在进入/{path}/confirm 处理器秒杀处理器首先会检查上一步生成的秒杀路径是否正确,检查方式也很简单直接查redis就行
2020-05-22 18:40:33
393
原创 开源项目miaosha学习(二)
上一章程序走到了商品列表的位置,补充两点,一是debug的时候最好把缓存关闭,不然可能会因为页面缓存有意想不到的惊喜 ????关闭方法:Chrome浏览器F12 NetWork Disable Cache二是在程序启动的时候,其实会将商品与秒杀有关的信息传入redis中,后续会用redis中的库存进行限流在goods_list.html中可以看到通过点击"详情"会进入goods_detail.htm页面这里注意下不是html是htm页面哈,在static包里,一开始找错了,注意下我们翻
2020-05-21 22:03:29
535
原创 开源项目miaosha学习(一)
github上点赞最多的秒杀项目,地址here从头开始学习,因为没看到相关的介绍文档,希望能通过博客把每一块说清楚哈!(前端方面不是特别懂,但是能看懂个大概)首先启动好项目,(其中前面需要)从http://localhost:8080/login/to_login进入他这里我个人感觉有点问题, 虽然是让填的手机号码,但其实在数据库里对应的是寻找的nickname,后面可以看到是以nickname作为查找的,但是他里面的nickname没有超过11位的所以登不进去,还是自己数据库创建个数据好了弄
2020-05-15 16:15:48
927
原创 LeetCode336回文对
这道题按照左神的做法思路就是将传入的string数组中的所有string存入参数1.首先我们得判断string是否本身就是回文子串并且map中存在空字符串2.判断string的是否存在前缀回文包含string的第一个字符,并且string除前缀回文外的逆序在map中存在3.判断string是否存在后缀回文包含string的最后一个字符,并且string除前缀回文外的逆序在map中存在代码...
2019-11-15 16:21:30
210
原创 求局部最小值问题
我们可以采用二分法,先判断最后一个元素和第一个元素是否是局部最小值,如果是否的话,那在数组中肯定存在一个局部最小值的元素,继续遍历即可 public static int getLessIndex(int[] arr) { if (arr == null || arr.length == 0) { return -1; // no exist ...
2019-10-27 22:11:02
1407
原创 选择项目收益问题
维持一个小根堆和一个大根堆,首先将所有数放入小根堆,每次循环将小根堆里面小于目前手头资金的元素放入大根堆,取出大根堆的顶部元素计算收益,依次循环...
2019-10-27 10:57:27
132
原创 找中位数问题
解法:维持2个堆结构,一个大根堆一个小根堆,每次将大于大根堆堆顶的元素放入小根堆,小于小根堆堆顶的元素放入大根堆最后如果两堆差值大于1则需要将存储数量较多的堆中的堆顶元素弹入另一个堆。...
2019-10-27 10:44:51
437
原创 金块分割问题
类似哈夫曼树的问题,我们可以将数组中的元素插入到最小堆中,每次将堆中所有结点取出两个并并合并结果放入sum并放回堆中,直到堆中元素只有一个为止...
2019-10-27 10:40:05
377
原创 LeetCode88. 合并两个有序数组[JAVA]
由于nums1数组的大小等于n+m所以我们可以从nums1[n+m-1]的位置进行向前遍历,不用担心会覆盖到nums1前面的数值,因为一旦m==0的时候,nums前面的数就可以不用动了。class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int cnt=m+n; ...
2019-10-20 18:41:59
79
原创 LeetCode84. 柱状图中最大的矩形[java]
1.单调栈法维持一个单调递增栈,遍历数组中的元素,一旦发现num[i]>num[i-1],则进栈,否则弹出 栈顶元素,进行计算,一旦发现栈顶元素对应height小于num[i],则将i进栈。最后到达数组末尾,对于所有栈内元素进行处理。所有栈内元素必定一个比一个小,而且还小于数组后面所有元素,所以可以用num[i]*(num.length-i)计算。 public int larges...
2019-10-19 16:37:22
151
原创 LeetCode78. 子集[java]
1.递归解法对于数组中的每一个数,遍历后都有2种可能即放入list或者不放入list,所以我们只要每次对nums中的数进行判断即可。如果存在则进行递归并放入lists集合中 public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> lists = ...
2019-10-19 11:10:46
323
1
原创 LeetCode76. 最小覆盖子串
这道题一眼就能看出是用滑动窗口做的,但最主要的一点是T的字符串问题,并没有说T中的字符是不同的,所以我们还需要一个map去存储T中的字符对应个数,同时维护一个cnt,每次将right++,将map对于字符value值减一,如果还大于等于0,则cnt++,一旦cnt达到T的长度说明我们已经找到了这样的字串,下一步则是移动left,每移动一次字符使得对于字符value值加一,如果加一后大于0,cnt...
2019-10-17 17:06:45
102
原创 LeetCode70. Climbing Stairs
直接采用递归会超时原因是会重复计算,需要改变方法非递归版class Solution { public int climbStairs(int n) { if(n==1) { return 1; } if(n==2) { ...
2019-10-17 14:35:08
109
原创 LeetCode69. Sqrt(x)
二分法即可class Solution { public int mySqrt(int x) { if(x==1) { return 1; } long left=1; long right=x/2; while (left<=right) {...
2019-10-16 16:41:49
91
原创 66. 加一
主要思路是从最后一位判断+1后是否大于10,如果大于则需要向前移一位继续判断,不大于则直接return即可,如果循环完数组还是carry还是大于1则需另创数组。public class Solution { public int[] plusOne(int[] digits) { if (digits.length == 0) return digits; ...
2019-10-16 15:17:57
87
原创 53. 最大子序和
动态规划CurSum记录序列最右边位置的最大值,res记录实际的最大值。class Solution { public int maxSubArray(int[] nums) { int res = Integer.MIN_VALUE, curSum = 0; for (int num : nums) { curSum = Mat...
2019-10-11 16:05:48
71
原创 LeetCode 46 全排列
这道题可以通过递归的方式解决,无论初始nums排序如何,由于是没有重复数字的序列,所以可以每次调换两个数字的位置,最后每个循环结束后利用回溯回到初始序列状态class Solution {public List<List<Integer>> permute(int[] nums) { List<List<Integer>> li...
2019-10-11 11:20:34
69
原创 LeetCode 45 Jump Game II
这里贪婪并不是要在能跳的范围中选跳力最远的那个位置,因为这样选下来不一定是最优解,这么一说感觉又有点不像贪婪算法了。我们这里贪的是一个能到达的最远范围,我们遍历当前跳跃能到的所有位置,然后根据该位置上的跳力来预测下一步能跳到的最远距离,贪出一个最远的范围,一旦当这个范围到达末尾时,当前所用的步数一定是最小步数。这里cur是当前能到达的最远位置,last是上一步能到达的最远位置,我们遍历数组,首先...
2019-10-10 11:03:44
102
原创 (坑爹)关于jdk12在Linux下启动rocketmq
首先咱们在正常启动NameServer时会发现大量的jvm 命令用不了,通过阅读mqnamesrv文件我们可以看到在最后一行其实运行的是runserver文件我们继续打开文件经过一系列更改我们需要将文件改成下面这样注意图中修改的内存大小,原来是8g 需要改小一些这样其实还是启动不了,因为新的jdk已经将DJAVA命令取消掉了所以这里需要改成classpath 命令,但cl...
2019-09-27 20:11:24
294
原创 LeetCode 44 通配符匹配
class Solution { public static void main(String[] args) { Solution s=new Solution(); boolean res=s.isMatch("aa","*"); System.out.println(res); } public boolean isMa...
2019-09-24 21:17:32
81
原创 LeetCode 42 接雨水
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。这个算法需要left和right两个指针分别指向数组的首尾位置,从两边向中间扫描,在当前两指针确定的范围内,先比较两头找出较小值,如果较小值是left指向的值,则从左向右扫描,如果较小值是right指向的值,则从右向左扫描,若遇到的值比当较小值小,则将差值存入结果,如遇到的值大,则重新确定新的窗口...
2019-09-21 21:53:07
61
原创 LeetCode 41. 缺失的第一个正数
给定一个未排序的整数数组,找出其中没有出现的最小的正整数。我们的思路是把1放在数组第一个位置nums[0],2放在第二个位置nums[1],即需要把nums[i]放在nums[nums[i] - 1]上,那么我们遍历整个数组,如果nums[i] != i + 1, 而nums[i]为整数且不大于n,另外nums[i]不等于nums[nums[i] - 1]的话,我们将两者位置调换,如果不满足上述...
2019-09-20 18:38:30
75
原创 LeetCode38 报数
报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一个正整...
2019-09-19 18:18:35
71
原创 leetcode35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。直接二分法即可class Solution {public: int searchInsert(vector<int>& nums, int target) { int low=0; ...
2019-09-09 16:34:11
60
原创 leetcode21 实现 strStr()
这题虽然是简单题,但看到别人提到KMP算法就特意从网上搜索了下,发现真正算起来并不是这么简单,特意转载大佬的文章研习一下!转载链接 https://blog.csdn.net/gao506440410/article/details/81812163...
2019-09-02 21:11:28
78
原创 关于spring配置不扫描service层的原因
我将contoller给springmvc进行扫描,然后其余所有交给spring扫描然后发现service层的EmployeeService并没有扫描到出现以下问题Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘springmvc...
2019-09-02 15:56:44
2099
1
原创 26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。快慢指针就完事了嗷,easy,这几天运气好,都很快AC了 :)class Solution {public: int removeDuplicates(vector<int>&...
2019-08-30 14:47:44
73
原创 leetcode 23 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。这题直接用最小堆,第一歩将每个lists的链表头结点放入堆中,第二歩开始循环 每次从堆中取一个元素并放入输出链表的尾端 class Solution { public: ListNode *mergeKLists(vector<ListNode *> &lists) { ...
2019-08-29 17:01:01
48
原创 leetcode21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。简单题,主要纪念一下第一次没修改直接通过!class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *n=new ListNode(-1); Li...
2019-08-28 14:47:10
79
原创 leetcode20. 有效的括号
最简单的方法,创建一个栈,遍历string s,对于每个char 如果是左括号则进入stack ,右括号则判断栈中最上面元素是否为对应的左括号即可!代码如下> class Solution { public:> bool isValid(string s) {> stack<char>store;> for...
2019-08-22 14:35:20
80
原创 leetcode 10 正则表达式匹配
题目如上如果用正常递归方法class Solution { public:bool isMatch(string s, string p) {// if(match(s,p)>0)// {// return true;// }// return false;s=s+"!";p=p+"!";return match(s,p);}bool match (st...
2019-08-21 19:06:00
70
原创 idea web工程关于配置 web下的资源例如jquery
如图我们可以看到红色方框里面是进行配置了jquery并且在jsp文件中也进行了相应src的配置,但是页面效果并没有显示alert(“hello”),一些原因是我们在springmvc的配置文件中并没有加入下图二是因为生成的artifact并没有加入web下面新生成的文件资源,这时候重启服务器也没有用,方法是将out文件删除,重新编译生成即可!...
2019-08-19 17:14:51
542
3
原创 LeetCode14. 最长公共前缀
直接寻找数组中最短的那个string作为启示查找数组,然后用其与第一个字符串进行比较,再将结果与第二个字符串进行比较,以此类推得出结果class Solution {public:string longestCommonPrefix(vector& strs) { if(strs.empty()) { return ""; } int ...
2019-07-26 15:37:40
71
转载 Mybaties参数处理
先总结一下,后面再一个个解释:单个参数:直接使用#{参数名}进行取值,mybatis没做特殊处理,参数名可以随便写。多个参数:使用#{param1},#{param2}取值命名参数:通过@param(“key”)明确指定封装map中的key,就可以通过#{key}取出参数值了POJO:如果多个参数正好是业务模型,这时候就可以传入业务模型,通过#{属性名}就可以取值了Map:如果多个参数不...
2019-07-25 18:36:03
166
原创 LeetCode13.罗马数字转整数
题目很简单直接用map处理就行,但记住不要用string类型处理,因为char转string很麻烦,内部可能造成莫名其妙的错误,直接char类型作为map的索引即可class Solution {public:int romanToInt(string s) {int res=0;map<char,int>m;m[‘I’]=1;// m[“IV”]=4;// m[“IX...
2019-07-25 15:49:47
76
转载 leetcode 4. Median of Two Sorted Arrays(二分查找)
1.分析问题:这里有两点条件,长度相等,任意元素大于。所以列出下面的模型,为了后面便于思考 left_part | right_part leeA[0], A[1], …, A[i-1] | A[i], A[i+1], …, A[m-1]B[0], B[1], …, B[j-1] | B[j], B[j+1], …, B[n-1]其中m:A数组长度n:B数组...
2019-07-24 15:51:35
74
组织观看《刑法修正案(九)》、《两高司法解释宣传片》警示教育宣传片
2019-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人