首页 > 其他分享 >397. 整数替换

397. 整数替换

时间:2023-06-02 21:24:01浏览次数:22  
标签:示例 int 整数 momo 397 替换 def

难度中等

给定一个正整数 n ,你可以做如下操作:

  1. 如果 n 是偶数,则用 n / 2替换 n 
  2. 如果 n 是奇数,则可以用 n + 1n - 1替换 n 。

返回 n 变为 1 所需的 最小替换次数 。

 

示例 1:

输入:n = 8
输出:3
解释:8 -> 4 -> 2 -> 1

示例 2:

输入:n = 7
输出:4
解释:7 -> 8 -> 4 -> 2 -> 1
或 7 -> 6 -> 3 -> 2 -> 1

示例 3:

输入:n = 4
输出:2



class Solution:
    def integerReplacement(self, n: int) -> int:

        def backtracking(n,momo):
            if n == 1:
                momo[n] = 1
                return 1
            if n <=0:
                return 0
            
            if n%2==1:
                res = 1 + min(backtracking(n+1,momo),backtracking(n-1,momo))
            else:
                res = 1 + backtracking(n/2,momo)
            
            momo[n] = res
            return res
        momo = {}
        return backtracking(n,momo)-1

 

标签:示例,int,整数,momo,397,替换,def
From: https://www.cnblogs.com/zle1992/p/17452905.html

相关文章

  • 整数在内存中的天才存储方案
    加法和减法是计算机中最基本的运算,计算机时时刻刻都离不开它们,所以它们由硬件直接支持。为了提高加减法的运算效率,硬件电路要设计得尽量简单。对于有符号数,内存要区分符号位和数值位,对于人脑来说,很容易辨别,但是对于计算机来说,就要设计专门的电路:有符号加、减,这无疑增加了硬件的复......
  • 2023-06-02:给定一个二进制数组 nums 和一个整数 k, k位翻转 就是从 nums 中选择一个长
    2023-06-02:给定一个二进制数组nums和一个整数k,k位翻转就是从nums中选择一个长度为k的子数组,同时把子数组中的每一个0都改成1,把子数组中的每一个1都改成0。返回数组中不存在0所需的最小k位翻转次数。如果不可能,则返回-1。子数组是数组的连续部分。输入:nums......
  • acm杭电2092-整数解
    ProblemDescription有二个整数,它们加起来等于某个整数,乘起来又等于另一个整数,它们到底是真还是假,也就是这种整数到底存不存在,实在有点吃不准,你能快速回答吗?看来只能通过编程。例如:x+y=9,x*y=15?找不到这样的整数x和y1+4=5,1*4=4,所以,加起来等于5,乘起......
  • shell遍历当前目录下的文件,用去掉文件后缀的字符串替换文件中的文本
    今天写了一个shell,遍历当前目录下的文件,用每个文件的文件名去掉后缀的字符串替换文件中的一段字符串。 脚本如下:#!/bin/bashfile=`ls*.html`;echo$fileforitemin$filedofilename=${item%.*}echo$filenamesed-i"s/search('channel')/search('${fi......
  • ​​拍照替换 IOS手机端安装使用教程​
    拍照替换IOS手机端安装使用教程拍照插件是一款自动替换拍照数据的插件,支持单张多张照片选择替换,作用于系统全局,所有调用拍照的APP均有效。功能使用简单,单张,多张图片选择,按音量键切换照片。一、适用机型及系统1、机型:除SE和XR之外单所有iphone机型,可越狱即可2、系统:支持12系统及以......
  • 算法题分析:反转整数
    最近刷到了一道medium难度的算法题,比较典型,可以用语法特性和常规解法来解决。题目如下:给定一个32字节的有符号整型数字x,将x反转过来返回。如果反转x会让其数值超出32位有符号整型数字范围[-2^31,2^31-1],那么就返回0。假设运行环境不允许你存储64位整型数字(有符号或者无符号)。......
  • 剑指 Offer 67. 把字符串转换成整数
    题目描述:写一个函数StrToInt,实现把字符串转换成整数这个功能。不能使用atoi或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合......
  • 数据窗口中列值为空值时用特殊字符'/'替换
    说明:需要用公式来判断该值//列为char型if(len(trim(smell))>0,trim(smell),'/')//列为numeric型if(wool_spec>0,String(wool_spec,'###,##0.00'),'/') 效果如下: ......
  • 13. 罗马数字转整数
    class Solution {        Map<Character, Integer> maps = new HashMap<>(){{        put('I', 1);        put('V', 5);        put('X', 10);        put('L', 50);        put('C', 100);       ......
  • 12. 整数转罗马数字
      贪心策略:classSolution{int[]values={1000,900,500,400,100,90,50,40,10,9,5,4,1};String[]symbols={"M","CM","D","CD","C","XC","L","XL","X","IX&q......