自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法学习笔记-LeetCode215-数组中的第K个最大元素

堆排序

2022-10-20 21:09:57 336

原创 算法学习笔记-LeetCode146.LRU缓存

LeetCode145.LRU缓存

2022-10-20 16:00:43 428

原创 算法学习笔记-LeetCode1004-最大连续1的个数Ⅲ

LeetCode1004-最大连续1的个数Ⅲ

2022-08-30 15:43:09 365

原创 算法学习笔记-LeetCode115-不同的子序列

LeetCode115-不同的子序列

2022-08-30 14:15:31 413

原创 算法学习笔记-LeetCode406-根据身高重建队列

LeetCode406-根据身高重建队列

2022-08-29 19:59:02 127

原创 算法学习笔记-LeetCode1675-数组的最小偏移量

LeetCode1675-数组的最小偏移量

2022-08-29 14:17:47 470

原创 算法学习笔记-LeetCode82-删除排序链表中的重复元素Ⅱ

LeetCode82-删除排序链表中的重复元素Ⅱ

2022-08-29 12:37:06 177

原创 算法学习笔记-LeetCode322-零钱兑换

给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。示例1输入:coins = [1, 2, 5], amount = 11输出:3解释:11 = 5 + 5 + 1分析首先本题不能用贪心算法做,因为并不一定选最大面额的硬币可以使得硬币数目最小,比如说500,1,400,200。选出总额为600的硬币。如果我们选了

2022-05-25 16:41:05 186

原创 算法学习笔记-LeetCode72.编辑距离

给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1输入:word1 = “horse”, word2 = “ros”输出:3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rorse -> rose (删除 ‘r’)rose -> ros (删除 ‘e’)分析首先对操作进行分析,对一个单词进行三种操作,也就是说每

2022-05-25 15:53:26 215

原创 算法学习笔记-LeetCode25.K个一组翻转链表

给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。思路本题思路简单,难点在于节点连接的细节,每组翻转之后如何连接到前后的节点上。思路是每次翻转之前保存该组链表之前和之后的节点,由于第一组链表之前没有节点,所以一开始创建一个头节点放在队头,每次翻转节点时获取每组节点的前驱节点prev,后继节点next

2022-05-25 14:47:56 115

原创 算法学习笔记-完美对

有n个物品,每个物品有k个属性,第i件物品的第j个属性用一个正整数标记为Ai,j,两个不同的物品i,j被称为完美对当且仅当Ai,1+Aj,1=Ai,2+Aj,2=…=Ai,k+Aj,k,求完美对的个数。分析常规做法自然是物品之间两两比较,这样肯定不会通过的,复杂度太高。对上式进行变形,把一个物品的属性放到一边。Ai,1-Ai,2=-(Aj,1-Aj,2)Ai,1-Ai,3=-(Aj,1-Aj,3)...Ai,2-Ai,3=-(Aj,2-Aj,3)...抽象出来就是对于一个物品的属性

2022-05-17 21:06:51 781

原创 算法学习笔记-一道字节跳动面试常考的题-最大数

给定一个数 n,如 23121,给定一组数 A,{2, 4, 9},返回用A可以组成的小于 n 的 最大数(22999)。思路本题需要使用回溯算法,最基本的思路是,我们构建一个和给定数位数相同的数字,从左到右填充每一位数,对于这个数字上的每一位,都尽可能让这个数字大,一般情况下,最大的数自然是数字n的这个位数temp,如果给定数中没有这个数temp,就需要取比这个数稍微小的数,如果取得了这个稍小的数,那么从这一位开始,接下来的所有位都要取给定的数字中最大值。如果也不存在比这个位数temp小的数,需要向上

2022-05-17 19:51:15 1758

原创 算法学习笔记-LeetCode1143.最长公共子序列

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。示例 1:输入:text1 = “abcde”, text2 = “ace”

2022-05-16 19:00:34 240

原创 算法学习笔记-LeetCode224.基本计算器

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval().示例1输入:s = “1 + 1”输出:2示例2输入:s = " 2-1 + 2 "输出:3示例3输入:s = “(1+(4+5+2)-3)+(6+8)”输出:23提示1 <= s.length <= 3 * 105s 由数字、‘+’、‘-’、‘(’、‘)’、和 ’ ’ 组成s 表示一个有效的表达式‘+’ 不能用作一元运

2022-05-12 15:35:54 190

原创 算法学习笔记-LeetCode402.移掉K位数

