zoukankan      html  css  js  c++  java
  • 算法总结之 向有序的环形单链表中插入新节点

    题目: 一个环形链表从表头节点head开始不降序,同时由最后的节点指回头节点。给定这样一个环形单链表的头节点和一个整数num,请生成节点值为num的新节点,并插入到这个环形链表中,保证调整后的链表依然有序

    时间复杂度O(N) 额外空间复杂度O(1) 的方法  

    1 生成节点的值为num的新节点, 记为node

    2 如果链表为空 让node自己组成环形链表,然后直接返回node

    3如果链表不为空,令变量 pre=head, cur=head.next, 然后让他俩同步移动下去,如果遇到pre的节点小于或者等于num,并且cur的值大于或等于num 说明node应该在pre节点和cur之间插入 然后返回head即可

    4 如果pre和cur转了一圈,没有发现上面所述的情况。则node应该插入到头节点前面,这种情况之所以会发生,要么是因为node节点的值比链表的每个值都大,要么是都小

    5 如果打,返回原来头节点即可,如果都小,把node作为链表的头节点返回即可

    请参考代码:

    package TT;
    
    
    public class Test113 {
    
        public class Node{
            public int value;
            public Node next;
            
            public Node(int data){
                this.value=data;
            }
        
        }
        
        public Node insertNum(Node head, int num){
            
               Node node = new Node(num);
               if(head==null){
                   node.next=node;
                   return node;
               }
              Node pre = head;
              Node cur = head.next;
              while(cur!=head){
                  if(pre.value <= num && cur.value>=num){
                      break;
                  }
                  pre=cur;
                  cur=cur.next;
              }
              pre.next=node;
              node.next=cur;
              return head.value <num ? head:node;
            
        }
        
        
        
        
        
        
    }
  • 相关阅读:
    R语言实现人工神经网络预测实例
    Hive 元数据表结构详解
    距离判别法与R程序实战
    Map端数据倾斜
    cdh5.5.6的hue下用ssh方式运行sqoop
    YARN中内存的设置
    hue同时执行多个任务出现org.apache.hadoop.mapred.TaskAttemptListenerImpl
    CDH5.5.6下R、RHive、RJava、RHadoop安装测试
    [转]值得推荐的C/C++框架和库,包含很多开源项目 (真的很强大)
    GPSD
  • 原文地址:https://www.cnblogs.com/toov5/p/7505814.html
Copyright © 2011-2022 走看看