第一道数据结构算法题

第一道算法题

2019/11/10

一:目录

一、目录

二、前言

三、解题及测试

四、补充知识点

二:前言

  • 难度 :简单
  • 涉及知识:数组
  • 题目地址:力扣数组简单第一题
  • 题目内容 :
  • 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
    你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
    示例:
    给定 nums = [2, 7, 11, 15], target = 9。
    因为 nums[0] + nums[1] = 2 + 7 = 9
    所以返回 [0, 1]
    

    三:解题及思路

  • LeetCode给定函数体
    class Solution {
    public:
    vector<int> twoSum(vector<int>& nums, int target) {
    	}
    }
    	
    	
    

    解题思路一:减法得出一个值后,在数组内寻找是否含有该数

    int i,j,b;
    	vector<int> res;
    	for(i=0;i<nums.size();i++)
    	{
    
    		b=target-nums[i];
                
                for(j=i+1;j<nums.size();j++)
                {
                 if(nums[j]==b)
                     
                {
                    res.push_back(i);
                    res.push_back(j);
                    return res;
                }
            
            }
           
        }
     return res;   
    

    解题思路二:两层for循环嵌套,两个数相加等于target

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

    四:补充知识点

    (一).vector:

    1.vector说明:
    向量vector是一种对象实体,能够容纳许多其他类型相同的元素,因此,又称为容器。可以理解为动态数组,是封装好了的类。
    2.vector初始化:
    方法一:vector<int>a(10), 定义一个具有10个整形元素的向量(尖括号为元素类型名)
    方法二:vector<int>a(10,1), 定义一个具有10个整形元素的向量,且给出的每一个元素初值为1
    方法三:vector<int>a(b), 将向量b赋值给a

    1. vector对象的几个重要操作
      ①. a.back() ,返回a的第一个元素
      ②. a.front() ,返回a的最后一个元素
      ③. a.pop-back() ,删除a的最后一个元素
      ④. a.push-back(5) ,在a的最后一个向量后插入一个元素,其值为5
  • 猜你喜欢

    转载自www.cnblogs.com/HanLongfeng/p/11831822.html