zoukankan      html  css  js  c++  java
  • LeetCode 1. Two Sum

    https://leetcode.com/problems/two-sum/

    先排序,有序后枚举a,二分查找b,因为必然有解,直接找到就return。

    class Solution {
    public:
        struct node
        {
            int num;
            int ord;
        };
        static bool cmp(node a,node b)
            {
                return a.num<b.num;
            }
        int bins(int l,int r,vector<node>& temp,int key)
        {
            while(l<=r)
            {
                int mid=(l+r)>>1;
                if(temp[mid].num==key)
                    return mid;
                if(temp[mid].num>key)
                    r=mid-1;
                if(temp[mid].num<key)
                    l=mid+1;
            }
            return -1;
        }
        vector<int> twoSum(vector<int>& nums, int target) {
            vector<int> ans;
            vector<node> temp;
            for(int i=0;i<nums.size();i++)
                temp.push_back((node){nums[i],i});
            sort(temp.begin(),temp.end(),cmp);
            for(int i=0;i<temp.size();i++)
            {
                int pos=bins(i+1,temp.size()-1,temp,target-temp[i].num);
                if(pos==-1)
                    continue;
                else
                {
                ans.push_back(temp[i].ord),ans.push_back(temp[pos].ord);
                    return ans;
                }
            }
            return ans;
        }
    };
  • 相关阅读:
    2-分类
    1-确定变量间是否有关系—显著性检验
    git简单操作
    Hadoop HA和Hbase HA
    Docker入门操作
    内存数据库专题(MemCached 和Redis)
    Spark MLlib和Sprk GraphX
    Spark 调优
    Spark Streaming基础
    Spark SQL
  • 原文地址:https://www.cnblogs.com/LukeStepByStep/p/6131973.html
Copyright © 2011-2022 走看看