zoukankan      html  css  js  c++  java
  • Go语言实现:【剑指offer】丑数

    该题目来源于牛客网《剑指offer》专题。

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

    求按从小到大的顺序的第N个丑数。

    Go语言实现:

    func getUglyNumber(index int) int {
      //第0-6个丑数,分别是0-6
      if index < 7 {
        return index
      }
    ​
      i2 := 0
      i3 := 0
      i5 := 0
      //从1开始,1*2,1*3,1*5
      num := 1
      //按顺序存丑数
      var arr []int
      arr = append(arr, num)
      for len(arr) < index {
        //取小
        num = min(arr[i2]*2, min(arr[i3]*3, arr[i5]*5))
        //防止重复,如果一样,都会++,但只存一次
        if arr[i2]*2 == num {
          i2++
        }
        if arr[i3]*3 == num {
          i3++
        }
        if arr[i5]*5 == num {
          i5++
        }
        arr = append(arr, num)
      }
      return num
    }
    

    输入数字是否为丑数:

    func isUgly(num int) bool {
        if num <= 0 {
            return false
        }
        
        if num == 1 {
            return true
        }
        
        for num != 1 {
            if num % 2 == 0 {
                num /= 2
            } else if num % 3 == 0 {
                num /= 3
            } else if num % 5 == 0 {
                num /= 5
            } else {
                return false
            }
        }
        return true
    }
    
  • 相关阅读:
    自己建二维obj
    微信webview
    闭包
    angular
    2015项目timeline
    项目总结
    aa
    AHA高级心血管生命支持ACLS课前自我评估测试
    BASH_SOURCE
    bootstrap--小李子demo
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12129927.html
Copyright © 2011-2022 走看看