自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LC 剑指 Offer 64. 求 1 + 2 + … + n

剑指 Offer 64求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45class Solution { public int sumNums(int n) { boolean flag = n > 1 && (n += sumNums(n-1)) > 0;

2020-11-20 09:49:51 100

原创 LC 剑指 Offer 68 - II. 二叉树的最近公共祖先

LC 剑指 Offer 68给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3

2020-11-20 09:49:17 109

原创 LC 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

剑指 Offer 68给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出:

2020-11-20 09:48:57 108

原创 LC 剑指 Offer 38. 字符串的排列

LC 剑指 Offer 38输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]class Solution { List<String> res = new LinkedList<>(); char[] chs; public String[] permutation(St

2020-11-18 16:38:31 72

原创 LC 剑指 Offer 55 - II. 平衡二叉树

LC 剑指 Offer 55输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / \ 4 4返回 fa

2020-11-18 16:19:58 91

原创 LC 剑指 Offer 35. 复杂链表的复制

LC 剑指 Offer 35请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]

2020-11-17 10:13:53 291

原创 LC 剑指 Offer 54. 二叉搜索树的第 k 大节点

LC 剑指 Offer 54给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4class Solution { int res, k;

2020-11-16 11:54:24 54

原创 LC 剑指 Offer 37. 序列化二叉树

LC 剑指 Offer 37请实现两个函数,分别用来序列化和反序列化二叉树。示例:你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 “[1,2,3,null,null,4,5]”public class Codec { public String serialize(TreeNode root) { if(root == null) return "[]"; StringBuilder res = n

2020-11-16 11:53:28 167

原创 LC 剑指 Offer 36. 二叉搜索树与双向链表

LC 剑指 Offer 36输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。特别地,我们希望可以就地完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中的第一个节点的指针。题解:包含三个要素排序链表: 节点

2020-11-16 08:14:50 75

转载 LC 剑指 Offer 34. 二叉树中和为某一值的路径

LC 剑指 Offer 34输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回 :[ [5,4,11,2], [5,8,4,5]]代码:

2020-11-16 08:13:11 54

原创 负载均衡

1. 什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。负载均衡(Load Balance),指多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独

2020-11-10 09:26:52 358 1

原创 HashMap 和 TreeMap 的区别

相同点HashMap 定义:public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, SerializableTreeMap 定义:public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cl

2020-11-10 09:26:18 308

原创 LC 剑指 Offer 13. 机器人的运动范围

LC 剑指 Offer 13地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示

2020-11-03 09:07:07 136

原创 LC 剑指 Offer 46. 把数字翻译成字符串

LC 剑指 Offer 46给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"class Solution { public int translateN

2020-11-03 08:24:23 119

原创 HTTPS的安全通信机制

1. HTTPS概述HTTPS(超文本传输安全协议),并非是应用层的一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替而已。通常,HTTP直接和TCP通信。而当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了。简言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP。在采用SSL后,HTTP就拥有了HTTPS的加密、证书和完整性保护这些功能。2. 对称加密对称加密算法的加密和解密都是同一个密钥。客户端发送密钥至服务器,服务器接受该密钥,之后所有的数据传输都采用该

2020-11-02 14:36:14 545 1

原创 JavaBean、EJB、POJO

JavaBeanJavaBean是指一种特殊的Java类,它通常用来实现一些比较常用的简单功能,并可以很容易的被重用或者是插入其他应用程序中去。所有遵循一定编程原则的Java类都可以被称作JavaBean。JavaBean是一个遵循特定写法的Java类,是一种Java语言编写的可重用组件,它的方法命名,构造及行为必须符合特定的约定:有一个public无参构造函数所有属性私有化私有化的属性必须通过public类型的方法(getter和setter)暴露给其他程序,并且方法的命名也必须遵循一

2020-10-31 13:31:59 106

转载 红黑树详解

程序员小灰 漫画:什么是红黑树?二叉搜索树(BST)特性左子树上所有结点的值均小于或等于它的根结点的值右子树上所有结点的值均大于或等于它的根结点的值左、右子树也分别为二叉搜索树优点:二分查找的思想,查找、插入、删除所需的最大次数等同于二叉树的高度,时间复杂度为O(logn)缺点:二叉搜索树可能退化成链表,此时树的高度就是节点数n,所有操作的时间复杂度为O(n)如何解决二叉搜索树多次插入新节点导致的不平衡呢?“红黑树”应运而生红黑树是一种自平衡的二叉搜索树,出了符合二叉搜索树的基本特性外

2020-10-30 16:27:37 392

原创 注解和反射

注解什么是注解JDK 1.5开始引入不是程序本身,可以对程序作出解释,被其他程序读取@注释名,可以添加参数值,如@SuppressWarnings(value=“unchecked”)可以附加在pakage、class、method、field上,相当于给他们添加了额外的辅助信息,我们可以通过反射机制实现对这些元数据的访问内置注解@Override:方法重写@Deprecated:方法/属性/类,不推荐程序员使用@SuppressWarnings:抑制编译时的警告信息元注解元注

2020-10-30 15:16:18 89 1

原创 LC 剑指 Offer 49. 丑数

LC 剑指 Offer 49我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。说明:1 是丑数。n 不超过1690。题解丑数的递推性质: 丑数只包含因子2,3,5 ,因此有 “丑数 = 某较小丑数 × 某因子” (例如:10=5×2)。class Solution { public

2020-10-29 16:26:48 49

原创 多线程

线程简介进程与线程程序是指令和数据的有序集合,是一个静态的概念进程是程序的一次执行过程,是一个动态的概念,是系统资源分配的基本单位线程是CPU调度和执行的基本单位,一个进程中可以包含一个或多个线程真正的多线程是指有多个CPU,即多核。如果是模拟的多线程,即在一个CPU的情况下,在同一个地点,CPU只能执行一个代码。因为切换得很快,所以就有同事执行的错觉。线程创建** 1. 继承Thread类 **自定义线程类继承Thread类重写run()方法,编写线程执行体创建线程对象,调用

2020-10-29 16:25:52 62

原创 LC 剑指 Offer 67. 把字符串转换成整数

LC 剑指 Offer 67. 把字符串转换成整数LC 剑指 Offer 67写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,

2020-10-28 15:24:16 84

原创 LC 剑指 Offer 59 - I. 滑动窗口的最大值

LC 剑指 Offer 59 - I. 滑动窗口的最大值LC 剑指 Offer 59给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7

2020-10-27 15:56:06 69

原创 网络编程

网络编程1. 概述计算机网络计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。待解决的问题如何定位网络上的一台主机上的某个资源?如何进行数据传输?2. 网络通信的要素通信双方地址IP地址:唯一定位网络上的一台主机端口号:定位主机上的一个进程网络通信协议3. IP查看IP地址的命令Windows:ipconfigMAC:ifconfig

2020-10-27 15:15:30 84

原创 LC 剑指 Offer 30. 包含 min 函数的栈

LC 剑指 Offer 30. 包含 min 函数的栈LC 剑指 Offer 30定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.p

2020-10-27 15:07:48 76

原创 LC 剑指 Offer 20. 表示数值的字符串

剑指 Offer 20. 表示数值的字符串lc 剑指offer20请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100"、“5e2”、"-123"、“3.1416”、"-1E-16"、“0123"都表示数值,但"12e”、“1a3.14”、“1.2.3”、"±5"及"12e+5.4"都不是。题解class Solution { public boolean isNumber(String s) { //标记是否遇到相应情况 boo

2020-10-26 15:02:14 101

原创 Markdown学习

Markdown学习标题三级标题### 三级标题四级标题#### 四级标题五级标题##### 五级标题六级标题###### 六级标题字体Hello World!*Hello World!*Hello World!**Hello World!**Hello World!***Hello World!***Hello World!~~Hello World!~~引用业精于勤荒于嬉,行成于思毁于随>业精于勤荒于嬉,行成于思毁于随分割线--

2020-10-26 10:49:32 133 1

空空如也

空空如也

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

TA关注的人

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