随笔分类 - LeetcodeTest
摘要:public int lengthOfLongestSubstring(String s) { if(s == null || s.length() == 0) return 0; char[] target = s.toCharArray(); int tail, head; tail = 0; Map m...
阅读全文
摘要:思路:第一时间想到的肯定是通过添加计数器解决这个问题,但是问题产生了,链表具有单向性,统计总数,还是计算当前数目都在效率上面很吃亏。 借用快慢指针的思想。可以安排两个同速指针,但是他们存在先后顺序,就可以解决这个问题。
阅读全文
摘要:方法1:归并排序思路: (1)设计一个寻找中间节点的函数;(2)设计一个归并两个已经有序的函数;(3) 主函数; 其中第一个函数思想:是在109题转换成BST当中使用的那样,同时也是快慢链表解决环形链表当中的设计一样的思路! 思路2:利用快速排序思想!!! 首先,快速排序有两种,一种是三分,一种是二
阅读全文
摘要:思路:情况可以分为三类:A:输入没有节点;B:输入1个节点;C:输入多个结点;其中情况C:在用了思考了交换节点,两两分组之后可以规约成:(1):奇数节点,也就是交换完成后,剩下一个前面的情况B;(2)偶数节点:刚好交完完成; 分别从这两个大类型出发设计算法如下:
阅读全文
摘要:看问题,首先想到的解决办法如下: (1)单独设计一个函数可以,计算出有序链表的中间节点的前驱节点。后续会看到原因,这个函数进入的有序链表长度长度至少有2个节点; (2)回到原来需要设计的函数: a. 如果没有节点返回null,如果是只有一个节点,将这个节点制造成树节点返回;由于这个原因,输入到寻找前
阅读全文
摘要:题目描述很见到,不多介绍。一开始思路肯定去查看数组的插入排序;贴个普林斯顿大学——算法第四版的网上java代码库振振楼:http://algs4.cs.princeton.edu/home/ 但是,他和基本的数组排序还是有区别的。链表是单向的,检索起来必须从头开始,所以这里必须重新设计; 受到高手代
阅读全文
摘要:读完题,第一时间想到的办法就是交织前进两个指针,不断判断是否找到合理的焦点。但是,后来发现这个方法不可取。因为,交织前进忽略了长度不等时,许多的判断问题。查阅大人解法后,发现可行的方案是: A,先把问题转化为计算长度的问题,遍历两个链表。 B,利用A的结果,可以先回答是否存在焦点这个问题,然后,可以
阅读全文
摘要:这道题是21题合并2个有序链表的升级版本,看了许多解题思路: A:直接暴力解锁,全部放进一个堆,然后依次吐出来; B:利用21题的算法,循环一次做两两合并,这样就得到结果;但是时间复杂度有点差; C:利用归并排序思想,进行分治;其实就是利用递归,牺牲空间,提升时间效率; 存在的问题是:看过了许多解答
阅读全文
摘要:题目描述已经给的十分清晰了,不再重复; 思路:(1)创建表头,用于返回合并后的新链表的用途; (2)创建跟踪指针:index; (3)然后层次分为两部分 A:管理两个已排序链表都有值的情况; B:管理当一方链表没有值的情况; A当中:利用循环不断比较每次l1和l2前面的两个元素,选择较小的加入ind
阅读全文
摘要:这是一道很常见的链表算法题,题意一般是实现某个单向链表的反向重置。我在百度面试过程中被问到。我在阅读材料时,这个道题曾是微软面试题。 需要一个标记指针,和两个辅助指针。每次前进标记指针,把其他两个指针位点进行调整。
阅读全文

浙公网安备 33010602011771号