- 博客(36)
- 资源 (24)
- 收藏
- 关注
原创 LeetCode Week 8 贪心算法
455. 分发饼干class Solution { public int eraseOverlapIntervals(int[][] intervals) { if (intervals.length == 0) { return 0; } Arrays.sort(intervals, new Comparator<int[]>() { public int comp.
2021-10-10 16:27:19
232
原创 LeetCode Week7 动态规划
经典问题70. 爬楼梯120. 三角形最小路径和class Solution { public int minimumTotal(List<List<Integer>> triangle) { int n = triangle.size(); int[]res = new int[n + 1]; for (int i = n - 1; i >= 0; i--) { for (int j =
2021-10-10 16:14:41
232
原创 LeetCode Week 6 回溯法
常规题17. 电话号码的字母组合class Solution { List<String> res = new ArrayList<>(); String [] charMap = { " ", //0 "", //1 "abc", //2 "def", //3 "ghi", //4
2021-10-10 12:57:32
237
原创 LeetCode Week 1数组
常规题283. 移动零27. 移除元素26. 删除有序数组中的重复项80. 删除有序数组中的重复项 IIclass Solution { public int removeDuplicates(int[] nums) { int n = nums.length; if (n < 2) { return n; } int slow = 2, fast = 2; while(fas
2021-09-21 19:38:51
193
原创 LeetCode Week 2 哈希表
常规题349. 两个数组的交集350. 两个数组的交集 II242. 有效的字母异位词202. 快乐数290. 单词规律205. 同构字符串451. 根据字符出现频率排序经典题1. 两数之和class Solution { public int[] twoSum(int[] nums, int target) { if (nums == null || nums.length == 0) { return nums;
2021-09-15 08:29:30
149
原创 LeetCode Week 3 链表
21. 合并两个有序链表206. 反转链表class Solution { public ListNode reverseList(ListNode head) { if (head == null) { return null; } ListNode pre = null; ListNode cur = head; while (cur != null) { .
2021-09-06 18:25:06
228
原创 LeetCode Week 4 栈&&队列
栈20. 有效的括号150. 逆波兰表达式求值71. 简化路径144. 二叉树的前序遍历341. 扁平化嵌套列表迭代器队列102. 二叉树的层序遍历103. 二叉树的锯齿形层序遍历199. 二叉树的右视图图(队列)279. 完全平方数127. 单词接龙126. 单词接龙 II优先队列347. 前 K 个高频元素23. 合并K个升序链表...
2021-08-31 19:38:31
157
原创 LeetCode Week5 递归
104. 二叉树的最大深度111. 二叉树的最小深度226. 翻转二叉树100. 相同的树101. 对称二叉树222. 完全二叉树的节点个数110. 平衡二叉树112. 路径总和404. 左叶子之和257. 二叉树的所有路径113. 路径总和 II129. 求根节点到叶节点数字之和437. 路径总和 III235. 二叉搜索树的最近公共祖先98. 验证二叉搜索树450. 删除二叉搜索树中的节点108. 将有序数组转换为二叉搜索树230. 二叉搜索树中第K小的元.
2021-08-31 19:07:27
134
原创 自定义JDK注解
什么是注解?Annotation是从JDK5.0开始引入的新技术。Annotation的作用—不是程序本身,可以对程序作出解释(这一点,跟注释没什么区别)—可以被其他程序(如编译器)读取。注解信息处理流程,是注解和注释的重大区别。 如果没有注解信息处理流程,则注解毫无意义。Annnotation的格式 —注解是以“@注释名”在代码中存在的,还可以添加一些...
2019-08-20 23:55:31
285
原创 手撕HashSet
HashSet概述:特点:作为Set集合的一种,首先是无序的,不可重复的;允许存放null值;底层封装HashMap;实现是不同步的,线程不安全;常用构造:public HashSet() :构造一个新的空 set,其底层HashMap实例的默认初始容量是 16,加载因子是 0.75。HashSet内部封装了一个HashMap,并且Map的value值是常量,通过使用map的ke...
2019-08-20 23:12:34
209
原创 手撕HashMap
HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间。本文主要基于JDK1.8之前的...
2019-08-20 23:04:24
314
原创 手撕LinkedList源码
LinkedList是一个实现了List接口和Deque接口的双端链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性; LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以调用静态类Collections类中的synchronizedList方法:LinedList维护了...
2019-08-20 22:48:10
194
原创 手撕ArrayList
ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。继承于AbstractList,实现了List,RandomAccess,Cloneable,java.io.Serializable这些接口。ArrayList 继承了AbstractList,实现了List。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。Arr...
2019-08-20 22:32:01
581
原创 滑雪
Michael喜欢滑雪这并不奇怪,因为滑雪的确很刺激。可是为了获取速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 ...
2019-07-27 00:24:23
193
原创 0-1背包问题
有N件物品和一个容积为M的背包。第i件物品的体积w[i],价值是d[i]。求解将哪些物品装入背包可使价值总和最大。每种物品只有一件,可以选择放或者不放(N<=3500,M<=13000)。用F[i][j]表示取前i种物品,使它们的总体积不超过j的最优取法取得的价值总和。要求F[N][M]边界: if(w[1]<=j) F[1][j]=d[1];...
2019-07-26 08:14:24
260
原创 Help Jimmy
"Help Jimmy"是在下图所示的场景上完成的游戏:场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。Jimmy老鼠在时刻0从高于所有平台的某处开始下落,他的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左跑还是向右跑,它跑动的速度也是1米/秒。当Jimmy跑到平台边缘时,开始继续下落。Jimmy每次下落的高度不能超过MAX米...
2019-07-25 09:27:27
159
原创 分蛋糕
有一块矩形大蛋糕,宽和高分别是整数w、h。现要将其切成m块小蛋糕,每个小蛋糕都必须是矩形、且宽和高均为整数。切蛋糕时,每次切一块蛋糕,将其分成两个矩形蛋糕。请计算:最后得到的m块小蛋糕中,最大的那块蛋糕的面积下限。 假设w=4,h=4,m=4,则下面的切法可使其中最大蛋糕块的面积最小。 假设w=4,h=4,m=3,则下面的切法可使其中最大蛋糕块的面积最小。...
2019-07-25 08:24:17
686
原创 神奇的口袋
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40.John现在有n(1<=n<=20)个想要得到的物品,每个物品的体积分别是a1,a2....an.John 可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入: 输入...
2019-07-23 08:46:01
150
原创 最佳加法表达式
有一个由1..9组成的数字串,问如果将m个加号插入到这个数字串中,在各种可能形成的表达式中,值最小的那个表达式的值是多少输入:5 31 2 3 4 5输出:24解题思路:假定数字串长度是n,添加加号后,表达式的最后一个加号添在第i个数字后面,那么整个表达式的最小值,就等于在前i个数字中插入m-1个加号所能形成的最小值,加上第i+1到第n个数字所组成的数的值(i从1开始算)...
2019-07-23 08:41:40
657
原创 最长公共子序列
给出两个字符串,求出这样一个最长的公共子序列的长度:子序列中的每一个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后顺序一致。样例输入:abcfbc abfcabprogramming contestabcd mnp样例输出:420分析:输入两个串s1,s2,设MaxLen(i,j)表示: s1的左边i个字符形成的子串, 与s2左边的...
2019-07-23 08:37:57
148
原创 最长上升子序列
一个数的序列ai,当a1<a2<...<as的时候,我们称这个序列是上升的。对于给定一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...,aik)这里1<=i1<i2<...ik<=N.比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。这些子序列中最长的长度是4...
2019-07-23 08:32:23
128
原创 数字三角形
7 3 8 8 1 0 2 7 4 44 5 2 6 5 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这...
2019-07-23 08:29:08
176
原创 JWT(JSON Web Token)
架构图:使用JWT的核心代码:maven依赖 <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>...
2019-07-16 17:06:00
210
原创 度小满金融2019年春招笔试题(研发岗)
笔者刚刚参加了百度旗下的度小满金融的笔试(不得不吐槽一下度小满金融,3月初投的简历,4月底才给发笔试),现分享一下编程题。是不是觉得这题很简单?我也这么觉得,写完之后立马提交,自信满满AC,结果啪啪打脸,通过率只有18%。磕了好一会通过率也一直停留在18%。现贴出代码,忘大佬指正。#include <stdio.h>int main(){ int T=0; sc...
2019-04-28 22:24:03
3104
原创 2019年美团春招笔试(研发岗)
、笔者刚参加了美团的今年的春招。笔试题共分三个部分:逻辑题,行测题、在线编程题。整个考试系统由赛码网提供(笔者考前体验了一下,和传说中的一样烂)其中在线编程题个人感觉最难,就解出来一道题。现在分享一下编程题哈!!!望各位大佬各抒己见。嘻嘻嘻!!!...
2019-04-23 21:49:36
1867
原创 手写Tomcat服务器(二)
上一篇文章我们实现了Http请求与响应。这篇文章我们来实现Tomcat服务器的功能,web.xml读取,映射,页面跳转等功能。
2019-03-30 20:42:27
371
原创 手写Tomcat服务器 (一)
纯手写Tomcat服务器,实现简易版的HttpServer话不多说,上图:是不是很简单啊?其实实现步骤也很简单。一、建立连接因为HTTP(Hypertext Transport Protocol)是一个基于TCP/IP通信协议来传递数据,所以首先得通过TCP Socket建立浏览器与服务器之间的连接。二、发送请求在建立连接后,浏览器通过Get/POST向服务器发送请求,服...
2019-03-30 19:58:01
425
转载 VSCode搭建C/C++编译环境
Visual Studio Code (vscode)编译C++Visual Studio Code (简称 VS Code / VSC) 是一款免费开源的现代化轻量级代码编辑器,支持几乎所有主流的开发语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,可谓是微软的良心之作。下载安装VS Codehttps://code.visualstudio...
2018-10-06 20:53:37
44406
3
原创 PBKDF2加密算法
PBKDF2加密解密算法做过网站的人都知道用户密码必须经过加密的,其中用的最普遍的就是MD5加密了.但是随着彩虹桥技术的兴起,MD5加密已经不再安全.今天小编就要介绍一种全新的,安全的加密算法:PBKDF2PBKDF2算法通过多次hash来对密码进行加密。原理是通过password和salt进行hash,然后将结果作为salt在与password进行hash,多次重复此过程,生成最终的密文。此...
2018-10-06 20:38:49
24680
2
原创 3DES加密算法
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法3DES(即Tr...
2018-10-06 17:55:30
2783
原创 自定义Spring && SpringMVC核心功能
自定义Spring &amp;amp;&amp;amp; SpringMVC核心功能IOC DI MVCSpring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。本文主要讲解如何在不依靠Spring任何栈包的情况下,从无到有手写Sprin...
2018-10-03 21:19:09
381
原创 Atom安装配置C/C++教程
atom (一款开源的代码编辑器) Atom 是github专门为程序员推出的一个跨平台文本编辑器。具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言,还支持C,C++,JAVA,Python,Object-C等流行编程语言,支持宏,自动完成分屏功能,集成了文件管理器。本文针对C/C++ 环境下配置进行讲解(笔者折腾了一上午),话不多说,...
2018-07-26 13:48:01
4082
算符优先分析C++源代码.doc
2019-06-17
LL(1)分析法.docx
2019-06-17
词法分析之递归下降.docx
2019-06-17
词法分析.docx
2019-06-17
文件管理.docx
2019-06-17
页面置换算法.docx
2019-06-17
磁盘调度算法.docx
2019-06-17
银行家算法.docx
2019-06-17
进程间通信_读者-写者问题.doc
2019-06-17
内存管理.docx
2019-06-17
进程调度.txt
2019-06-17
作业调度.txt
2019-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人