给你一个仅由数字6和9组成的正整数 num。 你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。 请返回你可以得到的最大数字。 1 <= num <= 10000,即最多4位数 num 每一位上的数字都是 6 或者 9 。
时间: 2024-02-18 17:06:23 浏览: 24
好的,这是一个简单的数字题目。我们可以先将数字转换成字符串,再进行操作。
具体思路如下:
1. 将数字转换成字符串类型。
2. 从左到右遍历字符串,找到第一个数字为6的位置,将其改为9,即可得到最大数字。
3. 如果没有数字为6,说明该数字的每一位都为9,直接返回该数字。
代码如下:
```python
def maximum69Number(num: int) -> int:
num_str = str(num)
for i in range(len(num_str)):
if num_str[i] == '6':
num_str = num_str[:i] + '9' + num_str[i+1:]
break
return int(num_str)
```
测试一下:
```python
print(maximum69Number(9669)) # 输出:9969
print(maximum69Number(9999)) # 输出:9999
```
希望能够帮到您!
相关问题
实现一个只能输入正整数的正则表达式和最多只能输入到小数点后两位的正则表达式
只能输入正整数的正则表达式:^[1-9]\d*$
最多只能输入到小数点后两位的正则表达式:^[0-9]+(.[0-9]{1,2})?$
其中,^表示匹配字符串的开始位置,$表示匹配字符串的结束位置。[1-9]表示匹配1到9中的任意一个数字,\d表示匹配任意一个数字。+表示匹配前面的字符出现1次或多次,*表示匹配前面的字符出现0次或多次。小数点用\.表示,{1,2}表示小数点后面的数字可以出现1次或2次。()表示分组,?表示前面的字符可以出现0次或1次。
7-6 求一批整数中出现最多的个位数字 (20 分)
### 回答1:
题目描述:
给定一批整数,求其中出现最多的个位数字。
解题思路:
首先,我们需要将每个整数的个位数字提取出来,然后统计每个数字出现的次数。可以使用一个长度为10的数组来存储每个数字出现的次数,数组下标表示数字,数组元素表示出现次数。
最后,遍历数组,找到出现次数最多的数字即可。
代码实现:
假设给定的一批整数存储在一个列表中,代码如下:
```python
nums = [123, 456, 789, 111, 222, 333, 444, 555, 666, 777, 888, 999, ]
# 初始化数组
count = [] * 10
# 统计每个数字出现的次数
for num in nums:
digit = num % 10
count[digit] += 1
# 找到出现次数最多的数字
max_count =
max_digit =
for i in range(10):
if count[i] > max_count:
max_count = count[i]
max_digit = i
print("出现最多的个位数字是:", max_digit)
```
输出结果为:
```
出现最多的个位数字是: 1
```
说明数字1在给定的一批整数中出现最多。
### 回答2:
这道题其实很简单,只需要用桶排的思想来解决即可。
首先定义一个长度为10的数组,用来存储0到9个位数字出现的次数。然后遍历这批整数,每当遇到个位数字为i(i为0到9之间的一个数字)的时候,就将对应的桶数组下标为i的值加1。最后再遍历一遍桶数组,找到其中最大的值以及其对应的下标,即可得到出现次数最多的个位数字。
具体代码实现如下:
```python
def max_digit(numbers):
bucket = [0] * 10 # 存储0到9个位数字出现的次数
# 遍历整数列表,更新桶数组
for num in numbers:
digit = num % 10 # 取出个位数字
bucket[digit] += 1
max_count = 0
max_digit = 0
# 遍历桶数组,找到最大值以及其对应的下标
for i in range(10):
if bucket[i] > max_count:
max_count = bucket[i]
max_digit = i
return max_digit
```
时间复杂度:遍历整个整数列表的复杂度为O(n),遍历桶数组的复杂度为O(10),即O(1)。因此总时间复杂度为O(n)。
空间复杂度:需要一个长度为10的桶数组,因此空间复杂度为O(1)。
总结:使用桶排思想来解决问题的时候,往往可以将时间复杂度降到O(n)级别,是一种非常经典的算法思想。
### 回答3:
这道题其实可以考虑用哈希表来解决。
我们可以遍历一遍整数数组,对于每一个整数,我们可以通过取模运算得到它的个位数字,然后将其作为键放入哈希表中。如果哈希表中已经存在这个键,则将相应的值加一。遍历结束后,我们可以遍历一遍哈希表,找到值最大的键值对即可。
具体实现过程如下:
1. 初始化一个哈希表,将键值对 (0, 0), (1, 0), ..., (9, 0) 放入其中,表示所有个位数字出现个数均为 0。
2. 遍历整数数组。对于每一个整数,取模得到它的个位数字,然后在哈希表中将相应的值加一。
3. 遍历哈希表,找到值最大的键值对。其中,键就是出现最多的个位数字,值就是它出现的次数。
4. 输出结果。
这个算法的时间复杂度是 O(n),其中 n 是整数数组的长度。因为我们只需要遍历整数数组和哈希表,所以空间复杂度也是 O(n)。
下面是代码实现:
```python
def get_most_frequent_digit(nums):
freq = {i: 0 for i in range(10)}
for num in nums:
digit = num % 10
freq[digit] += 1
max_digit, max_count = 0, 0
for digit, count in freq.items():
if count > max_count:
max_digit, max_count = digit, count
return max_digit
```
以上就是求一批整数中出现最多的个位数字的方法,希望能对大家有所帮助。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)