给你一个以字符串表示的非负整数 num 和一个整数 k ,移除这个数中的 k 位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。示例1输入:num = “1432219”, k = 3输出:“1219”解释:移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219 。示例2输入:num = “10200”, k = 1输出:“200”解释:移掉首位的 1 剩下的数字为 200. 注意输出不能有任何前导零。示例3输入:num = “10”, k = 2输出:“0

2022-05-11 21:04:32 332

原创 算法学习笔记-LeetCode440.字典序的第K小数字

给定整数 n 和 k,返回 [1, n] 中字典序第 k 小的数字。示例 1:输入: n = 13, k = 2输出: 10解释: 字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。示例 2:输入: n = 1, k = 1输出: 1字典序即是对上图中的十叉树进行先序遍历(先遍历根节点,然后递归地从左到右遍历子树)。用初始值为1的值num标记当前节点,用一个值cnt保存目前已经遍历过的节点数目,初始值为0。

2022-05-09 21:48:02 216

原创 JDK学习笔记之LinkedList

LinkedList实现了List和Deque接口,是一个双端队列,可以存放null元素,实现了List说明支持随机访问(底层是链表,所以复杂度不是常数级别),实现Deque说明可以当做栈或者队列使用,是一个功能性很强的数据结构。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.i

2022-05-09 09:12:53 186

原创 算法学习笔记-剑指offerⅡ001.整数除法

