题解 | #两数之和#

两数之和

http://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

class Solution {
public:
    /**
     * 
     * @param numbers int整型vector 
     * @param target int整型 
     * @return int整型vector
     */
    vector<int> twoSum(vector<int>& numbers, int target) {
        // write code here
        vector<int> copy = numbers;
        sort(numbers.begin(),numbers.end());

        for(int i=0;i<numbers.size();i++){
            int index = binaryfind(numbers, target - numbers[i]);
//             cout<<index<<" "<<i<<" ";
            if(index!=-1 && index!=i) {
//                 cout<<"jin";
//                 return {i,index};
                vector<int> res;
                for(int j=0;j<numbers.size();j++) {
//                     for(auto a : res) {
//                         cout<<a<<" ";
//                     }

                    if(copy[j] == numbers[index] || copy[j] ==numbers[i]) {
                        res.emplace_back(j+1);
                    }
                    if(res.size()==2) {
                        return res;
                    }
                }
            }
        }
        return {};

    }

    int binaryfind(vector<int>& numbers , int target) {
        // 左闭右开
        int left =0;
        int right = numbers.size();
        // 那么结束的条件就是 left=right

        while(left<right) {
            int mid = left + (right-left)/2;
            int value = numbers[mid];
            if(target==value){
                return mid;
            } else if(target>value) {
                left = mid+1;
            } else if(target<value) {
                right=mid;
            }
        }

        return -1;
    }
};
全部评论

相关推荐

rbjjj:太杂了吧,同学,项目似乎都没深度,都是api调度耶,分层架构思想没有体现出来了,前端没有前端优化前端工程化体现,后端微服务以及分层架构没体现以及数据安全也没体现,核心再改改,注重于计算机网络,工程化,底层原理吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务