Leetcode 33.搜索旋转排序数组
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。
你可以假设数组中不存在重复的元素。
你的算法时间复杂度必须是 O(log n) 级别。
示例1:12输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4
示例2:12输入: nums = [4,5,6,7,0,1,2], target = 3输出: -1
思路+代码时间复杂度要求是O(log n),也就是二分法。于是我写了一个最基础的二分法…还是用递归..
1234567891011121314151617181920212223242526272829class Solution { public int search(int[] nums, int target) { if(nums.length==0 || nums==null) return -1 ...
Servlet技术
什么是Servet?Servlet (Server Applet),从字面上看,就是Java服务器小程序的意思。它确实就像字面意思一样,是在服务中用于处理网络请求的小程序。
在Web的世界中,客户端会提交各种请求到服务端,服务端如何处理客户端的请求呢?
常规的Java编程方法,好像很难完成这项任务,但是没有事情是难倒程序猿的。
于是,他们设计了Servlet规范,用来处理网络的各种请求。
具体网络的请求呢,无非就是get、post等等,这在HTTP规范系列里面有讲到。
Servlet规范也没有想象中的那么高大上,其实它就是一个Java接口,里面一共就定义了五个方法,如图:
其中:
init() 规定了Servet如何初始化。
getServletConfig() 获取Sevvlet的配置。
service(ServletRequest, ServletResponse) 接收到请求怎么处理。
getServletInfo() 提供有关servlet的信息,如作者、版本、版权等。
destroy() 销毁Servlet。
Servlet的运行任何合理实现了Servlet接口的类 ...
Git 常用命令
Git简介Git是世界上最先进的分布式版本控制系统。
当时是为了帮助管理 linux 内核开发而开发的一个开源码版本控制系统。
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
Git 是分布式版本控制系统,每个人的电脑上都有完整的版本库。
常用命令列表常用1234567891011121314151617181920$ git remote add origin git@github.com:yeszao/dofiler.git # 配置远程git版本库$ git pull origin master # 下载代码及快速合并 $ git add . # 跟踪所有改动过的文件$ git add <file> # 跟踪指定的文件$ git commit -m “commit message” # 提交 ...
TCP/IP协议
起源HTTP的来历CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士提出了一种能让远隔两地的研究者们共享知识的设想。
最初的设想是通过超文本(HyperText)标记,各地互联连接成可相互参阅的WWW(World Wide Web, 万维网)。
目前WWW构建的关键技术为:
基于SGML(Standard Generalized Markup Language,标准通用标记语言)的HTML (HyperText Markup Language, 超文本标记语言)。
指定文档所在的地址URL (Uniform Resource Locator, 统一资源定位符) 。
各个Web服务器通过万维网互相连接,以 HTML 标准编辑网页(存储信息),用 URL 实现信息的查找,最后通过Web浏览器实现界面的渲染。
如何控制信息的传输?然而,Web服务器有各种各样的类型及硬件接口,显示平台也有各种各样的类型,如何实现平台之间信息的互相交流呢? —— 统一协议控制。答案是通过统一的协议 (Protocol)。
TCP/TP 协议簇TCP/IP 有说法 ...
Leetcode 岛屿最大的面积
题目给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。
找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)
示例1:12345678[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1,1,0,1,0,0,0,0,0,0,0,0], [0,1,0,0,1,1,0,0,1,0,1,0,0], [0,1,0,0,1,1,0,0,1,1,1,0,0], [0,0,0,0,0,0,0,0,0,0,1,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,0,0,0,0,0,0,1,1,0,0,0,0]]
对于上面这个给定矩阵应返回 6。注意答案不应该是11,因为岛屿只能包含水平或垂直的四个方向的‘1’。
示例2:1[[0,0,0,0,0,0,0,0]]
对于上面这个给定的矩阵, 返回 0。
注意: 给定的矩阵grid 的长度和宽度都不超过 50。
思路+ ...
Markdown文件中添加UML图
UML图简介UML(Unified Modeling Language)是统一建模语言的简写。
它可分为用例视图、设计视图、进程视图、实现视图和拓扑视图,又可以静动分为静态视图和动态视图。静态图分为:用例图,类图,对象图,包图,构件图,部署图。动态图分为:状态图,活动图,协作图,序列图。
其中类图 (Class Diagrams)是用来表示类的内部结构和类与类之间的关系的一种UML。常见的关系有:泛化 (Generalization),实现 (Realization),组合 (Composition),聚合 (Aggregation),关联 (Association),依赖 (Dependency)。
各种关系的强弱顺序: 泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
参考教程
UML类图的绘制及插入我们利用在线的开源工具plantUML实现UML图绘制。
具体的绘制方法可以参考官网plantUML。
然后将网址中生成的UML图片地址插入到Markdown文件中。
参考教程
Leetcode 字符串的排列 (String 练习 03)
题目给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
示例1:123输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").
示例2:12输入: s1= "ab" s2 = "eidboaoo"输出: False
注意:121. 输入的字符串只包含小写字母2. 两个字符串的长度都在 [1, 10,000] 之间
思路 1暴力法,滑动窗口依次判定。
但是超出时间限制!
1234567891011121314151617181920212223class Solution { public boolean checkInclusion(String s1, String s2) { int len1 = s1.length(); int len2 = s2.length(); ...
Leetcode 最长公共前缀 (String 练习 01)
题目编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例1:12输入: ["flower","flow","flight"]输出: "fl"
示例2:123输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。
说明:1所有输入只包含小写字母 a-z 。
思路1暴力法,时间复杂度O(n^3)。
123456789101112131415161718192021class Solution { public String longestCommonPrefix(String[] strs) { String ans = ""; if(strs.length==0) return ans; lable:{ for(int j=0; j ...
Java: Set API
Java Set概述Set 继承自集合(Collection),该集合不能包含相同的元素。
Set 里面进行元素是否相同的判定是通过 Object 类自带的equals()实现。
Set 最多可存储一个 null 元素。
Set 只是一个抽象的接口,具体的使用还要用具体的实现,如HashSet、TreeSet等。
常用方法因为 Set 继承自集合 Collection,所以具有集合的方法。
方法
描述
int size()
返回Set里面存储的元素个数。
boolean isEmpty()
如果没有元素,返回true。
boolean add(E e)
如果Set里面没有包含元素e,就将其加入。
boolean addAll(Collection<? extends E>c)
如果指定集合中的元素不存在Set中,就将其加入Set。如果该Collection也是一个Set,相当于对这两个Set取并集。
boolean contains(Object o)
是否包含特定的元素 o。即对Set里面的任意元素e执行判定(o==null?e==null ...
Leetcode 无重复字符的最长子串(String 练习 02)
题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例1:123输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例2:123输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例3:1234输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
思路 1暴力法,用Set记录检查的无重复的最长子串。
123456789101112131415161718192021class Solution { public int lengthOfLongestSubstring(String s) { char[] chars = s.toCharArray(); ...




