zoukankan      html  css  js  c++  java
  • 约瑟夫环-递归

    package JianZhioffer;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class test62 {
        public static void main(String[] args) {
            int n=5;
            int m=2;
            System.out.println(lastRemaining(n, m));    
        }
      //最后一个元素时候删除得是第0个,假设n-1元素删除第x个,那么n元素删除(m+x)%n
        public static int lastRemaining(int n, int m) {
            return f(n, m);
        }
    
        public static int f(int n, int m) {
            if (n == 1) {
                return 0;
            }
            int x = f(n - 1, m);
            return (m + x) % n;
        }
        //超时
        public static int lastRemaining1(int n, int m) {
            if(n==1){
                return 0;
            }
            if(m==1){
                return n-1;
            }
            ListNode list=new ListNode(0);
            ListNode x=list;
            for(int i=1;i<n;i++){
                list.next=new ListNode(i);
                list=list.next;
            }
            list.next=x;
            ListNode list1=x;
            
            while(list1.next!=list1){
                int l=1;
                int k=1;
                ListNode list2=list1;
                while(k<m-1){
                    list2=list2.next;
                    k++;
                }
                ListNode list4=list2.next.next;
                
               
                // ListNode list2=list1.next;
                list2.next=list4;
                list1=list4;
                // list4.next=list1;
            }
            return list1.val;
        }
    }
  • 相关阅读:
    24点游戏算法
    汉诺塔算法
    台阶算法
    质因数分解算法
    全排列递归算法
    DFS 深度优先搜索例题
    容器
    数细胞
    C++栈和队列
    C++STL中vector容器 begin()与end()函数、front()与back()的用法
  • 原文地址:https://www.cnblogs.com/jieyi/p/14207296.html
Copyright © 2011-2022 走看看