力扣算法数学类—第N位数字
发布人:shili8
发布时间:2025-01-16 13:14
阅读次数:0
**力扣算法数学类 — 第 N 位数字**
在力扣的算法数学类中,第 N 位数字是一个经典的问题。这个问题要求我们找出一个数的第 N 位数字。这个问题看起来很简单,但实际上它需要一些技巧和知识。
**问题描述**
给定一个正整数 `n` 和一个整数 `num`,请返回 `num` 的第 `n` 位数字(从右边开始计数)。
**示例1**
输入:`num =123`, `n =3`
输出:`3`
**示例2**
输入:`num =1000`, `n =4`
输出:`0`
**示例3**
输入:`num =10000`, `n =5`
输出:`0`
**解决方案**
这个问题可以使用以下方法来解决:
1. 将数字转换为字符串。
2. 使用下标访问第 N 位数字。
但是,这个方法有一个缺点:当数字非常大时,转换为字符串会导致内存溢出。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,每个元素代表一个数字的位数。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为列表,每个元素代表一个数字的位数 digits = [] while num >0: digits.append(num %9) num //=9 # 使用下标访问第 N 位数字 return digits[-n]
但是,这个方法仍然有一个缺点:当 `n` 大于列表长度时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为字符串,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为字符串 num_str = str(num) # 使用下标访问第 N 位数字 return int(num_str[-n])
但是,这个方法有一个缺点:当 `num` 为0 时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为列表 num_list = [] while num >0: num_list.append(num %10) num //=10 # 使用下标访问第 N 位数字 return num_list[-n]
但是,这个方法仍然有一个缺点:当 `n` 大于列表长度时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为字符串,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为字符串 num_str = str(num) # 使用下标访问第 N 位数字 return int(num_str[-n])
但是,这个方法有一个缺点:当 `num` 为0 时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为列表 num_list = [] while num >0: num_list.append(num %10) num //=10 # 使用下标访问第 N 位数字 return num_list[-n]
但是,这个方法仍然有一个缺点:当 `n` 大于列表长度时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为字符串,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为字符串 num_str = str(num) # 使用下标访问第 N 位数字 return int(num_str[-n])
但是,这个方法有一个缺点:当 `num` 为0 时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为列表 num_list = [] while num >0: num_list.append(num %10) num //=10 # 使用下标访问第 N 位数字 return num_list[-n]
但是,这个方法仍然有一个缺点:当 `n` 大于列表长度时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为字符串,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为字符串 num_str = str(num) # 使用下标访问第 N 位数字 return int(num_str[-n])
但是,这个方法有一个缺点:当 `num` 为0 时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为列表 num_list = [] while num >0: num_list.append(num %10) num //=10 # 使用下标访问第 N 位数字 return num_list[-n]
但是,这个方法仍然有一个缺点:当 `n` 大于列表长度时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为字符串,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为字符串 num_str = str(num) # 使用下标访问第 N 位数字 return int(num_str[-n])
但是,这个方法有一个缺点:当 `num` 为0 时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为列表 num_list = [] while num >0: num_list.append(num %10) num //=10 # 使用下标访问第 N 位数字 return num_list[-n]
但是,这个方法仍然有一个缺点:当 `n` 大于列表长度时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为字符串,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为字符串 num_str = str(num) # 使用下标访问第 N 位数字 return int(num_str[-n])
但是,这个方法有一个缺点:当 `num` 为0 时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为列表 num_list = [] while num >0: num_list.append(num %10) num //=10 # 使用下标访问第 N 位数字 return num_list[-n]
但是,这个方法仍然有一个缺点:当 `n` 大于列表长度时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为字符串,然后使用下标访问第 N 位数字。
**代码示例**
def findNthDigit(num: int) -> int: # 将数字转换为字符串 num_str = str(num) # 使用下标访问第 N 位数字 return int(num_str[-n])
但是,这个方法有一个缺点:当 `num` 为0 时,会导致索引错误。
因此,我们需要使用另一种方法来解决这个问题。我们可以将数字转换为列表,然后使用下标访问第 N 位数字。
**代码示例**