日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 【Leetcode】Two Sum

【Leetcode】Two Sum

來源:程序員人生   發布時間:2016-10-10 08:13:02 閱讀次數:2557次

問題描寫

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution.

Example:

Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].

給定1個數組和1個數,在數組中找到兩個數,它們的和等于給定數,返回這兩個數在數組中的索引。

問題分析

兩重循環最簡單,但肯定超時。數組排序是必須的,這樣可以有1定的次序來求和。但如果順序查找,就又是兩重循環了。

所以,可以以這樣的次序查找:從兩頭,到中間。保存兩個指針,左側1個,右側1個,兩個指針指向的數相加,會有以下結果和操作:

  1. 相加上和等于給定數,成功;
  2. 相加上和大于給定數,大了,右側的指針左移,將兩數之和減小;
  3. 相加上和小于給定數,小了,左側的指針右移,將兩數之和加大。

注:參數是援用,排序時要使用拷貝的數組

代碼

class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { // 復制數組,由于要排序 vector<int> cp(nums); // 先排序 sort(cp.begin(), cp.end()); int right = cp.size()-1; int left = 0; while(right > left) { int sum = cp[right] + cp[left]; if(sum == target) { break; } else if(sum < target) { // 數小了,left右移 left++; } else if(sum > target) { // 數大了,right左移 right--; } } vector<int> r; int a=-1,b=-1; // 取出索引 for(int i=0;i<nums.size();i++) { if(nums[i] == cp[left]&&a==-1) a = i; else if(nums[i] == cp[right]&&b==-1) b = i; } if(a>b) { int t = a; a=b,b=t; } r.push_back(a); r.push_back(b); return r; } };
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久嫩草 | 极品久久 | 日韩成人美女视频 | 中文字幕 国产精品 | 精品亚洲国产成av人片传媒 | 国产成人在线电影 | 一区二区久久久 | 国产高清免费视频 | 国产一区高清 | 成人一二三区 | 亚洲精品视频在线观看免费 | 日韩成人久久 | 久精品视频| 国产成人精品久久二区二区91 | 久久亚洲线观看视频 | 成人免费观看黄a大片夜月 日韩亚洲欧美一区 | av在线资源网 | 国产福利91精品一区二区三区 | 国产亚洲精品久久久优势 | 欧美亚洲一二三 | 精品91久久| 久久精品视频一区二区 | 一区二区三区久久久 | 国产精品欧美一区二区三区 | 国产在线精品一区二区 | 国产精品久久久久久久久久久久久久 | 中国av在线| 手机福利视频 | 久久精品欧美一区二区三区不卡 | 亚洲视频精品一区 | 爱爱视频在线观看 | 免费观看一区二区三区毛片 | 久久国产伊人 | 国产精品久久久久久久久久免费 | 久久嫩草| 亚洲视频在线观看免费 | 日本性视频在线 | 日韩中文一区二区三区 | 一区二区三区国产视频 | 亚洲午夜视频在线 | 国产精品麻豆 |