Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

หมุนรายการไปทางซ้ายโดย K ใน C++


สมมติว่าเรามีรายการตัวเลข เราต้องกำหนดวิธีการที่สามารถหมุนรายการตัวเลขไปทางซ้ายด้วย k องค์ประกอบ

ดังนั้น หากอินพุตเป็น [5,4,7,8,5,6,8,7,9,2] k =2 ผลลัพธ์จะเป็น [8,5, 6,8,7,9,2,5,4,7]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดอาร์เรย์ ret

  • n :=ขนาดของ nums

  • k :=k mod n

  • สำหรับการเริ่มต้น i :=k เมื่อฉัน

    • ใส่ nums[i] ต่อท้าย ret

  • สำหรับการเริ่มต้น i :=0 เมื่อฉัน

    • ใส่ nums[i] ต่อท้าย ret

  • รีเทิร์น

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
void print_vector(vector<auto> v) {
   cout << "[";
   for (int i = 0; i < v.size(); i++) {
      cout << v[i] << ", ";
   }
   cout << "]" << endl;
}
class Solution {
   public:
   vector<int> solve(vector<int>& nums, int k) {
      vector <int> ret;
      int n = nums.size();
      k %= n;
      for(int i = k; i < n; i++){
         ret.push_back(nums[i]);
      }
      for(int i = 0; i < k; i++){
         ret.push_back(nums[i]);
      }
      return ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {5,4,7,8,5,6,8,7,9,2};
   print_vector(ob.solve(v, 3));
}

อินพุต

{5,4,7,8,5,6,8,7,9,2}, 2

ผลลัพธ์

[8, 5, 6, 8, 7, 9, 2, 5, 4, 7, ]