Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of the three integers. You may assume that each input would have exactly one solution.
Example:
Given array nums = [-1, 2, 1, -4], and target = 1.
The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
class Solution {
public:
int threeSumClosest(vector<int>& nums, int target) {
std::sort(nums.begin(), nums.end());
int sum = nums[nums.size() - 1] + nums[nums.size() - 2] + nums[nums.size() - 3];
int adistance = abs(nums[nums.size() - 1] + nums[nums.size() - 2] + nums[nums.size() - 3]-target);
int i = 0;
if (nums.size() > 2) {
for (i = 0; i < nums.size() - 2; i++)
{
int j = i + 1;
int k = nums.size() - 1;
while (k > j) {
int tmp = nums[i] + nums[j] + nums[k];
int compare = tmp - target;
if (abs(compare) < adistance)
{sum = tmp;
adistance = abs(compare);
}
if (compare < 0)
{
j++;
}
else if (compare > 0)
{
k--;
}
else if(compare==0)
{
sum = tmp;
return sum;
}
}
}
}
return sum;
}
};
和上一题的基本算法相似,不同在于需要判断三个数的和是否与目标值最接近,如果较小就更新结果。
Letter Combinations of a Phone Number
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Example:
Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
class Solution {
public:
string NumChar[8];
vector<string> result;
void initial() {
NumChar[0] = "abc";
NumChar[1] = "def";
NumChar[2] = "ghi";
NumChar[3] = "jkl";
NumChar[4] = "mno";
NumChar[5] = "pqrs";
NumChar[6] = "tuv";
NumChar[7] = "wxyz";
}
void GetNumber(vector<string> &result, string answer, int remainsize, string digits)
{
if (remainsize == 0)
{
result.push_back(answer);
}
else if (remainsize > 0)
{
int num = digits.size() - remainsize;
int index = NumChar[digits[num]-'2'].size();
for (int i = 0; i < index; i++)
{
int remainsizecopy = remainsize;
string answer_copy = answer;
answer_copy += NumChar[digits[num]-'2'][i];
remainsizecopy--;
GetNumber(result, answer_copy, remainsizecopy, digits);
}
}
}
vector<string> letterCombinations(string digits) {
initial();
if(digits==""){
return result;
}
string answer;
GetNumber(result, answer, digits.size(), digits);
return result;
}
};
使用递归的算法:
Unix环境高级编程
1.open read write lseek pthread_t fork 这些函数的学习。
2.尝试写出多线程的冲突问题,没有找到,后来发现可能是虚拟机的单核,导致多线程没有出现冲突的情况
一直迷茫在工作和学习的问题上,没有好好工作。没有什么可以记录的。
[10 proven, most effective ways to use a to-do list]
(https://www.bountytasker.com/10-proven-most-effective-ways-to-use-a-to-do-list/)
高效的时间规划对我的启发。
原文:https://www.cnblogs.com/bookdrip/p/10667881.html