zoukankan      html  css  js  c++  java
  • 第一次刷题,一不小心这个题好像看过,题目为Two Sum

    class Solution {
    public:
    vector<int> twoSum(vector<int>& nums, int target)
    {
    vector<int>a;
    int flag = 0;
    for(int i=0;i<nums.size()-1;i++)
    {
    for(int j=i+1;j<nums.size();j++)
    {
    if((nums[i]+nums[j])==target)
    {
    a.push_back(i);
    a.push_back(j);
    int flag = 1;
    break;
    }
    }

    if(flag==1)
    {
    break;
    }
    }
    return a;
    }
    };

     由于代码敲错,导致总是出现运行错误,故用vs调试了一下,这里贴出完成的工程代码:

    #include<iostream>
    #include <vector>
    using namespace std;

    vector<int> twoSum(vector<int>& nums, int target);

    int main()
    {
    vector<int>abb;
    abb.push_back(3);
    abb.push_back(2);
    abb.push_back(4);

    int ac = 6;

    cout<<twoSum(abb, ac).front()<<endl;
    cout << twoSum(abb, ac).back() << endl;

    return 0;
    }

    vector<int> twoSum(vector<int>& nums, int target)
    {
    vector<int>a;
    int flag = 0;
    for (int i = 0; i < nums.size() - 1; i++)
    {
    for (int j = i + 1; j < nums.size(); j++)
    {
    if ((nums[i] + nums[j]) == target)
    {
    a.push_back(i);
    a.push_back(j);
    int flag = 1;
    break;
    }
    }

    if (flag == 1)
    {
    break;
    }
    }

    return a;
    }

    其实这个题类似于挑战程序设计里面开篇介绍的题,主要是让降低算法的复杂度,因为数据量太小,此处我直接用枚举法搞定,当数据量变的很大时,就要考虑降低复杂度了,挑战程序设计里面的思路是降低循环的层数,此处的话就是变成一层,然后把向量中的数据排序,最后利用二分查找来判别向量中有没有这个数。第一次发博客,文字表达和代码排版都不会。

  • 相关阅读:
    枚举
    IOS uitableview代理方法
    IOS图片拉伸模式
    IOS单例的设计模式
    圆角属性
    IOS 随机数
    IOS正则表达式
    添加 分类 自动适配图片
    用grep查找文件内容
    Openscada远程配置
  • 原文地址:https://www.cnblogs.com/a-dreaming-dreamer/p/5708347.html
Copyright © 2011-2022 走看看