- 博客(36)
- 收藏
- 关注
原创 遗留问题-1
无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无...
2019-06-22 15:03:42
290
原创 Leetcode每天五题II-07
数据流的中位数有一个数据流,设计一种数据结构,在任意时刻,找到其中的中位数。1.用两堆的实现方法 static class MedianFinder { PriorityQueue<Integer> minHeap; PriorityQueue<Integer> maxHeap; public MedianFinder() { minHeap...
2019-05-29 14:47:29
233
原创 Leetcode每天五题II-06
常数时间插入、删除和获取随机元素设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。map+setclass RandomizedSet(object)...
2019-05-15 16:57:45
259
原创 Leetcode每天五题II-05
快乐数编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。不是快乐数的数称为不快乐数(unhappy number),所有不快乐数的数位平方和计算,最後都会进入 4 → 16 → 37 → 58 → 89 ...
2019-05-15 16:56:34
198
原创 Leetcode每天五题II-04
寻找峰值峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。...
2019-05-04 19:55:08
357
原创 Leetcode每天五题II-03
填充每个节点的下一个右侧节点指针struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。示例:class Solution(object)...
2019-05-04 19:53:37
136
原创 Leetcode每天五题II-02
两数相除给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2class Solutio...
2019-04-27 19:42:24
135
原创 Leetcode每天五题II-01
整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。c...
2019-04-23 15:13:28
122
原创 Leetcode每天五题-10
滑动窗口最大值给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口 k 内的数字。滑动窗口每次只向右移动一位。返回滑动窗口最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]class Solution(object): def maxSlidin...
2019-04-16 15:32:08
150
原创 Leetcode每天五题-09
数组中的第K个最大元素在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。备注:...
2019-04-15 18:56:56
116
原创 Leetcode每天五题-08
相交链表编写一个程序,找到两个单链表相交的起始节点。思路:求出每个链表的长度,长的那个先走几步,然后一起走,遇到相等就停步class Solution(object): def getIntersectionNode(self, headA, headB): node = headA len_a = 0 len_b = 0 ...
2019-04-12 08:36:42
102
原创 Leetcode每天五题-07
二叉树中的最大路径和给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [-10,9,20,null,null,15,7]输出: 42class Solution { /** 对于任意一个...
2019-04-10 21:29:00
108
原创 Leetcode每天五题-06
对称二叉树给定一个二叉树,检查它是否是镜像对称的。如果你可以运用递归和迭代两种方法解决这个问题,会很加分。class Solution { public static boolean isSymmetric(TreeNode root) { if (root == null) return true; return isSymmetric(root.left, root....
2019-04-09 14:24:42
195
原创 Leetcode每天五题-05
颜色分类给定一个包含红色、白色和蓝色,一共n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。...
2019-04-07 22:40:34
164
原创 Leetcode每天五题-04
字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]说明:所有输入均为小写字母。不考虑答案输出的顺序。备注:思路就是对...
2019-04-06 22:46:54
125
原创 Leetcode每天五题-03
搜索旋转排序数组假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回-1。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,...
2019-04-05 22:08:00
154
原创 Leetcode每天五题-02
19.删除链表的倒数第N个节点给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?思路:一个指针先走n-1步,然后两个指针一起...
2019-04-02 19:31:29
101
原创 Leetcode每天五题-01
1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思...
2019-04-01 19:50:10
295
原创 leetcode解题记录
写一个帖子用来记录在leetcode上的刷题情况,只适用于笔者自己,因为只会记录题目和代码,不会详细分析。Leetcode每天五题-01
2019-04-01 19:47:29
384
原创 浅析Java并发工具类Semaphore
浅析Java并发工具类Semaphore1. 概述2. 源码分析3. 一个例子4. 总结1. 概述 Semaphore类表示信号量。Semaphore内部主要通过AQS(AbstractQueuedSynchronizer)实现线程的管理。线程在运行时首先获取许可,如果成功,许可数就减1,线程运行,当线程运行结束就释放许可,许可数就加1。如果...
2018-12-08 15:50:30
156
原创 深入解析ThreadLocal
ThreadLocal详解一、认识ThreadLocal1.1 ThreadLocal的作用1.2 ThreadLocal的内部结构图二、深入解析ThreadLocal类2.1 ThreadLocal 结构分析2.2 一个例子2.3 小结一、认识ThreadLocal1.1 ThreadLocal的作用&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ThreadLocal提供了线程局部...
2018-11-21 19:44:53
535
原创 Redis事务介绍
一、概述相信学过Mysql等其他数据库的同学对事务这个词都不陌生,事务表示的是一组动作,这组动作要么全部执行,要么全部不执行。Redis作为NoSql数据库也同样提供了事务机制。二、相关命令1. MULTI用于标记事务块的开始。Redis会将后续的命令逐个放入队列中。这个命令的返回值是一个简单的字符串,总是OK。2. EXEC在一个事务中执行所有先前放入队列的命令,然后
2017-11-09 10:49:42
233
原创 TCP协议必知必会
一、TCP协议简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。TCP是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功。
2017-11-01 15:10:24
431
原创 Java并发编程之Lock
一、Lock是什么? 从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock,它是java.util.concurrent.locks包中的一个接口。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock呢?二、Lock及其实现类的用法下面我们...
2017-09-27 16:52:25
264
原创 使用JavaMail群发邮件
很多时候我们有群发邮件的需求,虽然大多数邮箱都支持群发功能,但是还是有点繁杂,JavaMail提供的API功能强大,可能很方便的解决我们的问题。下面我们就开始 来写我们的代码吧 首先需要准备好下面两个jar包用于获得收件人的方法: public String[] getRecipients() { File recipientsFile = new File
2017-07-26 11:39:11
5384
原创 Java文件下载之解决中文乱码
文件上传和下载是web开发中常遇到的问题,而如果下载的文件带有中文时一般都会出现乱码现象,但是对这个问题,不同的浏浏览器所能识别的编码也不一样。所以应该采用一种通用的解决方案,不多说了贴上代码。import java.io.FileInputStream;import java.io.IOException;import java.net.URLEncoder;import javax.
2017-07-25 21:32:15
5592
原创 JDBC之增删改查
一、什么是JDBCJDBC(Java DataBase Connectivity)就是Java数据库连接,用Java语言来操作数据库。简单地说,JDBC就是用于执行SQL语句的一系列Java API。二、为什么要使用JDBC早期SUN公司想编写一套可以连接天下所有数据库的API,但是因为各个厂商的数据库服务器差异太大了,这任务几乎无法实现。后来SUN开始与数据库厂商们讨论,最终
2017-07-20 21:17:04
1048
原创 Servlet初探和生命周期
1、什么是ServletServlet是JavaWeb的三大组件之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理2、实现Servlet的方式●实现javax.servlet.Servlet接口;●继承javax.servlet.GenericServlet类;●继承javax.servlet.http.HttpServlet类
2017-07-02 13:44:06
220
原创 OC中init方法的重写和自定义
一、init方法介绍OC中的init方法的作用是在对象实例化后对其初始化,在其它编程语言中(如Java、C++)都有构造方法,OC中init方法和构造方法是一个概念的。假设有如下的类声明和实现:#import @interface Student : NSObject@property NSString *name;@property int age;@property flo
2017-06-18 16:34:42
6536
原创 Uva 10189 Minesweeper 扫雷游戏
解题思路:这题还是比较简单,找个一个是地雷的位置,然后将从八个方向上的地雷数+1就好了,具体贴上代码。#include#include#includeusing namespace std;const int maxn=105;char map[maxn][maxn];int m,n;//将当前位置的八个方向地雷数加1void cnt(int x,int y) { for(i
2017-05-23 11:46:15
516
原创 gcc 的执行过程详解 预处理 编译 汇编 链接
在Linux中,使用GCC编译程序的过程可以被分为四个阶段:下面我们以hello.c为例,来看看各个阶段,编译器做了什么----对hello.c进行预编译执行命令:gcc -E hello.c -o hello.i,打开生成的hello.i文件可以看到由原来的10行变成了858行。----对hello.i进
2017-05-07 15:01:07
921
原创 Linux 下压缩与解压缩 zip、binzip2、tar、zip命令的使用
我们经常需要对文件压缩或打包实现统一管理,下面就让我们来看看gzip、bzip2、tar、zip这些命令的使用(1) gzip格式:gzip [选项] [文件]示例:---在testzip目录下有以下文件---对目录下的所有文件使用gzip命令执行结果如下:我们发现它覆盖了原来的文件并对单个文件进行了压缩,压缩格式为.gz---进行解压缩
2017-05-05 17:52:46
5941
原创 HDU 1846 巴什博奕(Bash Game)
巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)*r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(k≤
2017-04-22 12:52:33
483
原创 HDU 1232 畅通工程 并查集简单应用
畅通工程某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? Input测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( 注意:两个城市之间可以有多条道路相通,也
2017-04-15 21:48:16
282
原创 HDU 1082 Matrix Chain Multiplication
题目大意:给出一个矩阵乘法的表达式,计算需要多少次乘法运算。思路:考虑下面的例子很容易发现乘法次数就是A(row)*B(row)*B(col),也就是A的行数乘以A的行数和列数,这里的结果是12。思路本质上和表达式求值的题目是一样的,用一个栈保存矩阵信息,遇到右括号时从栈中弹出两矩阵参与运算。并将计算结果入栈。具体实现:(PS:这里的矩阵只存储了它的行数和列
2017-04-13 17:23:56
379
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人