剑指offer面试题45 圆圈中最后剩下的数字(java实现)
来源:互联网 发布:天津seo点击工具 编辑:程序博客网 时间:2024/05/16 08:25
算法思想:创建一个具有n个节点的环形链表,然后每次在这个链表中删除第m个节点,详细思路可以看看注释
public class Solution {/** * 环形链表的节点类 */class ListNode {public int value;public ListNode next = null;public ListNode(int value) {this.value = value;}}public int LastRemaining_Solution(int n, int m) {if (n <= 0 || m <= 0){return -1;}//创建循环链表ListNode head = new ListNode(0);ListNode pre = head;ListNode current = null;for (int i = 1; i< n; i++) {current = new ListNode(i);pre.next = current;pre = current;}//形成环pre.next = head;//只要环中个数大于1,就继续删while (n > 1) {pre = current = head;int index = 0;//首先需要定位到第m个数字while (index < m - 1) {pre = current;current = current.next;index++;}//找到当前需要删除节点的下一个节点ListNode follow = current.next;//改变指向,进行删除操作pre.next = follow;//圈中数字个数少1n--;//将刚删除节点的下一个元素设置为链表的头元素head = follow;}return head.value;}
阅读全文
0 0
- 剑指offer面试题45 圆圈中最后剩下的数字(java实现)
- 剑指Offer面试题45(Java版):圆圈中最后剩下的数字
- 剑指offer 面试题45—圆圈中最后剩下的数字(约瑟夫环)
- 剑指Offer:面试题45 圆圈中最后剩下的数字
- 《剑指Offer》学习笔记--面试题45:圆圈中最后剩下的数字
- 【剑指Offer学习】【面试题45:圆圈中最后剩下的数字(约瑟夫环问题)】
- 剑指offer之面试题45圆圈中最后剩下的数字
- 剑指Offer面试题45:圆圈中最后剩下的数字
- 剑指offer——面试题45:圆圈中最后剩下的数字
- 剑指Offer系列-面试题45:圆圈中最后剩下的数字
- 剑指offer-面试题45-圆圈中最后剩下的数字
- 剑指offer 面试题45 圆圈中最后剩下的数字
- 【剑指Offer】面试题45:圆圈中最后剩下的数字
- 剑指offer:圆圈中最后剩下的数字(java)
- 剑指offer面试题 圆圈中最后剩下的数字(约瑟夫环问题)
- 面试题45:圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字
- 面试题45:圆圈中最后剩下的数字
- Qt5基础(二)编写Qt多窗口程序笔记
- POJ2421_通过Kruskal实现原有树的合并
- leetcode:K inverse pairs array
- 合并表记录
- Hibernate 一对一主键双向关联
- 剑指offer面试题45 圆圈中最后剩下的数字(java实现)
- 关于maven包管理版本冲突的问题
- Ubuntu14.04安装pycharm的步骤
- PAT 甲级1003. Emergency (25) DIJKSTRA
- 新手上路之面向对象 笔记
- Mysql-创建数据库
- APPLYING DEEP LEARNING TO ANSWER SELECTION: A STUDY AND AN OPEN TASK 论文阅读
- nohup /dev/null 2>&1 含义详解
- 389. Find the Difference