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

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

  • 相关阅读:
    docker 之 docker-compose 初探
    docker 之 .net core 镜像制作
    docker 之 registry私有仓库(harbor)
    ASP.NET Core 学习笔记(认证授权)
    ASP.NET Core 学习笔记(http请求处理)
    ASP.NET Core 学习笔记(依赖注入)
    Linux基础编程之网络编程TCP实例
    功能包和CMakeLists.txt
    ROS的主节点(名称服务器)---roscore
    关于ros开发
  • 原文地址:https://www.cnblogs.com/a-dreaming-dreamer/p/5708347.html
Copyright © 2011-2022 走看看