给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。注意:整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回 231 − 1示例1:输入:a = 15, b = 2输出:7解释:15/2 = truncate(7

2022-05-05 21:42:27 144

原创 算法学习笔记-LeetCode763.划分字母区间

字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。输入:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。来源:力扣(LeetCode)链接:https:/

2022-05-05 19:50:27 210

原创 JDK学习笔记之PriorityQueue

PriorityQueue是基于堆的 有限队列,这个队列里面的元素按照顺序排列,排序规则可以定义在队列内部,也可以传入一个外部Comparable来实现排序。优先队列可以存放null元素。该数据结构继承了抽象类AbstractQueuepublic class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serializableprivate static final int DEFAUL

2022-05-05 10:23:47 208

原创 JDK学习笔记之Deque

Deque(double ended queue,双端队列)是一个线性的集合接口,支持在两端进行插入删除元素,该接口继承了Queue接口,与先进先出的Queue不同的是,Deque可以在两端操作元素进出。其方法有:void addFirst(E e);在队头添加元素,添加失败(空间不足时)会抛出异常。void addLast(E e);在队尾添加元素,添加失败(空间不足时)会抛出异常。boolean offerFirst(E e);在队头添加元素,因为容量不足而导致添加失败也不会抛出异常

2022-05-04 10:02:04 177

原创 JDK学习笔记之Stack

Stack是Vector的子类,特性是先进后出。public E push(E item) { addElement(item); return item;}添加元素方法push,调用父类的addElement方法。public synchronized void addElement(E obj) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount+

2022-05-04 09:21:06 468

原创 JDK学习笔记之ArrayList

ArrayList是一个常用的类,实现了List接口,拥有随机访问的特性。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable其属性包括:private static final int DEFAULT_CAPACITY = 10;

2022-05-03 10:47:05 764

原创 JDK学习笔记之Vector

Vector是实现了List接口的一个类,其中的很多方法都使用synchronized关键字修饰,是线程安全的。public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable成员变量有protected Object[] elementData;即proteced修饰的Object数组

2022-05-02 10:22:58 179

原创 从键盘输入二叉树的节点值建树

之前笔试的时候遇到关于二叉树的题目,需要输入二叉树的节点值进行建树。 对于空节点用null表示。使用hashmap辅助建树,键值对为<Integer,TreeNode>,键是输入的字符串数组下标,值是数组元素对应的树节点。数组从前向后遍历,当取出对应的字符串不是"null"的时候,说明这个字符串已经建过对应的树节点并且已经存入了HashMap中,所以从hashmap中取出这个节点,然后分别找对其左右子树根节点对应的数组下标(完全二叉树中,下标为i的节点,左右子树根节点下标分别为2i+1和2i

2022-05-02 09:25:51 2113

原创 JDK学习笔记之Queue

Queue也是直接继承Collection的接口,一般会设计成先进先出的数据结构。除了Collection的方法外,独有的方法有:插入元素,一般是插入队尾boolean offer(E e);从队头获取并移除元素E poll();获取队头元素,队列为空时抛出错误。E element();获取队头元素,队列为空返回nullE peek();...

2022-04-29 10:43:23 1277

原创 JDK学习笔记之List

List是有顺序的集合接口,直接继承Collection接口,支持随机访问,重复元素.List中声明了一些独有的方法。获取特定位置上的元素。 E get(int index);将特定位置上的元素变为特定值,并返回原来的元素E set(int index, E element);在特定位置上插入元素void add(int index, E element);移除特定位置上的元素E remove(int index);返回某个元素第一次出现的索引int indexOf(Objec

2022-04-29 10:03:01 787

原创 JDK学习笔记之Collection

Collection是Java集合体系中的根接口,Collection表示一组对象(不能是基本数据类型),有些collection是可以有重复元素的,有些不可以,有些是有序的,有些是无序的。Collection中定义了一些方法,...

2022-04-29 09:44:51 651

原创 JDK学习笔记之StringBuffer

JDK注解对StringBuffer的解释是,一个线程安全的,可变的字符序列。线程安全体现在有些方法是使用synchronized关键字修饰的length方法 @Override public synchronized int length() { return count; }capacity方法 @Override public synchronized int capacity() { return value.lengt

2022-04-28 09:57:57 237

原创 JDK学习笔记之StringBuilder

StringBuilder由final修饰,该类不可被继承。StringBuilder是AbstractStringBuilder的子类。StringBuilder的无参构造方法调用了父类的有参构造方法,可以看出默认的容量为16,也就是把value数组的长度设置为16. public StringBuilder() { super(16); } /** * Constructs a string builder with no characters i

2022-04-28 09:44:01 165

原创 JDK学习笔记之AbstractStringBuilder

该类是一个抽象类,表示一个可变的字符串序列。其有两个属性,char[] value数组,以及count。数组用于存储字符,count用来标记存储字符的个数。因为通常value数组并没有存满。无参的构造方法并没有初始化参数。 /** * This no-arg constructor is necessary for serialization of subclasses. */ AbstractStringBuilder() { }输入参数为capa

2022-04-28 09:38:49 301

原创 JDK学习笔记之String

String的基本属性,包含了String的内容,是一个用private,final修饰的字符数组。private表明数组私有,外界无法直接访问,只能通过一些方法来访问。final表明该数组无法被改变,也就是说String是不可变的量。private final char value[];私有属性hash值,默认为0。private int hash; // Default to 0传入参数为字符数组的构造函数,显然把数组复制到String的value数组即可。public String(

2022-04-27 09:31:05 907

原创 算法学习笔记-LeetCode148.排序链表

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。数组排序一般使用的是快速排序,堆排序,归并排序。链表由于不支持随机访问,适合使用归并排序。把一个链表分为两个长度相等的链表一般使用的是快慢指针法,即是,用两个指针fast和slow指向链表的头结点,每次fast向后移两位,slow移一位,这样fast移动到队尾的时候,slow位于链表中间。相似的思路可以将链表分为三段,四段等。对两端链表分别排序之后,再把两个顺序链表按照归并的方式排序成一个顺序链表。/** * Defini

2022-04-26 21:33:06 738

原创 算法学习笔记-剑指Offer 62.圆圈中最后剩下的数字

0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yuan-quan-zhong-zui-hou-sheng-xia-de-shu-zi-lcof著作权

2022-04-26 20:51:48 145

原创 剑指Offer53-II,0~n-1缺失的数字

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题意可以简化为,一个0-n-1的递增数组,把最后一部分数值全部后移一位(也可能没有移动),判断空出来的数字是啥。例如说,原

2022-04-25 21:23:09 76

原创 算法学习笔记-LeetCode139.单词拆分

给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。输入: s = “leetcode”, wordDict = [“leet”, “code”]输出: true解释: 返回 true 因为 “leetcode” 可以由 “leet” 和 “code” 拼接成。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/w

2022-04-25 20:42:53 449

原创 算法笔记:青蛙约会

青蛙约会问题:两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。我们把这两只青蛙分别叫做青蛙A

2020-09-13 20:22:31 903

原创 android studio cannot resolve symbol R

按照给位前辈的方法,检查之后发现把项目切换到project视图时,app文件夹下并没有build文件夹。(可能时build需要的文件只有在build之后才能生成)报错是Failed to resolve: com.android.support.constraint:constraint-layout:1.1.3然后定位到错误文件,将com.android.support.constraint...

2019-04-23 18:21:55 131

原创 Android studio设置activity间可共用的全局变量

(android studio 设置页面全局变量 )不同activity页面可以共用的变量欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown...

2019-04-18 10:11:48 2299

空空如也

空空如也

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

TA关注的人

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