• LeetCode50天刷题计划第二季(Day 31 — 两数之和 II - 输入有序数组(11.10-11.20)分数到小数(11.30-12.30)


    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


    前言

    没看出来跟 两数之和 I 有什么区别

    一、题目

    两数之和 II - 输入有序数组

    给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。
    以长度为 2 的整数数组 [index1, index2] 的形式返回这两个整数的下标 index1 和 index2。
    你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。
    你所设计的解决方案必须只使用常量级的额外空间。

    示例

    示例 1:
    输入:numbers = [2,7,11,15], target = 9
    输出:[1,2]
    解释:2 与 7 之和等于目标数 9 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

    示例 2:
    输入:numbers = [2,3,4], target = 6
    输出:[1,3]
    解释:2 与 4 之和等于目标数 6 。因此 index1 = 1, index2 = 3 。返回 [1, 3] 。

    示例 3:
    输入:numbers = [-1,0], target = -1
    输出:[1,2]
    解释:-1 与 0 之和等于目标数 -1 。因此 index1 = 1, index2 = 2 。返回 [1, 2] 。

    提示

    2 <= numbers.length <= 3 * 104
    -1000 <= numbers[i] <= 1000
    numbers 按 非递减顺序 排列
    -1000 <= target <= 1000
    仅存在一个有效答案
    
    • 1
    • 2
    • 3
    • 4
    • 5

    二、思路

    三、代码

    class Solution:
        def twoSum(self, numbers: List[int], target: int) -> List[int]:
            #两数之和,首先想到双指针法
            left=0 #左指针指向首元素
            right=len(numbers)-1 #右指针指向尾元素
            ssum=numbers[left]+numbers[right] 
            while(ssum != target):
                if(ssum <target): #和小于目标值,左指针后移
                    left+=1
                else: #和大于目标值,尾指针前移
                    right-=1 
                ssum=numbers[left]+numbers[right] #更新和
            return [left+1,right+1]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    四、题目

    分数到小数

    给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。
    如果小数部分为循环小数,则将循环的部分括在括号内。
    如果存在多个答案,只需返回 任意一个 。
    对于所有给定的输入,保证 答案字符串的长度小于 104 。

    示例

    示例 1:
    输入:numerator = 1, denominator = 2
    输出:“0.5”

    示例 2:
    输入:numerator = 2, denominator = 1
    输出:“2”

    示例 3:
    输入:numerator = 4, denominator = 333
    输出:“0.(012)”

    提示

    -231 <= numerator, denominator <= 231 - 1
    denominator != 0
    
    • 1
    • 2

    五、思路

    此题模拟竖式除法,列竖式的具体过程不再赘述。对于循环节,第一次出现重复的余数即视为循环出现(因为相同的余数再怎么除也是相同的结果)。注意此处为了便于确定循环节的位置,需要建立一个对应余数和位置的哈希表。为了方便,首先判断符号,然后将可能的结果分为三种,一是可以整除的,二是有限小数,三是无限循环小数,二和三放一起

    六、代码

    class Solution:
        def fractionToDecimal(self, numerator: int, denominator: int) -> str:
            #可以整除
            if(numerator%denominator == 0):
                return str(int(numerator/denominator))
            
            #有小数
            if(numerator*denominator<0):#先看符号
                result='-'
            else:
                result=''
            numerator,denominator=abs(numerator),abs(denominator)#变正数
            result=result+str(numerator//denominator)+'.'#先除出来整数
            remainder=numerator%denominator #余数一定不为0
            count=len(result) #记载小数的位置
            temp={remainder:count} #加入哈希表
            remainder*=10
            
            #处理小数
            while(1):
                result+=str(remainder//denominator)
                remainder%=denominator
                if(remainder==0): #余数为0,整除了
                    break
                if(remainder in temp): #余数重复了,给循环节加上括号即可
                    flag=temp[remainder] #循环节开始的地方
                    result=result[:flag]+'('+result[flag:]+')'
                    break
                count+=1
                temp[remainder]=count    
                remainder*=10
            return result
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述

  • 相关阅读:
    Java SE 常见问题
    第六章、实现一个持久性适配器
    Spring Cloud Stream 消息驱动基础入门与实践总结
    Android内存优化的知识梳理
    uni-app商品分类
    Python 插入、替换、提取、或删除Excel中的图片
    Vue六(插件|Vuex的使用|购物车垮组件通信|Vue-route|路由跳转 携带数据 嵌套 守卫)
    Allegro削铜皮详细操作指导
    Splunk Workflow action 给我们带来的好处
    webstorm实用技巧
  • 原文地址:https://blog.csdn.net/weixin_46447549/article/details/127919093