自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 资源 (2)
  • 收藏
  • 关注

原创 【剑指offer】【leetcode精选题集】【Java】剑指offer题解合集 更新中

Leetcode题集[剑指offer][JAVA]面试题第[03]题[数组中的重复数字][HashSet][剑指offer][JAVA]面试题第[04]题[二维数中的查找][数组][剑指offer][JAVA]面试题第[05]题[替换空格][StringBuilder/Buffer][剑指offer][JAVA]面试题第[06]题[从尾到头打印链表][栈][递归][剑指offer][JAVA]面试题第[09]题[用两个栈实现队列][LinkedList][剑指offer][JAVA]面试题第

2020-07-30 01:11:01 532

转载 [能力提升][费曼学习法]学习方法

【背景知识】费曼学习法费曼学习法可以简化为四个单词:Concept (概念)、Teach (教给别人)、Review (评价)、Simplify (简化)。第一步:把它教给一个小孩子。第二步:回顾。第三步:将语言条理化,简化。第四步(可选):传授一、关于学习我们大部分人的学习,通常是处于无意识的状态。觉得自己总是在不停地看新东西,但是实际上都是浮光掠影、浅尝辄止,不会使用,甚至记不住概念。有时候,我们仅仅是觉得蹉跎了岁月,假装性学习几下安慰一下内心而已。关于学习的吸收率:听讲 &lt

2020-07-28 14:22:30 341

原创 【知识导图】数据结构与算法

[基础知识点]10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法[学习技巧]学习它的“来历”“自身的特点”“适合解决的问题”以及“实际的应用场景1. 边学边练,适度刷题可以“适度”刷题,但一定不要浪费太多时间在刷题上。我们学习的目的还是掌握,然后应用。2. 多问、多思考、多互动学习最好的方法是,找到几个人一起学习,一块儿讨论切磋,有问题及时寻求答疑。3

2020-07-31 19:58:49 209

转载 [Leetcode][程序员面试金典][面试题08.03][JAVA][魔术索引][递归][优化]

【问题描述】[简单]【解答思路】1. 逐个查找时间复杂度:O(N) 空间复杂度:O(1)public int findMagicIndex(int[] nums) { for (int i = 0, length = nums.length; i < length; i++) { if (i == nums[i]) return i; } return -1; }2.

2020-07-31 14:14:09 136

原创 [剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]

####【问题描述】在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。####【坑】#####1. 不能以某一行最后一个或者第二行第一个比较大小,进行筛选#####2. 从左上开始移动,容易越界 不能保证两个方向一增一减 1    5    910  15  16####【解答思路】

2020-07-30 00:34:28 142

原创 [Leetcode][第206题][JAVA][反转一个单链表][递归][迭代]

