zoukankan      html  css  js  c++  java
  • ARTS 计划第三周周

    Algorithm:

    3Sum Closest

    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).

    Solution

    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"].

    Solution

    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;
    	}
    };
    

    使用递归的算法:

    1. 将整个事情分为两部,第一部分为当前的按钮需要选区的值,第二部分为剩余的部分。
    2. 在剩余的部分继续使用步骤一,直至到最后一个。

    REVIEW

    Unix环境高级编程
    1.open read write lseek pthread_t fork 这些函数的学习。
    2.尝试写出多线程的冲突问题,没有找到,后来发现可能是虚拟机的单核,导致多线程没有出现冲突的情况

    TIPS

    一直迷茫在工作和学习的问题上,没有好好工作。没有什么可以记录的。

    SHARE

    [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/)
    高效的时间规划对我的启发。

    1. 通过尽可能的完成计划来作为一天的结束,这样第二天你就不会制定不合乎实际的计划了。
    2. 只需罗列5条重要的事情,过多的条目会让你不知道事情的重要性
    3. 给每个事情安排提供 一个时间段,可以提高实现事情的可能
    4. 通过给事情提供优先级来处理事情。
  • 相关阅读:
    近期需要学习的
    sdfsdf
    思路绝对清楚,手段绝对下流【转】
    一宅镇京华——看谁还敢在我面前吹丫有钱 
    白天求生存,晚上求发展
    Ten Places to Go for SharePoint Development Information
    Life Record
    Custom Search Result Style Based On SharePoint Xslt Search Result Style
    软考信息系统项目管理师考试记录
    什么是Microsoft SharePoint 2010
  • 原文地址:https://www.cnblogs.com/bookdrip/p/10667881.html
Copyright © 2011-2022 走看看