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

วิธีแก้ปัญหาอัลกอริทึมอาร์เรย์ย้อนกลับ JavaScript


เรามีข้อกำหนดที่เราต้องเขียนฟังก์ชันเพื่อย้อนกลับอาร์เรย์ แต่ไม่มีการเปลี่ยนแปลงดัชนีของอักขระพิเศษที่แสดงในอาร์เรย์ ดังตัวอย่างด้านล่าง -

ถ้า '#' เป็นอักขระพิเศษนั้น อาร์เรย์ต่อไปนี้

[18,-4,'#',0,8,'#',5]

ควรส่งคืน -

[5, 8, "#", 0, -4, "#", 18],

ที่นี่ ตัวเลขจะถูกกลับรายการ ยกเว้น '#' ซึ่งคงดัชนีไว้

มาเขียนโค้ดสำหรับสิ่งนี้กันเถอะ

เราจะใช้วิธีการแบบสองตัวชี้ที่นี่ จุดเริ่มต้นและจุดสิ้นสุดที่ชี้ไปทางซ้ายสุดสุดและขวาสุดของอาร์เรย์ตามลำดับ

หากพบอักขระพิเศษที่ดัชนีใด ๆ เราข้ามดัชนีนั้นและทำซ้ำต่อไป และเมื่อเราพบคู่ดัชนีที่ไม่มีอักขระพิเศษ เราจะสลับค่าของดัชนีนั้นและดำเนินการต่อไปในขณะที่ตัวชี้เริ่มต้นน้อยกว่าตัวชี้ที่ถูกต้อง .

ตัวอย่าง

const arr = [18,-4,'#',0,8,'#',5];
const reverseArray = (arr, special) => {
   let start = 0, end = arr.length - 1, temp;
   while(start < end){
      if(arr[start] === special){
         start++;
         continue;
      };
      if(arr[end] === special){
         end--;
         continue;
      };
      temp = arr[start];
      arr[start] = arr[end];
      arr[end] = temp;
      start++;
      end--;
   };
};
reverseArray(arr, '#');
console.log(arr);

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็น -

[
   5, 8, '#', 0, -4, '#', 18
]