nums,target = input().split() List = input() class Solution: def search(self, nums: List[int], target: int) -> int: first,last = 0,len(nums) while first<last: #左闭右开,first不会等于last[first,last) mid_index = (first+last) // 2 if nums[mid_index]<target: first = mid_index+1 elif nums[mid_index]>target: last = mid_index #注意与第一种方法的区别,last为开区间 else: return mid_index return len(nums)+1改正
时间: 2024-02-14 16:35:47 浏览: 359
nums, target = input().split()
List = input().split() # 将字符串转换为列表,方便后续操作
class Solution:
def search(self, nums: List[int], target: int) -> int:
first, last = 0, len(nums)
while first < last:
mid_index = (first + last) // 2
if nums[mid_index] < target:
first = mid_index + 1
elif nums[mid_index] > target:
last = mid_index
else:
return mid_index
return -1 # 如果没有找到目标值,则返回 -1
# 创建 Solution 类的实例
s = Solution()
# 将输入的 List 中的字符串转换为整数
nums = [int(num) for num in List]
# 调用 search 方法,输出结果
print(s.search(nums, int(target)))
相关问题
nums,target = input().split() []= input().split() class Solution: def search(self, nums: List[int], target: int) -> int: first,last = 0,len(nums) while first<last: #左闭右开,first不会等于last[first,last) mid_index = (first+last) // 2 if nums[mid_index]<target: first = mid_index+1 elif nums[mid_index]>target: last = mid_index #注意与第一种方法的区别,last为开区间 else: return mid_index return len(nums)+1
在这段代码中,List 和 []= input().split() 都没有指定变量名,因此无法在后续的代码中使用它们。同时,在列表推导式中也没有指定变量名,因此也无法在后续的代码中使用它。
需要将 List 和列表推导式中的变量名指定为一个合法的变量名,并将列表推导式的结果赋值给 nums,才能正常运行代码。修改后的代码如下:
nums, target = input().split()
num_list = input().split()
nums = [int(num) for num in num_list]
class Solution:
def search(self, nums: List[int], target: int) -> int:
first, last = 0, len(nums)
while first < last:
mid_index = (first + last) // 2
if nums[mid_index] < target:
first = mid_index + 1
elif nums[mid_index] > target:
last = mid_index
else:
return mid_index
return -1
# 创建 Solution 类的实例
s = Solution()
# 调用 search 方法,输出结果
print(s.search(nums, int(target)))
import torch from torch.utils.data import Dataset from tools import ReadIntArray, OneHotData class SSQDataset(Dataset): def __init__(self, file_path, my_detection, sample_nums): self.file_path = file_path self.my_detection = my_detection self.sample_nums = sample_nums self.my_list = ReadIntArray(self.file_path) def __getitem__(self, my_index): data_list = [] target_list = [] start_index = my_index for sample_num in range(self.sample_nums): data_list.append(self.my_list[start_index + sample_num]) if self.my_detection in self.my_list[start_index + self.sample_nums]: target_list = [1, 0] else: target_list = [0, 1] data_list = OneHotData(data_list) data_list = torch.tensor(data_list, dtype=torch.float32) target_list = torch.tensor(target_list, dtype=torch.float32) return data_list, target_list def __len__(self): return len(self.my_list) - self.sample_nums
这段代码定义了一个名为SSQDataset的数据集类,用于读取文件并将其转换为模型可接受的数据格式。其中:
- `file_path`表示数据文件路径;
- `my_detection`表示要检测的目标,例如在双色球中是要预测的红球还是蓝球;
- `sample_nums`表示每个样本中包含的数据点数;
- `ReadIntArray`函数用于读取数据文件并将其转换为整数列表;
- `__getitem__`函数用于获取某个索引位置的数据,并将其转换为模型可接受的数据格式,同时将该数据对应的目标标签也转换为模型可接受的格式;
- `OneHotData`函数用于将原始数据转换为独热编码格式;
- `__len__`函数用于返回数据集的长度。
这个数据集类可以用于训练模型,例如:
```python
from torch.utils.data import DataLoader
from model import MyModel
dataset = SSQDataset(file_path='data/ssq.txt', my_detection='red', sample_nums=5)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
model = MyModel()
for data, target in dataloader:
output = model(data)
loss = compute_loss(output, target)
optimizer.zero_grad()
loss.backward()
optimizer.step()
```
这里假设模型类为`MyModel`,使用PyTorch内置的`DataLoader`类将数据集分成批次进行训练。在每个批次中,将数据输入模型,计算损失并进行反向传播和优化。
阅读全文