科幻总结

This commit is contained in:
estomm
2021-08-02 08:56:47 +08:00
parent c1763ea078
commit 0f1da229b9
2 changed files with 105 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
# 科幻世界中的电话元素
## 资料准备
## 讲解主题
### 电影
(漫威系列的就算了)
* 黑客帝国
* 信条
* 盗梦空间
* 星际穿越
* 机器人总动员
### 小说
* 短篇小说
* 科幻世界全集
### 动漫
* 攻壳机动队
* rick&morty
* 哆啦A梦
* 命运石之门
* 爱死亡机器人
* 机器人总动员
* 心理测量者
* iMENTOR
* 夏娃的时间
* 新世纪福音战士
* 星空清理者
* 星际牛仔
### 电视剧
* 黑镜
* 西部世界

View File

@@ -144,6 +144,65 @@ public:
}
```
## 4 最接近的三数之和
### 问题描述
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。
```
输入nums = [-1,2,1,-4], target = 1
输出2
解释:与 target 最接近的和是 2 (-1 + 2 + 1 = 2) 。
```
### 问题分析
### 策略选择
### 算法设计
* 首先进行排序
* 固定一个游标。使得剩下的两个游标在固定的游标右侧,使用双指针法,逼近最小值。
### 算法分析
* 时间复杂度O(n^2)
* 空间复杂度O(1)
### 算法实现
```C++
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
sort(nums.begin(),nums.end());
int n = nums.size();
int i=0,j=n-1,k=0;
int m = 999999;
int val =0;
for(int k=0;k<n;k++){
for(int i=k+1,j=n-1;i<j;){
int temp = nums[i]+nums[j]+nums[k];
if(temp==target){
return temp;
}
else if(temp<target){
if(m>target-temp){
m=target-temp;
val = temp;
}
i++;
}
else if(temp>target){
if(m>temp-target){
m=temp-target;
val =temp;
}
j--;
}
// cout<<m<<"\t"<<val<<endl;
}
}
return val;
}
};
```
## 5 环形链表II
### 问题描述