方法一:双指针法
这种方法的基本思路是先对数组进行排序,然后使用两个指针分别指向当前元素的下一个和数组末尾。通过计算三个数的和与目标值之间的差值,不断调整指针的位置,直到找到最接近目标值的三数之和。
```python
def threeSumClosest(nums, target):
nums.sort()
n = len(nums)
closest_sum = float('inf')
result = []
for i in range(n - 2):
left, right = i + 1, n - 1
while left < right:
current_sum = nums[i] + nums[left] + nums[right]
if abs(current_sum - target) < abs(closest_sum - target):
closest_sum = current_sum
result = [nums[i], nums[left], nums[right]]
if current_sum < target:
left += 1
elif current_sum > target:
right -= 1
else:
return result
return result
示例
nums = [1, 2, 3, 4]
target = 10
print(threeSumClosest(nums, target)) 输出: [1, 2, 7]
```
方法二:嵌套循环
这种方法通过三层嵌套循环遍历所有可能的三位数组合,并检查它们是否各不相同。如果三个数各不相同,则打印出来。
```python
for i in range(1, 10):
for j in range(0, 10):
if j == i:
continue
for k in range(0, 10):
if k == i or k == j:
continue
print(i, j, k)
```
方法三:输入验证和唯一性检查
这种方法首先获取用户输入,然后验证输入的有效性,并检查数字各位的唯一性。如果输入有效且各位数唯一,则输出结果。
```python
def is_unique_digits(number):
digits = str(number)
return len(digits) == len(set(digits))
def main():
while True:
try:
user_input = input("请输入一个三位不相同的数字(100 - 999):")
if 100 <= int(user_input) <= 999 and is_unique_digits(user_input):
print(user_input)
break
else:
print("输入无效,请输入一个三位不相同的数字。")
except ValueError:
print("输入无效,请输入一个三位不相同的数字。")
main()
```
方法四:Java实现
这种方法使用Java编写,通过三层嵌套循环遍历所有可能的三位数组合,并检查它们是否各不相同。如果三个数各不相同,则打印出来。
```java
public class Numble {
public static void main(String[] args) {
System.out.println("由1,2,3,4组成的互不相同的三位数如下:");
for (int x = 1; x <= 4; x++) {
for (int y = 1; y <= 4; y++) {
for (int z = 1; z <= 4; z++) {
if (x != y && x != z && y != z) {
int s = x * 100 + y * 10 + z;
System.out.print(s + "\t");
}
}
System.out.println("");
}
}
}
}
```
以上是几种不同的编程方法,可以根据具体需求和编程环境选择合适的方法实现。