zoukankan      html  css  js  c++  java
  • 剑指--第62题 圆圈中最后剩下的数字

    第62题 圆圈中最后剩下的数字

    题目 0,1,,....,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。
    思路 创建环形链表,自己定义了一个链表节点类;
    自己写的low代码

    // 环形链表;
    public class Solution {
        public int LastRemaining_Solution(int n, int m) {
            if (n == 0 || m == 0) {
    			return -1;
    		}
    		// 构造环形链表;
    		ListNode p = new ListNode(0);
    		ListNode q = p;
    		for (int i = 1; i < n; i++) {
    			ListNode temp = new ListNode(i);
    			q.next = temp;
    			q = q.next;
    		}
    		q.next = p;
    
    		// 开始报数(删节点);
    		// 同时需要p和q,p表示待删的
    		while (q.next != q) { //注意出口条件,不是q.next!=null;
    			int j = 0;
    			while (j < m) {
    				if (j == m - 1) {
    					q.next=p.next;
    					p= q.next;
    				} else {
    					q = p;
    					p = p.next;
    					
    				}
    				j++;
    			}
    		}
    		return q.val;  //此时p和q指向同一个;
        }
    }
    class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }
    
    多思考,多尝试。
  • 相关阅读:
    poj1182 食物链
    poj1611 The Suspects
    poj3436 Computer Factory
    (转) GPG入门教程
    cronolog安装配置
    RHCA-436-4 rhcs conga
    pxe引导gparted live万能分区
    linux下拔号pptp
    GNU parted简略用法
    hostapd故障解决(1.1,2.0,2.2)
  • 原文地址:https://www.cnblogs.com/LynnMin/p/9293238.html
Copyright © 2011-2022 走看看