当前位置: 首页 > news >正文

while-经典面试题实战

1、while 实现数组扁平化

function flatten(arr) {
  const result = [];
  const stack = [...arr];
  
  while (stack.length) {
    const next = stack.pop();
    if (Array.isArray(next)) {
      stack.push(...next);
    } else {
      result.unshift(next);
    }
  }
  return result;
}

console.log(flatten([1, [2, [3]]])); // [1, 2, 3]

2、链表遍历(数据结构操作)

class Node {
  constructor(val) {
    this.val = val;
    this.next = null;
  }
}

let head = new Node(1);
head.next = new Node(2);
head.next.next = new Node(3);

let current = head;
while (current) {
  console.log(current.val); // 1 → 2 → 3
  current = current.next;
}

总结:while 循环在以下场景更具优势:

1、需要根据动态条件持续操作(如游戏循环、网络请求重试)
2、处理非线性的数据遍历(如树/图结构)
3、需要手动控制迭代进度的复杂逻辑
合理使用 while 能让代码更灵活,但要始终注意循环安全和性能影响。

http://www.dtcms.com/a/55172.html

相关文章:

  • c++ 类成员指针及其与`std::bind`交互使用的简单说明
  • 使用 Docker 部署 BaGet 并推送 NuGet 包
  • 前端小食堂 | Day10 - 前端路由の时空裂隙
  • Java是值传递还是引用传递
  • 特征选择之特征重要性排序(基于树模型)
  • 如何用Kimi生成PPT?秒出PPT更高效!
  • 学习threejs,Animation、Core、CustomBlendingEquation、Renderer常量汇总
  • Java 依赖冲突终极解法:Maven 依赖树分析与强制版本锁定
  • 最左侧冗余覆盖子串
  • 【接口封装】——18、添加目录项列表响应
  • AMD(xilinx) FPGA书籍推荐
  • RabittMQ保证消息不丢失的几种手段
  • Spring Boot 项目中慢SQL优化方案
  • 基于微信小程序的超市购物系统+论文源码调试讲解
  • 【文心索引】搜索引擎测试报告
  • 【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
  • Trae IDE新建C#工程
  • 双目立体视觉(6.1)测距
  • 2025年科技趋势深度解析:从“人工智能+”到量子跃迁的技术革命
  • 练习题:72
  • 时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
  • 基于NIST后量子算法的混合加密系统
  • 动态规划背包刷题
  • 量化交易全面入门指南(2025最新版)
  • 智能疫苗查漏补种智能体创建逻辑和步骤
  • Nodemailer使用教程:在Node.js中发送电子邮件
  • HiveServer2与Spark ThriftServer详细介绍对比
  • 深度学习模型Transformer核心组件—自注意力机制
  • python-leetcode-解决智力问题
  • MyBatis-Plus 与 Redis