自定义博客皮肤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)
  • 收藏
  • 关注

原创 数组中的第K个最大元素

题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/题目描述:在未排序的数组中找到第 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 ≤ 数组的长

2020-07-13 21:04:27 110

原创 算法题-从中序和后序遍历序列构造二叉树

题目链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/题目描述:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 1

2020-07-10 20:07:12 296

原创 算法题-替换空格

题目链接:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000解答因为是从一个字符(空格)变成三个字符("%20"),所以申请一个字符数组,长度为字符串长度的3倍。循环判断字符串中字符是否为空格,如果是将字符数组

2020-07-09 17:33:24 152

原创 算法题-二维数组中的查找

题目链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9

2020-07-09 17:06:23 184

原创 算法题-螺旋矩阵Ⅱ

题目链接:https://leetcode-cn.com/problems/spiral-matrix-ii/题目描述:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]解答把1~n^2的值顺时针螺旋填入数组中,按照自左向右、自上向下、自右向左、自下向上的顺序填入。使用left、right、top、bottom分别表示左边界、右边界、上

2020-07-09 12:44:07 134

原创 算法题-数组中重复的数字

题目链接:https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/题目描述:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000

2020-07-08 19:25:53 117

原创 算法题-路径总和

题目链接:https://leetcode-cn.com/problems/path-sum/题目描述:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4

2020-07-07 17:47:37 129

原创 算法题-四数之和

题目链接:https://leetcode-cn.com/problems/4sum/题目描述:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[ [-1,

2020-07-06 18:37:18 163

原创 算法题-三数之和

题目链接:题目描述:解法一排序+双指针法,时间复杂度:O(N)//先对数组进行排序//固定第一个数nums[i],如果nums[i]大于0,那么不可能有三个数的和为0//如果nums[i]等于它的前一个数nums[i-1],就跳过这个数,去重//使用两个指针,left和right,left从i+1开始,right从len-1开始//当left<right时,//nums[i],nums[left]和nums[right]的和为sum//如果sum>0,就将right前移,ri

2020-07-06 12:08:40 222

原创 算法题-有效的字母异位词

题目链接:https://leetcode-cn.com/problems/valid-anagram/题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。解法一将字符串转换为字符数组,进行排序,再比较是否相同。class Solutio

2020-07-05 16:34:15 150

原创 算法题-最长有效括号

题目链接:https://leetcode-cn.com/problems/longest-valid-parentheses/题目描述:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"解法一使用栈来存储元素下标,从下标来计算长度。时间复杂度:O(N),N为字符串长度,遍历每个字符串元素。

2020-07-04 15:29:59 130

原创 算法题-将有序数组转换为二叉搜索树

题目链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/题目描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0

2020-07-03 11:31:04 125

原创 算法题-二叉树的中序遍历

