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

 package com.exe10.offer;

 /**
* 【题目】0,1,。。。n排成一个圈,从0开始每次删除第m个数,求圆圈最后个数。
* 【思路】1 用数组模拟圆圈。当数到最后一个数即index==n时,令index==0 重头开始遍历;
* 当遇到已经被删除的数时nums[index]==-1,跳过继续;
* 当走到指定m个数的时候,就将其删除掉,nums[index]=-1;
* @author WGS
*
*/
public class LastNumberInCircle { public int lastRemainInCircle(int n,int m){
if(m<1 || n<1) return -1;
int[] nums=new int[n];
int indexInNums=-1;
int count=0;//计步器
int length=n;
while(length>0){
indexInNums++;
//
if(indexInNums==n)
indexInNums=0;
//
if(nums[indexInNums]==-1)
continue;
count++;//计步器++;
//
if(count==m){
nums[indexInNums]=-1;
count=0;
length--;
}
}
return indexInNums; } public static void main(String[] args) {
int l = new LastNumberInCircle().lastRemainInCircle(5, 3);
System.out.println(l);
} }

剑指offer系列52---约瑟夫环问题的更多相关文章

  1. 干货 | 剑指offer系列文章汇总

    下面是名企面试中经常会出现的面试题目,大家可以戳相应的题目查看题目细节,其答案会在紧接着的后一篇中出现  剑指offer系列  始 剑指offer—灯管问题(1)  剑指offer—10人电梯(2)  ...

  2. 【剑指offer】52. 两个链表的第一个公共节点

    剑指 Offer 52. 两个链表的第一个公共节点 知识点:链表: 题目描述 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 示例 示例1: 输入:intersectVal = 8, l ...

  3. 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------>剑指offer系列

    题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offe ...

  4. 剑指offer系列29-----链表中环的入口节点-

    [题目]一个链表中包含环,请找出该链表的环的入口结点. [思路]方法一:使用双指针 方法二:利用set集合的特性,不能添加重复数字,否则返回false package com.exe7.offer; ...

  5. 剑指offer系列26--正则表达式匹配

    [题目]请实现一个函数用来匹配包括’.’和’*‘的正则表达式.模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹配整个模式.例 ...

  6. 剑指Offer系列之题1~题5

    目录 1.二维数组的查找 2.替换空格 3.从尾到头打印链表 4.链表中环的入口节点 5.重建二叉树 写在前面:本随笔中包含五道题:题目描述,题目思路以及对应解法. 1.二维数组的查找 在一个二维数组 ...

  7. 剑指offer系列62---两个链表的公共结点

    [题目]输入两个链表,找出它们的第一个公共结点. * [思路]1 获取两链表的长度: * 2 让长的链表先走n步后此时走到短链表起始位置: * 3 两链表同时遍历,直至相同,这时返回第一个公共结点. ...

  8. 剑指offer系列61---数组中的逆序对

    [题目]在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. * [思路]运用归并排序的思想. * 首先将数组分成两个子数组,统 ...

  9. 剑指offer系列60---第一个只出现一次的字符

    [题目]在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置. * 若为空串,返回-1.位置索引从0开始 * [思路]1 首先遍历字符串数组,添 ...

  10. 剑指offer系列59---寻找丑数

    [题目]把只包含因子2.3和5的数称作丑数(Ugly Number). * 例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 解法一 ...

随机推荐

  1. 用jquery将复选框改成单选框

    前提是要包含jquery文件. 相关代码: jQuery(function($) { init_price_checkbox("by_price"); init_price_che ...

  2. python字典中的元素类型

    python字典默认的是string item={"browser " : 'webdriver.irefox()', 'url' : 'http://xxx.com'} 如果这样 ...

  3. MBR主引导扇区解析

    最近在制作镜像的时候由于需要简单研究了下MBR主引导扇区的结构,这里记录下便于后期温习,下面就直接进入正题: MBR主引导扇区位于磁盘的第一个扇区,即0号扇区,主要由引导代码.分区表.结束标志三部分构 ...

  4. Java 有理数类 分数类 Rational类的设计与实现

    要实现Rational类的加减乘除,要实现其可比较性,要覆盖toString()方法,要实现不同数据类型的转换等. package chapter14; public class Rational e ...

  5. 堆(Heap)和二叉堆(Binary heap)

    堆(Heap) The operations commonly performed with a heap are: create-heap: create an empty heap heapify ...

  6. WEBRTC源码片段分析(1)音频缓冲拷贝

    源码位置webrtc/webrtc/modules/audio_device/ios/audio_device_ios.cc函数OSStatus AudioDeviceIPhone::RecordPr ...

  7. Android EditText内容监听

    监听 EditText的内容变化,作出对应的处理. MainActivity.class package com.example.edittextdemo; import android.app.Ac ...

  8. codeforces 192e

    link: http://codeforces.com/contest/330/problem/E /* ID: zypz4571 LANG: C++ TASK: 192e.cpp */ #inclu ...

  9. hilbert矩阵 分类: 数学 2015-07-31 23:03 2人阅读 评论(0) 收藏

    希尔伯特矩阵 希尔伯特矩阵是一种数学变换矩阵 Hilbert matrix,矩阵的一种,其元素A(i,j)=1/(i+j-1),i,j分别为其行标和列标. 即: [1,1/2,1/3,--,1/n] ...

  10. leetcode 105 Construct Binary Tree from Preorder and Inorder Traversal ----- java

    Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...