刷洛谷/LintCode/牛客刷题学习心得(2)(c++stl基本用法(反转函数/排序函数/vector容器的常见用法)

本文分享了使用C++ STL进行刷题的心得,重点讲解了反转函数、排序函数的运用,以及如何利用vector容器进行数组操作。内容包括数组反转、排序、动态内存分配、初始化、赋值、输出数组元素、删除元素以及vector的大小调整和元素访问。同时,给出了数组右移k步的实例分析。
摘要由CSDN通过智能技术生成

1.反转函数
将数组中的元素从头到尾变成从尾到头

reverse(nums.begin(),nums.end());


2.排序函数
从小到大排序数组中的数

sort(A.begin(),A.end());

3.指针指向新分配的数组内存地址
  4.new char表示新分配地址

char *p = new char[n];


5.将数组中n个元素赋值为1

memset(p,'1',n);


6.输出数组中最后一个元素

 return nums.back();//一般和2搭配使用,可以求出数组中最大值;


 7.删除迭代器指向的元素

 nums.erase(nums.begin());


 8.容器vector的数组分配大小,并且初始化,无定义时默认为0

 b.resize(nums.resize,10);


 9.输出容器数组中某个值

 return nums[(nums.size()-2)];//这里是倒数第二个


 eg:
 给定一个数组,将数组向右移动k步,其中k为非负数。
 样例
样例 1:

输入: [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右旋转1步: [7,1,2,3,4,5,6]
向右旋转2步: [6,7,1,2,3,4,5]
向右旋转3步: [5,6,7,1,2,3,4]

vector<int> rotate(vector<int> &nums, int k) {
       int n=nums.size();
         if(n<2||k==0){
             return nums;
         }
         if(k<=n){
         reverse(nums.begin(),nums.end()-k);
         reverse(nums.end()-k,nums.end());
         reverse(nums.begin(),nums.end());
         return nums;}
         if(k>n){
             k=k%n;
             reverse(nums.begin(),nums.end()-k);
         reverse(nums.end()-k,nums.end());
         reverse(nums.begin(),nums.end());
          return nums;
         }

        // Write your code here
    }
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值