zoukankan      html  css  js  c++  java
  • 约瑟夫环形链表问题、丢手帕问题、剑指offer圆圈中最后一个数问题

    public class Solution {
    // 左神解法,本题本质还是报数为m-1的倍数的人死。求最后一个活着的人是初始时候的哪个人
           /* 报数(A) 实际人员编号(B)
            0 0
      . .
      . .
      n-1 n-1
      n 0
      则可知B = A % n
      同时,当杀了一个人之后,杀人前记为before,杀人后记为after.
      before               after
      k (k < n)            (没有了,因为被杀后变为n-1个人了)
      k+1 0
      .          .
      .          .
      n-2        n-k-3
      0          n-k-2
      .          .
      .          .
      k-1        n-2
        符合公式before = (after + k + 1) % n
          可知,最后一个活着的人为0号,因此可以利用逆推的方法求得活着的那个人。*/

          public int LastRemaining_Solution(int n, int m) {
            if (n < 1 || m < 1) {
              return -1;
            }
            int live = getLive(n, m);
            return live;
          }
          public int getLive(int n, int m) {
            if (n == 0) {
              return 0;
            }
            return (getLive(n - 1, m) + m) % n;
         }

  • 相关阅读:
    jQuery 元素操作
    jQuery 文本属性值
    jQuery 属性操作
    jQuery 效果
    sass入门学习篇(二)
    sass入门学习篇(一)
    CSS3 基础知识[转载minsong的博客]
    js倒计时,秒倒计时,天倒计时
    webstorm快捷键收集【转发】
    placeholder各种浏览器兼容问题
  • 原文地址:https://www.cnblogs.com/Elliott-Su-Faith-change-our-life/p/7399300.html
Copyright © 2011-2022 走看看