hot100-5 最长回文子串

题目地址思路1(时间复杂度过高,朴素思路):使用分格子的思想,求出当格子为1、2、3、4...max(max = 字符串长度)时是否存在回文子串如果当格子中的字符串是回文的时候,看看是否需要更新回文子串最大值class Solution { public String longestPalin


剑指-35 复杂链表复制

思路一链表节点的定义包含三个属性,一个val一个next指针,一个random指针复制的时候每个节点需要重新new一个实例val和next指针比较简单,主要是random指针的处理,这里需要保存节点在整个链表中的相对位置。核心思路就是在处理复制原节点的时候,从map中获取random节点的相对位置(


剑指-24 反转链表

思路1:通过递归到最后一个节点,然后依次修改原节点的next指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(


线程交替打印奇数和偶数

线程交替打印1,2,3,4思路:使用锁限制奇数线程结束后必须将锁给偶数线程 // 实例锁,注意lambda表达式传递的值引用必须是不可变的,因此使用数组传递数组指针,如果是实例对象也是可以的。 final Integer[] odd = {0}; Thread t1 =


LeetCode-3-无重复字符的最长子字符串

思路一:(该解法面对最后的大字符串[31000个字符]会超时)因为题目中要求取不存在重复字符的最大字符串,第一想法是想理解成贪心问题,总的长度为n,判断k个格子的不重复子字符串是否存在。如求取当1个字符长度的不重复字符串是否存在;2个字符长度的不重复字符串是否存在;3个字符长度的不重复字符串是否存在


LeetCode-两数相加

解题思路:因为是相加,因此需要考虑进位运算两个数字链表的长度未必相等如果链表1的长度比链表2短,可以在链2的节点上继续循环处理进位运算/** * Definition for singly-linked list. * public class ListNode { * int val; *


剑指-30 包含min函数的栈

解题思路:和一般栈的区别是需要记录栈存放的最小值,当栈元素更新的时候需要更新这个最小值一开始想到的是使用一个链表进行记录,但是这样的话需要将栈元素中存放的元素变为节点地址,然后维护节点的顺序(本质上可以实现,但是过于低效)2方法不可行的时候,需要注意到栈本身的特性,最后入栈的元素会先出栈,也就是说,


剑指-09 两栈实现队列

剑指-09解题思路:栈的特性的入栈在最下面,出栈元素在最上面,因此是先入后出队列的特性是FIFO,先入先出因为给了两个栈,因此可以通过栈1入栈作为队列的入口,栈2作为队列的删除口。栈2为空的时候,将栈1的元素依次出栈并依次入栈到2,这样的话栈2最上面的元素就会是整个抽象队列最开始添加的元素。当存入的


146-LRU缓存

题解思路:get方法和put方法时间复杂度要求是O(1)