zoukankan      html  css  js  c++  java
  • 剑指offer系列52---约瑟夫环问题

    【题目】0,1,。。。n排成一个圈,从0开始每次删除第m个数,求圆圈最后个数。
    * 【思路】1 用数组模拟圆圈。当数到最后一个数即index==n时,令index==0 重头开始遍历;
    * 当遇到已经被删除的数时nums[index]==-1,跳过继续;
    * 当走到指定m个数的时候,就将其删除掉,nums[index]=-1;

     1 package com.exe10.offer;
     2 
     3 /**
     4  * 【题目】0,1,。。。n排成一个圈,从0开始每次删除第m个数,求圆圈最后个数。
     5  * 【思路】1 用数组模拟圆圈。当数到最后一个数即index==n时,令index==0 重头开始遍历;
     6  *                           当遇到已经被删除的数时nums[index]==-1,跳过继续;
     7  *                          当走到指定m个数的时候,就将其删除掉,nums[index]=-1;
     8  * @author WGS
     9  *
    10  */
    11 public class LastNumberInCircle {
    12 
    13     public int lastRemainInCircle(int n,int m){
    14         if(m<1 || n<1) return -1;
    15         int[] nums=new int[n];
    16         int indexInNums=-1;
    17         int count=0;//计步器
    18         int length=n;
    19         while(length>0){
    20             indexInNums++;
    21             //1
    22             if(indexInNums==n)
    23                 indexInNums=0;
    24             //2
    25             if(nums[indexInNums]==-1)
    26                 continue;
    27             count++;//计步器++;
    28             //3
    29             if(count==m){
    30                 nums[indexInNums]=-1;
    31                 count=0;
    32                 length--;
    33             }                    
    34         }
    35         return indexInNums;
    36         
    37     }
    38     
    39     
    40     public static void main(String[] args) {
    41         int l = new LastNumberInCircle().lastRemainInCircle(5, 3);
    42         System.out.println(l);
    43     }
    44 
    45 }
  • 相关阅读:
    J2EE技术(一)——JNDI
    软考注定是一次伤痛
    Ultraedit使用技巧收集
    ArcGIS Server Java 自定义Functionality(转)
    用C#动态刷新KML
    ArcGIS Server Java 自定义task
    Python动态刷新kml
    投影坐标知识小结
    tomcat配置数据源通过JNDI访问mysql数据库
    ArcGIS Server Java自定义tool
  • 原文地址:https://www.cnblogs.com/noaman/p/5620517.html
Copyright © 2011-2022 走看看