题目链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/题目描述:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?解法一通过递归实现。时间复杂度:O(N),空间复杂度:平均是O(logn)(树的高度)。最坏是O(n)(当树退化成链表时)。/** * D

2020-07-02 19:18:39 317

原创 算法题-FizzBuzz

题目链接:https://leetcode-cn.com/problems/fizz-buzz/题目描述:写一个程序,输出从 1 到 n 数字的字符串表示。如果 n 是3的倍数,输出“Fizz”;如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "

2020-07-01 15:39:03 244

原创 算法题-用两个栈实现队列

题目链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能(若队列中没有元素,deleteHead 操作返回 -1 )。示例 1:输入:["CQueue","appendTail","deleteHead","deleteHead"

2020-07-01 11:25:04 84

原创 算法题-两数之和

题目链接:https://leetcode-cn.com/problems/two-sum/submissions/题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解法一

2020-06-30 19:15:10 90

转载 数据结构-哈希表、映射和集合

哈希表(Hash table)简介哈希表,也叫散列表,是根据关键码值(key value)直接进行访问的数据结构。哈希表通过关键码值映射到表中的一个位置来访问记录,以加快查找的速率。这个映射函数叫做散列函数(Hash Function),存放记录的数组叫做哈希表(散列表)。工程实践电话号码簿用户信息表缓存(LRU Cache)键值对存储(Redis)哈希函数(Hash Function)哈希碰撞(Hash Collisios)哈希碰撞:不同的数据经过哈希函数之后得到相同

2020-06-30 18:17:27 444

原创 算法题-删除最外层的括号

题目链接:https://leetcode-cn.com/problems/remove-outermost-parentheses/解法一:class Solution { public String removeOuterParentheses(String S) { StringBuilder res = new StringBuilder(); int level = 0; for(char c:S.toCharArray()) {

2020-06-30 11:59:18 121

原创 算法题-两个数组的交集

题目链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/解法一时间复杂度O(nlogn)//对一个数组排序,然后使用另一个数组中的元素作为目标值//在排好序的数组中进行二分查找,如果找到了,就存进set中class Solution { public int[] intersection(int[] nums1, int[] nums2) { Arrays.sort(nums1); S

2020-06-29 17:56:05 115

转载 Java-PriorityQueue

PriorityQueue介绍PriorityQueue是一个优先级队列,其中元素按照其优先级存储。它继承了AbstractQueue抽象类。PriorityQueue内部有一个比较器,通过比较器实现对其元素进行优先级排序,如果没有传入比较器,那么会使用元素自身的camparTo方法,如果没有,会进行报错。PriorityQueue中的方法PriorityQueue的实现常量与变量 //默认初始化容量private static final int DEFAULT_INITIAL_CAP

2020-06-28 12:12:48 107

原创 Java-Queue

1.队列QueueQueue:只能在一端(队尾)进行插入,另一端(队头)进行输出,先进先出。Java中Queue是java.util包中提供的接口,并扩展了java.util.Collection接口。java.utilpublic interface Queue<E>extends Collection<E>2.Queue中常用方法2.1 boolean add(E e):如果可以在不违反容量限制的情况下立即执行此操作,则将指定的元素插入此队列,成功时返回tru

2020-06-28 11:29:11 136

转载 算法题4-两两交换链表中的结点

题目链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/1.递归方法:递归终止条件:当前没有结点了或者只剩一个结点了。递归调用:使用first和second分别表示要交换的第一个结点和第二个结点,每次调用向下找,直到最后两个结点交换,再一层层返回,到第一组结点,first连接了之后交换好的子链表,second连接first。此时second为第一个结点。返回值:即第一个结点second/** * Definition for singl

2020-06-25 11:11:12 140

原创 算法题3-加一

题目链接:https://leetcode-cn.com/problems/plus-one/第一种:这个题要考虑三种情况:1.加1之后一直到最高位都产生了进位。例如99→100。2.加1之后产生了进位,但是在中途中断了。例如209→2103.最简单的一种情况:当前位数值加1之后,没有产生进位。例如20→21考虑这三种情况,我们可以写出代码:class Solution { public int[] plusOne(int[] digits) { int len = d

2020-06-23 16:43:58 76

原创 算法题2-爬楼梯

题目链接:https://leetcode-cn.com/problems/climbing-stairs/设f(n)是上n个台阶的可能性数,可以考虑最后一步分为上1个台阶或上2个台阶,这样就可以得到f(n)=f(n-1)+f(n-2)我们从0开始计算,由0台阶上0个台阶,f(0)=0;由0台阶上1个台阶,f(1)=1;这样,我们就可以由这两项得到f(2),f(3),……f(n)。我们可以在计算过程中使用数组保存过程中的每一个结果。class Solution { public int

2020-06-22 17:42:06 170

原创 第一次的博客

第一次写博客,希望能记录自己学习的路程,也希望能在秋招找到满意的工作啦!

2020-06-18 10:44:40 65

原创 算法题1-呈最多水的容器

题目链接:https://leetcode-cn.com/problems/container-with-most-water/图中垂直线高度为数组height,蓝色部分表示在这两个数值高度之间的容器面积。我们要求的就是最大的蓝色部分。使用S(i,j)来表示蓝色部分面积,其中i表示最左边的挡板下标,j表示最右边的挡板下标。S(i,j)=min(height[i],height[j])*(j-i).在计算出当前面积之后,比较height[i]与height[j]的值,移动较小的那个挡板,如果heig

2020-06-18 10:32:58 96

空空如也

空空如也

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

TA关注的人

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