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
    }
    
  • 相关阅读:
    sqlsever2008及以上各个安装包的说明
    解决 windows2012 下无法安装 sql2008R2
    dapper extensions (predicates)
    Dapper full example
    Dapper.ColumnMapper 的使用
    wms
    大端格式 与 小端格式
    mysql数据库引擎
    事务
    MySQL索引底层实现
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12129927.html
Copyright © 2011-2022 走看看