每天学习一点
每天学习一点
全部文章
分类
题解(11)
归档
标签
去牛客网
登录
/
注册
每天学习一点的博客
全部文章
(共11篇)
题解 | #判断一个链表是否为回文结构#
对链表遍历以及其特性的研究,可以考虑使用快慢指针的思想 (1)使用快慢指针,快指针一次走两步,慢指针走一步,同时完成链表的反转工作,直到快指针走到链表尾; (2)此时,链表的前半部分都已经反转过来,再根据链表节点的奇偶特点(考虑回文结构),变换指针位置为反转部分的头节点和原链表中间节点; (3)顺序...
Java
链表
2022-02-26
1
389
题解 | #字符串出现次数的TopK问题#
(1)使用map记录字符的出现次数; (2)使用小根堆保存前k的结果(满足要求时间复杂度nlogk的要求); 注意:定义堆的比较器,除了要考虑字符串出现次数值的大小,当出现次数相同时,还要比较字符串的字典序 public class Solution { /** * retur...
Java
堆(优先队列)
2022-02-25
2
521
题解 | #包含min函数的栈#
(1)辅助栈方法 使用两个栈维护数据,一个作为普通栈,一个保存历史最小值 public class Solution { //正常栈操作 private Stack<Integer> stack = new Stack<Integer>(); //保...
Java
栈
2022-02-13
4
593
题解 | #设计LRU缓存结构#
双端队列+HashMap 看到很多使用链表维护的,其实可以直接使用Java的双端队列,本质上也是链表结构 public class Solution { /** * lru design * @param operators int整型二维数组 the ops ...
Java
队列
哈希表
2022-01-13
1
367
题解 | #表示数值的字符串#
没有什么特别的技巧,自己磨了挺久,写了个凑合能看的,结束在剑指offer的最后一题。。。 主题思路:(1)设置几个全局的标志变量; (2)当出现特殊符号时判断是否符合条件,剩余字符串部分递归检查数字部分 public class Solution { /** * 代码中的类名、...
Java
字符串
2022-01-08
1
523
题解 | #调整数组顺序使奇数位于偶数前面(二)#
方法一:记录奇数的数量,后方遇到奇数如果位置大于记录的位置,则与记录位置后面的一个偶数交换 public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @par...
Java
2022-01-01
0
490
题解 | #把数字翻译成字符串#
使用动态规划的方法,但是其实不需要使用数组来保存所有的位置的情况,可以优化后,只用两个值保存前面两个字符的情况即可。 因为本题其实可以简化成“跳台阶”问题,就是可以是一步或者两步,只不过需要加些条件来处理而已 public class Solution { /** * 解码 ...
Java
动态规划
2021-12-15
8
758
题解 | #最长不含重复字符的子字符串#
动态规划+哈希表,看到很多题解都用了数组来保存当前为结尾的最长结果,其实可以更加优化。当出现重复字符时,只需要更新最近的相同字符作为长度计算起点,然后每次更新最长不同字符字串长度值即可。 int start = -1, sub = 1; //哈希表存储字符和字符位置的...
Java
动态规划
2021-12-15
12
717
题解 | #二叉搜索树与双向链表#
非递归(中序遍历),二叉搜索树的中序遍历就是得到它的从小到大排序数列,只需要在每个节点进行树结构和双向链表的转换就可以了,注意:要保存好头节点! public class TreeNode { int val = 0; TreeNode left = null; TreeNo...
Java
二叉搜索树
链表
2021-12-14
4
657
题解 | #连续子数组的最大和(二)#
相比较输出连续子数组最大和的数值情况,本题要求输出最大和对应的最长连续子数组。 在动态规划的基础上,再增加四个变量:(1)保存当前遍历位置子串首尾位置;(2)最大和子串首尾位置。只需要根据实际情况判断是否要更新,如何更新,为了输出最长连续子数组,需要在当前子串值等于之前记录的最大子串值时也进行更新 ...
Java
动态规划
数组
2021-12-10
7
1035
首页
上一页
1
2
下一页
末页