java~~算法
一尘在心
这个作者很懒,什么都没留下…
展开
-
LeetCode111. 二叉树的最小深度
题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5思路1:深度优先 +递归class Solution { public int minDepth(TreeNode root) {原创 2021-01-24 22:17:46 · 346 阅读 · 0 评论 -
LeetCode104. 二叉树的最大深度
题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。思路:标签:DFS找出终止条件:当前节点为空找出返回值:节点为空时说明高度为 0,所以返回 0;节点不为空时则分别求左右子树的高度的最大值,同时加1表示当前节点的高度,返回该...原创 2021-01-24 21:35:02 · 296 阅读 · 0 评论 -
LeetCode102. 二叉树的层序遍历
题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层序遍历结果:[ [3], [9,20], [15,7]]思路:利用广度优先进行求解class Solution { public List<List<Integer>> leve...原创 2021-01-24 21:03:35 · 307 阅读 · 0 评论 -
LeetCode 122. 买卖股票的最佳时机 II
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买...原创 2021-01-24 19:06:48 · 216 阅读 · 0 评论 -
LeetCode169. 多数元素
题目:给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2思路1:利用map遍历整个数组,对记录每个数值出现的次数(利用HashMap,其中key为数值,value为出现次数);接着遍历HashMap中的每个Entry,寻找value值> nums.leng.原创 2021-01-24 18:35:03 · 178 阅读 · 0 评论 -
LeetCode50. Pow(x, n)
题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25思路1:利用好递归分治思想进行解题class Solution { public double myPow(double x, int n) {原创 2021-01-24 17:19:33 · 166 阅读 · 0 评论 -
LeetCode236. 二叉树的最近公共祖先
题目:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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解释: .原创 2021-01-19 15:59:37 · 168 阅读 · 0 评论 -
LeetCode235. 二叉搜索树的最近公共祖先
题目:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 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输出: 6.原创 2021-01-19 14:01:06 · 168 阅读 · 0 评论 -
LeetCode98. 验证二叉搜索树
题目:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,...原创 2021-01-19 12:59:16 · 230 阅读 · 0 评论 -
LeetCode18. 四数之和
题目:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1, 0, 0, 1], [-2, -1, 1, 2], [-2, 0, ...原创 2021-01-18 21:54:59 · 253 阅读 · 0 评论 -
LeetCode15. 三数之和
题目:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输入:nums = [0]输出:[]思路1:先对整个数组进行排序,数组为从小到大进行排序.原创 2021-01-18 17:04:36 · 149 阅读 · 0 评论 -
LeetCode1. 两数之和
题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target =.原创 2021-01-18 15:52:17 · 136 阅读 · 0 评论 -
LeetCode242. 有效的字母异位词
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false思路1:利用一个长度为26的数组,其中遍历字符数组 用 字符-'a' 得到数组的下标,然后S负责加1,T负责减1,最后便利数组 如果有一个不等于0 则说明不是字母异位词lass Solution { public.原创 2021-01-18 15:22:31 · 156 阅读 · 0 评论 -
LeetCode239. 滑动窗口最大值
题目:给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入: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...原创 2021-01-18 14:07:14 · 272 阅读 · 1 评论 -
LeetCode703. 数据流中的第 K 大元素
题目:设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。请实现 KthLargest 类: KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。 int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。示例:输入:["KthLargest", "add", "add", "add", "add", "ad...原创 2021-01-11 16:23:33 · 194 阅读 · 0 评论 -
LeetCode225. 用队列实现栈
题目:使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标...原创 2021-01-11 14:17:05 · 188 阅读 · 0 评论 -
LeetCode232. 用栈实现队列
题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开头的元素 boolean empty() 如果队列为空,返回 true ;否则,返回 false说明: 你只能使用标准的栈操作 —— 也就是只有 push to...原创 2021-01-11 13:20:31 · 174 阅读 · 0 评论 -
LeetCode20. 有效的括号
题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: "{[]}"...原创 2021-01-11 12:28:54 · 197 阅读 · 0 评论 -
LeetCode141. 环形链表(判断链表中是否有环)
题目:给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表原创 2021-01-11 00:30:31 · 255 阅读 · 0 评论 -
LeetCode206. 反转链表
题目:反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路1: 遍历列表,改变指针指向,当链表遍历完毕时讲得到完整的反转链表class Solution { public ListNode reverseList(ListNode head) { //假如传过来的是 1-2-3-4 //定义前一个节点 .原创 2021-01-10 23:54:00 · 247 阅读 · 0 评论 -
LeetCode24. 两两交换链表中的节点
题目:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]解题思路:本题采用递归的思路解决问题,首先了解下递归的思路及要点,因为递归本质就是不断重复相同的事情。而不是去思考完整的调用栈,一级又一级,无从下手。我们只关心最小调用单元就行,其中递..原创 2021-01-10 23:44:18 · 123 阅读 · 0 评论 -
RSA-公钥加密,私钥解密 、私钥加密,公钥解密、私钥加签,公钥验签
https://blog.csdn.net/qq_31289187/article/details/85234044一、案例内容: RSA 公钥加密,私钥解密; RSA 私钥加密,公钥解密; RSA 私钥加签,公钥验签(SHA1WithRSA或者SHA256WithRSA-数字签名)二、引入的jar包 <dependency>...转载 2019-07-13 15:06:26 · 3830 阅读 · 0 评论 -
RSA加密算法的java实现
https://blog.csdn.net/cz0217/article/details/78426733转载 2019-05-03 16:19:29 · 367 阅读 · 0 评论 -
冒泡排序
冒泡排序介绍冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止!下面以数列{20,40,30,10...原创 2018-06-07 13:14:08 · 362 阅读 · 0 评论