![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
比宋小宝白
这个作者很懒,什么都没留下…
展开
-
83. 删除排序链表中的重复元素
这个题目很简单说删除掉重复的元素,对于链表来说遍历链表的时候需要保存根节点然后在去循环。第一次尝试去解链表的问题。要注意的是到底是Node.next == null 还是node == null 这个问题需要好好考虑一下,归结于是想遍历还是想考虑去比较下个元素。代码如下public class Solution { public static ListNode deleteDuplica...原创 2018-12-12 20:56:46 · 225 阅读 · 0 评论 -
动态规划现学现卖
动态规划的两种形式自顶而下的备忘录形式自下而上的动态规划现在均使用Fib序列做个例子,具体代码和注释如下图:/** * 动态规划分为两种: * 一种的是自下而上的动态规划 * 一种是自上而下的备忘录方法 * * @author jhc * */public class FibTest { /** * 自下而上的备忘录方法 * mem作为备忘录一开始便创建一个空的...原创 2018-12-06 20:18:30 · 158 阅读 · 0 评论 -
反转链表
问题描述把一个链表 1->2->3->4->5反转最后的结果为:5->4->3->2->1主要的思路是:创建三个ListNode 的节点,分别用来表示前一个节点,当前节点和后一个节点。用prevNode,current,after来表示。为什么要创建三个节点的原因在于:在这个题中我们在原地进行反转即直接把当前值指向前一个ListNode而...原创 2018-12-19 19:58:48 · 78 阅读 · 0 评论 -
几种常见的排序的Java实现
冒泡排序冒泡排序的主要的思想是:比较两个相邻的元素,如果左边大于右边的话就交换两个元素的位置。这样的背景下:需要两层循环,外层循环根据数组中数目的多少确定循环次数,而内层的循环根据每次比较的次数确定循环次数。这样做的时间复杂度为O(n^2) public class BubbleSort { public static void bubbleSort(int[] arr){ if(ar...原创 2018-12-15 15:21:50 · 338 阅读 · 2 评论 -
56.合并区间
对于关于数组的内容可以先考虑排序然后特点在于这个题更新List中的值,这是面向对象与引用很好的解释对于对象的引用我们的操作可以直接操作对应的堆的内存中的数据进行修改。@author jhc public class Solution1 { public static List<Interval> merge(List<Interval> intervals)...原创 2018-12-11 10:05:11 · 159 阅读 · 0 评论 -
74. 搜索二维矩阵
这个题目其实很简单,但是我对边界的处理不是很清楚。对于矩阵有三种边界要处理:是二维矩阵为null二维矩阵是一个行矩阵并且长度为0,例如【】二维矩阵是一个行列都有的矩阵但是长度都为0.【【】】下面是具体的算法的代码:public class Solution { public static boolean searchMatrix(int[][] matrix,int targe...原创 2018-12-11 19:22:28 · 120 阅读 · 0 评论 -
82.删除排序链表中的重复元素
这个题一开始没写出来,我当时的思路是在找一个父节点而对于父节点怎么设置无从下手。下面这个算法是首先创建一个父节点,然后去遍历整个链表如果链表不为空的话继续循环而对于一个链表有两种情况的点。一个:点是当前节点的值等于下一个节点的值。如果相等需要找到所有相等的值然后复制给父节点。另一个:是当前节点的值不等于下一个节点的值。不相等的话就继续往下面遍历。对于链表自己的一点点误区,是在循环的时候...原创 2018-12-17 21:09:31 · 87 阅读 · 0 评论 -
几种链表排序算法的JAVA实现
插入排序首先解释一下一个概念叫做:前继节点,即我们要的节点的前一个节点。我当时写这个算法的时候一直在犹豫的一点在于我怎么保存下个节点的状态,因为在单向链表中的必须要保存下个节点的状态才能对当前节点进行操作,而另外一点是我应该怎么样利用当前的值和前一个值比较。这是我在做这个题的时候最大的麻烦。参考别人的思路。插入排序的主要的思想在于:利用一个前继节点的概念去寻找当前值比前一个值大的节点...原创 2018-12-28 21:22:49 · 2628 阅读 · 0 评论 -
从尾到头打印链表
一种解法是利用反转链表的方式然后 把反转的链表依次添加到result的结果当中去public static ArrayList<Integer> printListFromTailToHead(ListNode head){ if(head == null) return null; List<Integer> temp = new ArrayList<I...原创 2019-01-10 20:10:04 · 64 阅读 · 0 评论