LeetCode50天刷题计划第二季(Day 31 — 两数之和 II - 输入有序数组(11.10-11.20)分数到小数(11.30-12.30)
创始人
2024-01-30 22:51:43
0

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

文章目录

  • 前言
  • 一、题目
    • 两数之和 II - 输入有序数组
    • 示例
    • 提示
  • 二、思路
  • 三、代码
  • 四、题目
    • 分数到小数
    • 示例
    • 提示
  • 五、思路
  • 六、代码


前言

没看出来跟 两数之和 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
仅存在一个有效答案

二、思路

三、代码

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 

在这里插入图片描述

四、题目

分数到小数

给定两个整数,分别表示分数的分子 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

五、思路

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

六、代码

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 #余数一定不为0count=len(result) #记载小数的位置temp={remainder:count} #加入哈希表remainder*=10#处理小数while(1):result+=str(remainder//denominator)remainder%=denominatorif(remainder==0): #余数为0,整除了breakif(remainder in temp): #余数重复了,给循环节加上括号即可flag=temp[remainder] #循环节开始的地方result=result[:flag]+'('+result[flag:]+')'breakcount+=1temp[remainder]=count    remainder*=10return result

在这里插入图片描述

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...