เราได้รับอาร์เรย์ และเราได้รับมอบหมายให้ลบเลขศูนย์นำหน้าออกจากอาร์เรย์ที่กำหนด จากนั้นพิมพ์อาร์เรย์
Input : arr[] = {0, 0, 0, 1, 2, 3}
Output : 1 2 3
Input : arr[] = {0, 0, 0, 1, 0, 2, 3}
Output : 1 0 2 3 เราสามารถสร้างอาร์เรย์ใหม่ที่ไม่มีศูนย์นำหน้าของอาร์เรย์ก่อนหน้าในปัญหาที่กำหนดได้
แนวทางในการหาทางออก
ในแนวทางนี้ เราจะผ่านอาร์เรย์และแทรกตัวเลขทั้งหมดแต่ไม่มีศูนย์นำหน้า
ตัวอย่าง
#include <iostream>
using namespace std;
int main() {
int arr[] = {0, 0, 0, 1, 2, 0, 4};
int n = sizeof(arr) / sizeof(int); // size of given array.
int last = -1;
for(int i = 0; i < n; i++) { // finding the first non zero element
if(arr[i] != 0) {
last = i;
break;
}
}
if(last == -1)
cout << "Empty\n";
else {
int b[n - last]; // the new array.
for(int i = last; i < n; i++) // inserting the elements in the new array
b[i-last] = arr[i];
for(int i = 0; i < n-last; i++) // printing the array
cout << b[i] << " ";
}
} ผลลัพธ์
1 2 0 4
คำอธิบายของโค้ดด้านบน
ในโปรแกรมที่กำหนด ขั้นแรกเราจะสำรวจผ่านอาร์เรย์ arr และค้นหาดัชนีขององค์ประกอบที่ไม่เป็นศูนย์แรก ซึ่งเราเก็บไว้ในตัวแปรที่เรียกว่า last now ถ้าสุดท้ายเป็น -1 หลังการข้ามผ่าน นั่นหมายความว่าอาร์เรย์ทั้งหมดของเราประกอบด้วย ศูนย์ ดังนั้นเราจึงพิมพ์ "ว่างเปล่า" ของเรา
ตอนนี้ เมื่อเราได้ดัชนีขององค์ประกอบที่ไม่ใช่ศูนย์แรกแล้ว เราก็สามารถกำหนดขนาดของอาร์เรย์ใหม่ได้ นั่นคือ (n - สุดท้าย) และตอนนี้เราเรียกใช้ a for ลูปจากอันสุดท้ายจนถึงน้อยกว่า n เราแทรกองค์ประกอบเหล่านี้ในอาร์เรย์ใหม่และพิมพ์อาร์เรย์ใหม่
บทสรุป
ในบทความนี้ เราจะแก้ปัญหาในการลบเลขศูนย์นำหน้าออกจากอาร์เรย์ นอกจากนี้เรายังได้เรียนรู้โปรแกรม C++ สำหรับปัญหานี้และแนวทางทั้งหมดที่เราแก้ไข เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, java, python และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์