力扣原题《转轮数组》,已手搓,纯验证
给定一个整数数组 nums将数组中的元素向右轮转 k 个位置其中 k 是非负数。示例 1:输入: nums [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]示例 2:输入nums [-1,-100,3,99], k 2输出[3,99,-1,-100]解释:向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]提示1 nums.length 105-231 nums[i] 231 - 10 k 105我的答案classRotate{public:voidrotate(vectorintnums,intk){//直接对原数组操作intsizek%nums.size();//取余防止输入溢出vectorintfront(nums.end()-size,nums.end());vectorintbehind(nums.begin(),nums.end()-size);nums.clear();nums.shrink_to_fit();nums.insert(nums.end(),front.begin(),front.end());nums.insert(nums.end(),behind.begin(),behind.end());}};intmain(){vectorvectorintnums;vectorintks;nums.push_back({1,2,3,4,5,6,7});nums.push_back({-1,-100,3,99});ks.push_back(3);ks.push_back(2);Rotate rotate;for(vectorvectorint::iterator iternums.begin();iter!nums.end();iter){rotate.rotate(*iter,ks[iter-nums.begin()]);std::cout转轮数组为:;std::copy((*iter).begin(),(*iter).end(),std::ostream_iteratorint(std::cout, ));std::coutstd::endl;}}