เราได้รับอาร์เรย์ และเราได้รับมอบหมายให้ลบเลขศูนย์นำหน้าออกจากอาร์เรย์ที่กำหนด จากนั้นพิมพ์อาร์เรย์
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 และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทความนี้มีประโยชน์