
java#力扣刷题
韩浩楠
这个作者很懒,什么都没留下…
展开
-
左神算法笔记(十一)——图
图的存储方式:邻接表,邻接矩阵邻接表:邻接矩阵:具体的方法和定义可以参考图论中的内容。宽度优先遍历和深度优先遍历宽度优先遍历:利用队列实现从源节点开始依次按照宽度进入队列,然后弹出每弹出一个点,就把该节点所有没进过队列的邻接点放入队列直到队列变空BFS:public static void bfs(Node node){ if(node == null){ re...原创 2021-09-24 09:54:52 · 362 阅读 · 0 评论 -
回溯算法,深度优先遍历
回溯算法和深度优先遍历在求全部情况的时候尤其适用,例如力扣22题这一类问题中,一般都是在一颗隐形的树上进行求解,可以使用深度优先遍历或者广度优先遍历,但是我们自己写代码推荐使用深度优先遍历,深度优先遍历可以使用递归,借助系统栈完成状态的转移。先给出第一种非全局变量不需要...原创 2020-05-16 10:10:45 · 762 阅读 · 0 评论 -
删除链表倒数第n个节点
这道题目比较简单,但是只使用一次遍历,利用前后两个节点(类似于双指针)的形式来进行遍历则会存在一个问题,那就是如果头结点被删掉无法正常进行之后的node = node.next操作。因此这道题的做法是自己创建一个新的头结点,此时原本的头结点就变成了中间节点,则可以进行正常的操作,这种思路比较值得借鉴,之后如果出现头结点需要单独讨论的时候可以参考这种做法。...原创 2020-05-09 21:21:03 · 150 阅读 · 0 评论 -
牛客刷题-动态规划
这道题困扰了我一个下午,终于看了别人代码理解了,首先声明,针对这个题目其实可以有其他解法,而不仅仅是利用动态规划,可以同样适用霍夫曼编码的思路来进行,每整一次进行一次数据的整合,形成一个新的数组,同时维护一个int类型的数字用于记录所消耗的能量,能量记录方式可以按照整合之后的数字进行记录,每整合一次则相加一次,可以实现一个简单的求和。这道题官方给出的思路是利用动态规划进行解题,这里再次回顾一下动...原创 2020-05-07 21:53:39 · 433 阅读 · 0 评论 -
LinkedList常用方法
双链表对于算法题而言经常会使用到,所以单独拿出双链表进行讲解。双链表在java中实现了list和Deque接口,可以实现所有的可选的list操作,并且也允许所有的元素存在,包括null元素。LinkedList主要方法:peekFirst (E)用于获取双端列表头的数据之所以选择peekFirst而不选择getFirst的原因在于get方法中,如果获取数据为null的话则抛出异常,而...原创 2020-02-22 21:36:38 · 283 阅读 · 0 评论 -
合并k个排序链表
合并k个排序链表,返回合并后的排序链表,具体查看力扣23题。解法一: 暴力解法,时间限制导致无法通过。思路就是通过比较两个链表中Node哪个小,小的则作为新建链表的下一个节点,并将指针挪到小的那个的下一个。相当于冒泡排序,复杂度很高。解法二:将解法一的思路进行改进,解法一之后比较是将新建号的链表和下一个链表进行比较,整体比较长度较大,解法二通过中分将左右两边分别进行比较,用到了归并排序的...原创 2020-02-12 17:49:58 · 192 阅读 · 0 评论 -
力扣刷题之栈---第二十题有效的括号
这是一道简单的题目,方法为利用栈针对数据的先入后出的特性进行解题。单从题目看,输入成立的可能总共有三种,分别为 :“()[]{}”,两两相结合,中间不含有其他类型括号“{[]}”,形成一个对称的形式,从中间区分左边和右边分别为括号的左边和右边。前两种进行结合。对于此题栈的方法毫无疑问最为高效,复杂度为n,将左括号和右括号对应关系变为哈希表,键值对。针对输入进行遍历,左括号放入哈希表中,一...转载 2019-12-03 20:24:08 · 225 阅读 · 0 评论