算法
向日葵班学霸
努力变强
展开
-
8、合并两个有序的单链表
步骤1、同时遍历两个链表,并取出节点作比较,根据不同的情况生成新的链表2、若有链表为空,则直接遍历另一个链表即可public class CombineLinked { private static Node head1; private static Node tail1; private static Node head2; private stat...原创 2020-02-26 13:18:07 · 244 阅读 · 0 评论 -
7、删除单链表倒数第n个节点
步骤1、假设链表长度为len,删除倒数第n个节点,那么节点的正数位置为:pos = len-n+12、所以可以用快慢指针,快指针先走n步,然后快慢指针一起移动,直到快指针为null,那么此时,慢指针走的步数为:len-n+1,也就是要删除的节点位置:public class DeleteOneNode { private static Node head; private...原创 2020-02-25 22:02:09 · 291 阅读 · 0 评论 -
6、通过数组创建单链表,并反转单链表
步骤1、尾部插入法创建链表2、自定义上一个节点、当前节点、下一个节点,遍历反转链表,主要是把当前节点的下一个节点设置为当前节点的上一个节点;public class ReverseLinkd { private static Node head; private static Node tail; public static void main(String[...原创 2020-02-16 01:20:45 · 585 阅读 · 0 评论 -
5、通过单链表判断数组存储的数据是否为回文
思路:1、通过快慢指针找到链表中间点;2、在快慢指针找中点过程中,通过头部插入法,把慢指针遍历的链表节点反转保存,生成新的链表,并根据链表长度的奇偶性分别处理;3、遍历反转后的链表和原链表,比较并判断是否为回文;public class HuiWen { //定义一个链表,存储需要判断的字符串,节点添加到尾部 private static Node head; ...原创 2020-02-15 17:12:21 · 215 阅读 · 0 评论 -
4、利用数组实现LRU 缓存淘汰策略
常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策略 LRU(Least Recently Used)。使用链表实现LRU算法的方式很多,现在用数组也实现一下,话不多说上代码:public class LRU { private static String[] lruA...原创 2020-01-03 15:29:37 · 1409 阅读 · 0 评论 -
3、给定一个数组和一个数字,从数组中找到两个元素,这两个元素的和等于给定的数字
给定一个数组和一个数字,从数组中找到两个元素,这两个元素的和等于给定的数字要求返回两个元素的下角标,比如a[1,3,5,7]和数字6,返回index1= 1,index2 = 3public static int[] sum(int nums[],int tarNum){ //首先使用哈希map,存储数组的元素和该元素对应的下角标 HashMap<I...原创 2019-11-13 23:44:26 · 614 阅读 · 0 评论 -
2、返回无序数组中连续元素的长度
给定一个无序数组,返回连续的元素中最长的长度,比如数组a[7,6,8,1,2,2,5],返回4,并且要求复杂度为O(n)这个时候如果不考虑复杂度,那么就很好解决了,先排序再求长度,考虑到复杂度,就不能排序了,可以使用哈希表来帮助我们完成这个运算,代码如下:public static int getConsecutive(int nums[]){ //首先通过哈希表,把...原创 2019-11-12 23:41:55 · 986 阅读 · 0 评论 -
1、有序数组中元素只能出现一次
给定一个有序数组,通过代码处理,最后数组中元素最多出现一次,并返回处理后数组的长度,比如[1,1,1,2,2,3,3,3],处理后为:[1,2,3],返回长度为:3class test{ public int arrayLength(int[] arr){ if(arr.length == 0){ return 0; ...原创 2019-10-31 23:04:33 · 359 阅读 · 0 评论 -
单向链表的反转
单项链表是一种十分常见的数据结构,这一次先介绍单向链表的反转; 单向链表是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针指向列表中的下一个结点; 列表是由节点构成,head指针指向第一个成为表头结点,而终止于最后一个指向NULL的指针。...原创 2019-08-01 22:53:28 · 333 阅读 · 0 评论