easy 加一 vector容器

vector 容器:


/* 创建vector,命名为values */
vector<double> values (20);   // 也可以不规定空间:vector<double> values
vector<int > a(5,1); //定义了5个整型元素的向量,且给出每个元素的初值为1

/* 赋值 */
values[0] = 3.14159;
values[1] = 5.0;
values[2] = 2.0*values[0]*values[1];

/* 取出元素 */
values.front();  //  取出最后一个元素
values.back();   //  取出第一个元素
values.at(values.size()-1);  //  取出最后一个元素 (访问指定位置元素)
values.end()-1;   //  取出最后一个元素
values.rbegin();   //  取出最后一个元素

/* 插入 */
values.insert(values.begin(), 100);  // 在指定位置插入值100, insert (位置迭代器)
values.push_back(3);    // 在末尾插入值3

/* 删除 */
values.pop_back();    // 删除末尾元素
values.erase(values.begin());  // 删除指定位置元素, erase (位置迭代器)
values.erase(values.begin(), values.end());   // 清空数组指定范围
values.clear();  // 清空数组

/* 取出指针 */
values.begin();  // 返回指向第一个元素的指针
values.end();  //函数返回一个指向当前vector末尾元素的下一位置的迭代器.要访问末尾元素,需要先将此迭代器减1。
auto pData = values.data();  // 返回一个指向数组的指针,pData 是 double* 类型

/* 遍历 */
for (auto value : values){
	......
}

/*
1.push_back 在数组的最后添加一个数据
2.pop_back 去掉数组的最后一个数据
3.at 得到编号位置的数据
4.begin 得到数组头的指针
5.end 得到数组的最后一个单元+1的指针
6.front 得到数组头的引用
7.back 得到数组的最后一个单元的引用
8.max_size 得到vector最大可以是多大
9.capacity 当前vector分配的大小
10.size 当前使用数据的大小
11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
12.reserve 改变当前vecotr所分配空间的大小
13.erase 删除指针指向的数据项
14.clear 清空当前的vector
15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
17.empty 判断vector是否为空
18.swap 与另一个vector交换数据
*/


题目:

在这里插入图片描述


c++ vector函数:


class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        digits.insert(digits.begin(), 0);  // 首位插入0,预备第二位进位溢出
        digits.back() = digits.back()+1;   // 末位值+1
        for(int i=digits.size()-1;i>=0;i--){   // 从右向左遍历
            if (digits[i]==10 ){    // 进位
                digits[i]=0;
                digits[i-1]++;
            }
        }
        if(digits[0]==0){
            digits.erase(digits.begin());   // 首位删除0
        }
        return digits;
    }
};


数学加法:

c++


class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        for(int i=digits.size()-1; i>=0; i--){
            if(digits[i]==9){
                digits[i] = 0;
            }else{
                digits[i]++;
                return digits;
            }
        }
        // 循环结束还没 return, 说明每一位都进位了,则digits长度+1,首位为1
        digits.insert(digits.begin(),1);  // 首位插入1
        return digits;
    }
};

python


class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        for i in range(len(digits)-1,-1,-1):  # 左闭右开区间[len,-1) 才是len~0
            if digits[i]==9:
                digits[i] = 0
            else:
                digits[i]+=1  # python 没有a++
                return digits

        digits=[1]+digits       #  首位插入1
        return digits    


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值