LeetCode中级算法-数学(1)

作者:神秘网友 发布时间:2021-01-12 20:21:30

LeetCode中级算法-数学(1)

快乐数

[题目]

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。

[输入]

19

[返回]

true

解释:

12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

[解法]

维护一个map存储当前计算快乐数的结果,然后无限迭代的计算快乐数,要是计算出的结果是1,表示是快乐数,要是计算出的结果在map中存储,说明要进入一个死循环了,则表示不是快乐数

[代码实现]

package main

import fmt

func main() {
  input := 19
  result := computeResult(input)
  fmt.Println(result:, result)
}

func computeResult(input int) bool {
  filter := map[int]bool {}
  num := input
  for true {
    if num == 1 {
      return true
    }
    
    if _, exists := filter[num]; exists {
      break
    }
    
    num = _computeNext(input)
  }

  return num == 1
}

func _computeNext(input int) int {
  result := 0
  for input  0 {
    item := input % 10
    input = input / 10
    result = item * item
  }
  return result
}

阶乘后的零

[题目]

给定一个整数 n,返回 n! 结果尾数中零的数量。

[输入1]

3

[返回1]

0

解释: 3! = 6, 尾数中没有零。

[输入2]

5

[返回2]

1

解释: 5! = 120, 尾数中有 1 个零.

[解法]

阶乘的结果中,结尾的0,是由所有子元素中成对的2和5形成的,所以我们的思路就是统计出每个元素中可以提供的成对的2和5的个数

[代码实现]

package main

import fmt

func main() {
    input := 5
    result := computeResult(input)
    fmt.Println(result:, result)
}

func computeResult(input int) int {
    count2 := 0
    count5 := 0
    for i := 2; i  input + 1; i++ {
        count2 += _compute(2, i)
        count5 += _compute(5, i)
    }

    return min(count2, count5)
}

func min(a int, b int) int {
    if a  b {
        return a
    }

    return b
}

// 计算输入数字中包含目标数字的个数
func _compute(target int, input int) int {
    count := 0
    num := input
    for num % target == 0 {
        count++
        num = num / target
    }
    return count
}

Excel表列序号

[题目]

给定一个Excel表格中的列名称,返回其相应的列序号。

[输入1]

A

[返回1]

1

[输入2]

AB

[返回2]

28

[输入3]

ZY

[返回3]

701

[解法]

我们设想这样一个题目, 字符串 123, 不使用强制类型转换,如何计算出对应的数字:

我们从头遍历,首先是 1,将它转为1,此时结果result = 1,遍历到 2,此时会result * 10 + 2, result = 12,遍历到 3,此时会result * 10 + 3, result = 123,字母的转换和这个是一致的,只不过字母的进制位是26,而数字的进制位是10

[代码实现]

package main

import (
    fmt
    strconv
)

func main() {
    input := ZY
    result := computeResult(input)
    fmt.Println(result:, result)

    result2 := computeNum(321)
    fmt.Println(resultNum:, result2)
}

func computeResult(input string) int {
    items := []byte(input)
    result := 0
    for i := 0; i  len(items); i++ {
        item := items[i] - A + 1
        result = result * 26 + int(item)
    }

    return result
}

func computeNum(input string) int {
    items := []byte(input)
    result := 0
    for i := 0; i  len(items); i++ {
        item, _ := strconv.Atoi(string(items[i]))
        result = result * 10 + item
    }
    return result
}

LeetCode中级算法-数学(1) 相关文章

  1. Angel图神经网络算法在推荐场景下的实践

    分享嘉宾:孙瑞鸿?腾讯大数据 编辑整理:赵文娇 出品平台:DataFunTalk、AI启蒙者 导读: 随着数据多样性的发展,图计算已经成为业界的一个重要的研究方向,其中图神经网络广泛应用于图的表征学习,与传统的图学习相比,既能学习图网络的拓扑结构,也能聚合

  2. 贪心算法:我要监控二叉树!

    一路跟着「代码随想录」刷题的录友们,二叉树是不是都快忘了,哈哈,反正我讲过的内容我就默认大家都会了,来来来,本题是二叉树上的贪心。需要重温二叉树的录友,传送门: leetcode刷题最强指南(版本1.0) 通知: 一些录友表示经常看不到每天的文章,现在

  3. LeetCode中级算法-数学(2)

    Pow(x, n) [题目] 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 [输入1] 2.00000, 10 [返回1] 1024.00000 [输入2] 2.10000, 3 [返回2] 9.26100 [输入3] 2.00000, -2 [返回3] 0.25000 [解法] 无 [代码实现] package mainimport fmtfunc main() { input := floa

  4. Angel推荐算法在游戏推荐中的应用

    文章作者:王培军?腾讯 高级工程师 整理编辑:李沛欣 出品平台:DataFunTalk、AI启蒙者 导读: Angel是腾讯自研的分布式高性能的机器学习平台,支持机器学习、深度学习、图计算以及联邦学习等场景。Angel的深度学习平台已应用在腾讯的很多个场景中。本次分享

  5. 计算机算法的五个特性是什么

    计算机算法的五个特性是:1、有穷性,算法必须能在执行有限个步骤之后终止;2、确切性,算法的每一步骤必须有确切的定义;3、输入项,一个算法有0个或多个输入;4、输出项,一个算法有一个或多个输出;5、可行性,每个计算步骤都可以在有限时间内完成。 算法

  6. 一个算法示例:PHP实现开心消消乐

    本文主要介绍了关于PHP如何实现我们大家都知道的开心消消乐的算法。 推荐:《PHP视频教程》 一、需求描述: 1、在一个8*8的矩阵方格中随机出现5种颜色的色块。 2、当有三个或以上色块在横向或纵向上相连,则消除这些色块。 3、色块消除后,上方色块往下平移,

  7. LRU算法的实现

    缘由:看到redis的缓存淘汰机制,便自己实现了一下 代码实现(双向链表+HashMap) package com.jarjune.jdalao.framework.algorithm;import java.util.*;/** * LRU * @author jarjune * @version 1.0.1 * @date 2020/11/19 */public class LRUCacheK, V { //

  8. 拉斯维加斯算法之n后问题

    1、拉斯维加斯(Las Vegas)算法 舍伍德算法优点在于计算时间复杂度对所有实例相对均匀,但与其相应的确定性算法相比,其平均时间复杂度没有改进。拉斯维加斯算法则不然,它能显著改进算法的有效性,甚至对某些迄今为止找不到有效算法的问题,也能得到满意的算

  9. 拉斯维加斯随机化算法求解整数因子分解

    问题描述 设n1是一个整数。关于整数n的因子分解问题是找出n的如下形式的 唯一分解式 :。其中,p1p2…pk是k个素数,m1,m2,…,mk是k个正整数。如果n是一个合数,则n必有一个非平凡因子x,1xn,使得x可以整除n。 给定一个合数n, 求n的一个非平凡因子的问题称

  10. java面试之归并排序的应用

    文章背景: 在复习算法及数据结构时,找到了面试笔试题目,下面我们来看看题目: (学习视频分享:java教学视频) 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2020, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词