zoukankan      html  css  js  c++  java
  • 剑指offer 33.丑数

    剑指offer 33.丑数

    题目

    把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。

    思路

    这里采用的是三指针法,任意丑数都是比这个数小的丑数乘以2,3,5其中之一得到的,要求按照顺序排列,那么就从之前的数中找到未被使用过的数乘一下,然后比较,就可以得到新的数了。
    首先初始位为1,设三个指针值n2,n3,n5,初始设为0.之后开始循环,每次循环都找到235未乘过的数字乘一下,然后取最小值为新的丑数。之后,若n2n3n5使用过了,那么指针位+1,下次乘下一个数字,如果都可以,那就都加。把数字记录下来最后输出即可。

    代码

      public int GetUglyNumber_Solution(int index) {
        if(index==0){
          return 0;
        }
        int[] ans = new int[index];
        int n2 = 0, n3 = 0, n5 = 0;
        ans[0] = 1;
        for (int i = 1; i < index; i++) {
          int min = Math.min(ans[n2] * 2, Math.min(ans[n3] * 3, ans[n5] * 5));
          ans[i] = min;
          if (min == ans[n2]*2) {
            n2++;
          }
          if (min == ans[n3]*3) {
            n3++;
          }
          if (min == ans[n5]*5) {
            n5++;
          }
    
        }
        return ans[index-1];
      }
    
  • 相关阅读:
    毕设2020.02.02
    架构师眼中的高并发架构
    云时代架构读后感二
    以《淘宝网》为例,描述质量属性六个常见场景
    《架构漫谈》读后感
    云时代架构读后感一
    暑假周总结报告08
    暑假周总结报告07
    暑假周总结报告06
    假期周总结报告05
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12409104.html
Copyright © 2011-2022 走看看