【问题描述】[简单]【解答思路】1. 递归 自底向上基本条件/终止条件:当前节点或者下一个节点==null递推关系: head.next.next = head在函数内部,改变节点的指向,也就是 head 的下一个节点指向 head 递归函数那句时间复杂度:O(N) 空间复杂度:O(N)class Solution { public ListNode reverseList(ListNode head) { //递归终止条件是当前为空,或者下一个节点为空

2020-07-29 01:15:53 133

转载 [递归]一文看懂递归

1. 递归的定义编程语言中,函数 Func(Type a,……) 直接或间接调用函数本身,则该函数称为「递归函数」。在实现递归函数之前,有两件重要的事情需要弄清楚:递推关系:一个问题的结果与其子问题的结果之间的关系。基本情况:不需要进一步的递归调用就可以直接计算答案的情况。可理解为递归跳出条件。一旦我们计算出以上两个元素,再想要实现一个递归函数,就只需要根据递推关系调用函数本身,直到其抵达基本情况。递归函数的编写看起来比较难,其实是有套路可寻的,本文在力扣刷题阶段总结了写递归的一些范式技巧并

2020-07-29 00:39:58 724

原创 [Leetcode][第111题][JAVA][BFS][二叉树的最小深度][BFS][递归]

【问题描述】[简单]【解答思路】1. 递归自下而上基本情况/结束条件 :叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点当 root 节点左右孩子都为空时,返回 1当 root 节点左右孩子有一个为空时,返回不为空的孩子节点的深度当 root 节点左右孩子都不为空时,返回左右孩子较小深度的节点值递推关系:遍历二叉树复杂度class Solution { public int minDepth(TreeNode root) { if(root ==

2020-07-28 15:08:39 173 2

原创 [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]

【问题描述】[简单]【解答思路】1. 递归终止条件/基本情况 root ==null递推关系 max(l,r)+1时间复杂度:O(N) 空间复杂度:O(height)class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; } else { int leftHeight = maxDept

2020-07-28 12:34:47 195

原创 [Leetcode][第5458题][JAVA][字符串的好分割数目][双指针][HashSet]

【问题描述】5458. 字符串的好分割数目[中等]【解答思路】1. 双指针前面的搜索前面的个数和,后面的搜索后面的个数和时间复杂度:O(N^2) 空间复杂度:O(1)class Solution { /* 双指针做法, 前面的搜索前面的个数和,后面的搜索后面的个数和 */ public int numSplits(String s) { //rem1[i]用来记录前i个字符里面不同字符的个数

2020-07-27 11:53:32 140

转载 [Leetcode][第392题][JAVA][判断子序列][动态规划][双指针]

【问题描述】[简单]【解答思路】1. 双指针时间复杂度:O(N+M) 空间复杂度:O(1)class Solution {public: bool isSubsequence(string s, string t) { int n = s.length(), m = t.length(); int i = 0, j = 0; while (i < n && j < m) { if

2020-07-27 11:50:36 150

转载 [周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]

【问题描述】5457. 和为奇数的子数组数目[中等]【解答思路】1. 动态规划第 1 步:设计状态dp[i][0] 记录以arr[i]结尾的和为奇数数量dp[i][1] 记录以arr[i]结尾的和为偶数数量第 2 步:状态转移方程for(int i=1;i<n;i++) { if(arr[i]%2==0) { dp[i][0]=dp[i-1][0]; dp[i][

2020-07-26 21:12:44 473

转载 [Leetcode][第207题][JAVA][课程表][拓扑排序][DFS]

【问题描述】[中等]【解答思路】1. 拓扑排序复杂度分析HashSet[] 数组import java.util.HashSet;import java.util.LinkedList;import java.util.Queue;public class Solution { public boolean canFinish(int numCourses, int[][] prerequisites) { if (numCourses <= 0) {

2020-07-26 19:58:00 341

原创 [Java]==和equals()的区别(按照数据类型区分)

背景知识【引用类型】复合数据类型是引用类型**1.基本数据类型,也称原始数据类型。**byte,short,char,int,long,float,double,boolean他们之间的比较,应用双等号(==),比较的是他们的值。基本数据类型比较, == 和 Equals 两者都是比较值注意注释 创建的方法不同 导致地址不同 int x = 10; int y = 10; // 内存中的常量池(栈),常量池属于方法区的一部分,当运行到s1创建对象时,如

2020-07-26 17:15:48 151

原创 [Java基础][Java]toString()方法

【原理解析】toString()方法返回反映这个对象的字符串因为toString方法是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法【示例】public static void main(String[

2020-07-26 16:03:38 417

原创 [小技巧][JAVA][转换]整型int与字符串String相互转换

字符串转换整型String - >Int1). int i = Integer.parseInt([String]); 或者//radix 进制int i = Integer.parseInt([String],[int radix]);//intValue() 输出int数据。2). int i = Integer.valueOf(String).intValue();或者int i = Integer.valueOf(String);整型转换字符串Int - > Stri

2020-07-26 15:07:06 336

原创 [小技巧][JAVA][转换]字符数组char[]与字符串String之间互相转换

1.字符数组转为字符串方法1:直接在构造String时转换。char[] data = {‘a’, ‘b’, ‘c’};String str = new String(data);方法2:调用String类的方法转换。String s =String.valueOf(char[] ch)2.字符串转为字符数组情况一:如果是”abcdefghijk”这种字符串,就直接String string1 = “abcdefghijk” ;char [] strArr1 = string1.toC

2020-07-26 14:39:50 4256

转载 [Leetcode][第329题][JAVA][矩阵中的最长递增路径][DFS][拓扑排序]

【问题描述】[中等]【解答思路】1. 记忆化深度优先搜索复杂度class Solution { public int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; public int rows, columns; public int longestIncreasingPath(int[][] matrix) { if (matrix == null || matrix.length == 0 || m

2020-07-26 14:18:13 145

转载 [算法][算法复杂度]常用算法复杂度速查表

复杂度通常会使用大 -O记号来表示,比如快速排序的平均时间复杂度是 O(nlog(n))。虽然我们应该做「理解派」,但是即使每个算法/数据结构都理解了,不时仍有可能忘记具体某个算法/数据结构的复杂度(特别是在最好、最坏和平均情形下的复杂度)。原文链接:https://mp.weixin.qq.com/s/U6D1PNjuBAcRd5UZRr0F3w模型链接:http://bigocheatsheet.com/...

2020-07-25 12:19:27 236

原创 [小技巧][Java]Arrays.fill() 初始化 二维数组

Arrays.fill()并不能提高赋值的效率,在函数的内部也是用for循环的方式 实现的。fill()函数源码: public static void fill(Object[] a, Object val) { for (int i = 0, len = a.length; i < len; i++) a[i] = val; } for (int i = 0; i <= n; i++) { Arrays.f

2020-07-25 11:52:00 4246

原创 [Leetcode][第410题][JAVA][分割数组的最大值][动态规划][二分]

【问题描述】[中等]【解答思路】1. 动态规划第 1 步:设计状态令 f[i][j] 表示将数组的前 i 个数分割为 j 段所能得到的最大连续子数组和的最小值。 ( i ≥ j )第 2 步:状态转移方程第 3 步:考虑初始化f[i][j] = Integer.MAX_VALUEf[0][0]=0第 4 步:考虑输出f[n][m]f[n][m]复杂度class Solution { public int splitArray(int[] nums, int m) {

2020-07-25 11:50:34 399

转载 [Leetcode][第1025题][JAVA][除数博弈][数学][递推]

【问题描述】[中等]【解答思路】1. 数学证明 找规律时间复杂度:O(1) 空间复杂度:O(1)2. 递推时间复杂度:O(N) 空间复杂度:O(1)class Solution { public boolean divisorGame(int N) { boolean[] f = new boolean[N + 5]; f[1] = false; f[2] = true; for (int i = 3;

2020-07-24 09:49:29 118

转载 [剑指offer]面试题第[36]题[JAVA][二叉搜索树与双向链表][递归]

【问题描述】[中等]【解答思路】中序遍历时间复杂度:O(N) 空间复杂度:O(N)class Solution { Node pre, head; public Node treeToDoublyList(Node root) { if(root == null) return null; dfs(root); head.left = pre; pre.right = head;

2020-07-23 15:17:59 114

转载 [剑指offer]面试题第[35]题[Leetcode][第138题][JAVA][复杂链表的复制][暴力][HashMap][复制链表]

【问题描述】[中等]【解答思路】1. 暴力 直接复制将链表从头节点一个一个复制下去,在根据记录的总长度num,遍历原来的每个节点的random到尾节点个数count,然后顺序遍历找到新链表的该指针在num-count上 。时间复杂度:O(N^2) 空间复杂度:O(N)class Solution { public Node copyRandomList(Node head) { if(head==null) return head; Node new

2020-07-23 13:50:21 140

转载 [剑指offer]面试题第[41]题[Leetcode][第235题][JAVA][数据流中的中位数][优先队列][堆]

【问题描述】[困难]【解答思路】1. 思路1时间复杂度:O(logN) 空间复杂度:O(N)import java.util.PriorityQueue;public class MedianFinder { /** * 当前大顶堆和小顶堆的元素个数之和 */ private int count; private PriorityQueue<Integer> maxheap; private PriorityQ

2020-07-22 15:52:40 134

原创 [Letcode]第[34]题[JAVA][在排序数组中查找元素的第一个和最后一个位置][暴力][二分]

【问题描述】[中等]【解答思路】1. 线性扫描(不符合题意)时间复杂度:O(N) 空间复杂度:O(1)class Solution { public int[] searchRange(int[] nums, int target) { int[] targetRange = {-1, -1}; // find the index of the leftmost appearance of `target`. for (int i

2020-07-22 13:50:23 177

转载 [剑指offer]面试题第[44]题[JAVA][数字序列中某一位的数字][找规律]

【问题描述】[中等]【解答思路】找规律时间复杂度:O(logN) 空间复杂度:O(logN)class Solution { public int findNthDigit(int n) { int digit = 1; long start = 1; long count = 9; while (n > count) { // 1. n -= count;

2020-07-22 11:24:21 198

转载 [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第17篇]述和比较DES和AES的轮结构

这是一系列博客文章中最新的一篇,该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。这周,我们描述和比较DES和AES轮结构。原文链接:http://bristolcrypto.blogspot.com/2015/01/52-things-number-17-describe-and.html转载链接:https://www.cnblogs.com/zhuowangy2k/p/12245480.html...

2020-07-21 18:50:20 248

转载 [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第16篇]描述DSA、Schnorr和RSA-FDH的密钥生成、签名和验证算法。

这是一系列博客文章中最新的一篇,文章的主题是“做密码学每个博士生都应该知道的52件事”。这一系列问题是为了让博士生们在第一年结束时了解他们应该知道的事情。本周我们将介绍DSA、Schnorr和RSA-FDH的密钥生成、签名和验证算法。1.DSA2.Schnorr3.RSA-FDHReference[1] http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf[2] http://eprint.iacr.org/2012/029.

2020-07-21 18:47:51 472

转载 [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第15篇]RSA-OAEP和ECIES的密钥生成,加密和解密

1.RSA-OAEPRSA-OAEP是RSA加密方案和OAEP填充方案的同时使用.现实世界中它们同时使用.(这里介绍的只是"textbook rsa-oaep")1.1 RSA[1]1.2 OAEP[2]2.ECIES(读Dan Bonech的书,通俗易懂)References:[1] http://people.csail.mit.edu/rivest/Rsapaper.pdf[2] http://tools.ietf.org/html/rfc2437[3] http://ww

2020-07-21 18:33:47 422

转载 [剑指offer]面试题第[45]题[JAVA][把数组排成最小的数][快排][ Comparator][PriorityQueue]

【问题描述】[中等]【解答思路】1. 快速排序时间复杂度:O(N^2) 空间复杂度:O(1)class Solution { public String minNumber(int[] nums) { String[] strs = new String[nums.length]; for(int i = 0; i < nums.length; i++) strs[i] = String.valueOf(nums[i

2020-07-21 16:47:11 259

转载 [Leetcode]第[43]题[JAVA][字符串相乘][字符串相加]

【问题描述】[中等]【解答思路】1. 普通竖式**复杂度:O(N^2) **class Solution { /** * 计算形式 * num1 * x num2 * ------ * result */ public String multiply(String num1, String num2) { if (num1.equals("0") || num2.equals("0")) {

2020-07-21 11:49:24 141

转载 [剑指offer]面试题第[47]题[JAVA][礼物的最大价值][动态规划]

【问题描述】[中等]【解答思路】1动态规划动态规划流程第 1 步:设计状态f(i, j)f(i,j) 为从棋盘左上角走至单元格 (i ,j)(i,j) 的礼物最大累计价值第 2 步:状态转移方程f(i,j)=max[f(i,j−1),f(i−1,j)]+grid(i,j)第 3 步:考虑初始化第 4 步:考虑输出第 5 步:考虑是否可以状态压缩时间复杂度:O(N^2) 空间复杂度:O(1)class Solution { public int maxValue

2020-07-21 11:19:14 181

转载 [Leetcode][第95题][JAVA][不同的二叉搜索树 II][递归]

【问题描述】[中等]【解答思路】1. 递归复杂度class Solution { public List<TreeNode> generateTrees(int n) { if (n == 0) { return new LinkedList<TreeNode>(); } return generateTrees(1, n); } public List<TreeNo

2020-07-21 10:44:48 173

转载 [Leetcode][第312题][JAVA][戳气球][动态规划][记忆化搜索]

【问题描述】[困难]【解答思路】1. 记忆化搜索时间复杂度:O(n^3) 空间复杂度:O(n^2)class Solution { public int[][] rec; public int[] val; public int maxCoins(int[] nums) { int n = nums.length; val = new int[n + 2]; for (int i = 1; i <= n

2020-07-19 10:05:29 178

原创 [小技巧][Markdown]上标 /下标 上下角标

标签写法效果上标2 10 上标2 10下标H2O下标H2O//上标 2<sup> 10 </sup>2 ^10^//下标H<sub>2</sub>OH~2~O

2020-07-18 16:08:11 5222

翻译 [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第28篇]什么是公钥密码学的IND-CCA安全定义?

这是一系列博客文章中最新的一篇,该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。讨论了用于公钥加密的IND-CCA安全性。IND-CCA安全代表选择明文的不可伪造性。这样的安全方案的思想就是给定一个密文,攻击者不能说出给定密文是什么样的明文加密得到的。在这个模型中,攻击者被允许使用加密问询和解密问询。问询既可以在第三步和第四步之前也可以在之后。公钥的IND-CCA的find-then-guess安全游戏的描述:IND-CCA安全有另外

2020-07-18 14:43:34 983 1

转载 [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第27篇]什么是对称密码加密的AEAD安全定义?

这是一系列博客文章中最新的一篇,该文章列举了“每个博士生在做密码学时应该知道的52件事”:一系列问题的汇编是为了让博士生们在第一年结束时知道些什么。这篇文章将从“安全定义和证明”一节开始,对认证加密进行简要概述。AEADLuke在最近的一篇文章中描述了一些常用的块密码操作模式(ECB、CBC和CTR),这些模式只提供隐私(机密性)。我们还可能需要加密机制的完整性,即确保接收方接收到的消息是在没有意外更改或故意篡改的情况下发送的消息,而真实性则意味着接收方确信消息的来源。为了实现这些额外的目标,我们经常使

2020-07-18 14:37:10 541

转载 [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第14篇]什么是基于线性对的密码学

这是最新的一期密码学52件事.我们基于前几周介绍一种"对"的概念.对的定义给定三个循环群G1,G2,G3,它们的基为q,生成器分别为g1,g2,g3.我们说一个函数e:G1×G2→G3是一个密码对如果下面的等式都成立.[双线性]∀A,B∈G1,C,D∈G2:e(A+B,C)=e(A,C)⋅e(B,C),同时e(A,C+D)=e(A,C)⋅e(A,D)\forall A,B \in G_1,C,D \in G_2:e(A+B,C)=e(A,C) \cdot e(B,C) ,同时e(A,C+D)=e(A,

2020-07-18 14:16:12 387

原创 [剑指offer]面试题第[49]题[Leetcode][第264题][JAVA][丑数][动态规划][堆]

【问题描述】[中等]【解答思路】1. 动态规划时间复杂度:O(N) 空间复杂度:O(N)class Solution { public int nthUglyNumber(int n) { int a = 0, b = 0, c = 0; int[] dp = new int[n]; dp[0] = 1; for(int i = 1; i < n; i++) { int n2 = dp

2020-07-18 12:34:54 185

逻辑表达与写作思维导图

圈外课程逻辑表达课程与写作课程的小总结 获益良多 关键是要多多实践 实践才是检验真理的唯一标准 平时要应用到生活中去

2020-05-28

安全工程师 软考中级证

参考两大网站+推荐教材+选择题+各章思维导图 有基础的同学复习两周刷刷题目就能上岸 上午试题偏记忆理解 下午试题年年考点相差不大 祝广大同胞早日上岸

2019-08-27

空空如也

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

TA关注的人

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