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

054、牛客网算法面试必刷TOP101--堆/栈/队列(230509)

文章目录

  • 前言
  • 堆/栈/队列
    • 1、BM42 用两个栈实现队列
    • 2、BM43 包含min函数的栈
    • 3、BM44 有效括号序列
    • 4、BM45 滑动窗口的最大值
    • 5、BM46 最小的K个数
    • ==6、BM47 寻找第K大==
    • ==7、BM48 数据流中的中位数==
    • ==8、BM49 表达式求值==
  • 其它
    • 1、se基础


前言

提示:这里可以添加本文要记录的大概内容:

本文章记录自己刷牛客网算法面试必刷TOP101——堆/栈/队列,部分类容,参见牛客网地址:面试必刷TOP101——堆/栈/队列,总共有8道题目。


提示:以下是本篇文章正文内容

堆/栈/队列

1、BM42 用两个栈实现队列

题目:

  • 用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。
  • 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
  • 数据范围: n≤1000;要求:存储n个元素的空间复杂度为 :O(n) ,插入与删除的时间复杂度都是 :O(1);

代码:

public class BM42 {Stack<Integer> stack1 = new Stack<Integer>();Stack<Integer> stack2 = new Stack<Integer>();public void push(int node) {stack1.push(node);}public int pop() {if (stack2.isEmpty()) {while (!stack1.isEmpty()){stack2.push(stack1.pop());}}return stack2.pop();}
}

2、BM43 包含min函数的栈

题目:

  • 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。
  • 此栈包含的方法有:
    • push(value):将value压入栈中;
    • pop():弹出栈顶元素;
    • top():获取栈顶元素;
    • min():获取栈中最小元素;
  • 数据范围:操作数量满足 :0≤n≤300 ,输入的元素满足 :∣val∣≤10000 ;
  • 进阶:栈的各个操作的时间复杂度是 :O(1) ,空间复杂度是 :O(n) ;

代码:

public class BM43 {// 利用两个栈Stack<Integer> stack1 = new Stack<>();Stack<Integer> stack2 = new Stack<>();public void push(int node) {stack1.push(node);if (stack2.isEmpty() || stack2.peek() >= node) {stack2.push(node);}}public void pop() {int pop = stack1.pop();if (stack2.peek() == pop) {stack2.pop();}}public int top() {return stack1.peek();}public int min() {return stack2.peek();}
}

3、BM44 有效括号序列

题目:

  • 给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。
  • 数据范围:字符串长度 :0≤n≤10000;
  • 要求:空间复杂度 :O(n),时间复杂度 :O(n)。

代码:

public class BM44 {public boolean isValid(String s) {// write code herechar[] arr = s.toCharArray();// 栈保存的是右括号Stack<Character> stack = new Stack<>();for (int i = 0; i < arr.length; i++) {char c = arr[i];if (c == '{') {stack.push('}');} else if (c == '(') {stack.push(')');} else if (c == '[') {stack.push(']');} else {if (stack.isEmpty()) {return false;}// 来到了右括号,就需要判断栈顶的括号和遇到的右括号是否一致Character pop = stack.pop();if (!pop.equals(c)) {return false;}}}return stack.isEmpty();}
}

4、BM45 滑动窗口的最大值

题目:

  • 给定一个长度为 n 的数组 num 和滑动窗口的大小 size ,找出所有滑动窗口里数值的最大值。
  • 窗口大于数组长度或窗口长度为0的时候,返回空。
  • 数据范围: 1≤n≤10000,0≤size≤10000,数组中每个元素的值满足 :∣val∣≤10000;
  • 要求:空间复杂度 :O(n),时间复杂度 :O(n)

代码:

public class BM45 {public static void main(String[] args) {BM45 demo = new BM45();int[] arr = {2, 3, 4, 2, 6, 2, 5, 1};demo.maxInWindows(arr, 3);}public ArrayList<Integer> maxInWindows(int[] num, int size) {int length = num.length;// 结果集ArrayList<Integer> ans = new ArrayList<>(length - size + 1);// base caseif (size <= 0 || size > length) {return ans;}// 利用一个双端队列,维护滑动窗口// 双端队列中存储的是数组元素的下标(单调队列是从大到小)Deque<Integer> deque = new LinkedList<>();// 初始化for (int i = 0; i < size; i++) {push(deque, num, i);}// 第一个元素结果ans.add(num[deque.peekFirst()]);// 开始队列弹出for (int i = size; i < num.length; i++) {// 判断是否需要将第一个元素弹出if (deque.peekFirst() == i - size) {deque.pollFirst();}push(deque, num, i);ans.add(num[deque.peekFirst()]);}return ans;}// 加入元素下标到队列中public void push(Deque<Integer> deque, int[] num, int index) {if (deque.isEmpty()) {deque.addLast(index);} else {while (!deque.isEmpty() && num[deque.peekLast()] <= num[index]) {deque.pollLast();}deque.addLast(index);}}}

5、BM46 最小的K个数

题目:

  • 给定一个长度为 n 的可能有重复值的数组,找出其中不去重的最小的 k 个数。
  • 数据范围:0≤k,n≤10000,数组中每个数的大小:0≤val≤1000。
  • 要求:空间复杂度 :O(n) ,时间复杂度 :O(nlogk)。

代码:

public class BM46 {public ArrayList<Integer> GetLeastNumbers_Solution(int[] input, int k) {// 采用优先级队列PriorityQueue<Integer> queue = new PriorityQueue<Integer>((a, b) -> {return b - a;});// 结果集ArrayList<Integer> ans = new ArrayList<>();if (k <= 0 || k > input.length) {return ans;}for (int i = 0; i < k; i++) {queue.offer(input[i]);}for (int i = k; i < input.length; i++) {queue.offer(input[i]);queue.poll();}for (int i = 0; i < k; i++) {ans.add(queue.poll());}return ans;}
}

6、BM47 寻找第K大

题目:

  • 有一个整数数组,请你根据快速排序的思路,找出数组中第 k 大的数。
  • 给定一个整数数组 a ,同时给定它的大小n和要找的 k ,请返回第 k 大的数(包括重复的元素,不用去重),保证答案存在。
  • 要求:时间复杂度 :O(nlogn),空间复杂度 :O(1)。

思路:

  • 根据时间复杂度,可以联想到快速排序,每次进行partition都可以知道,排序后基准值在数组中的下标位置;

代码:

public class BM47 {public int findKth(int[] a, int n, int K) {// write code herereturn findK(a, 0, n - 1, K);}// 找到第K个大的元素public int findK(int[] arr, int left, int right, int K) {if (left <= right) {int index = partition(arr, left, right);// conditionif (index == K - 1) {return arr[index];} else if (index < K - 1) {return findK(arr, index + 1, right, K);} else {return findK(arr, left, index - 1, K);}}return -1;}// 采用快速排序,每次partition都可以将数组中的元素分组,返回排序后基准值在数组中的下标// 寻找第K大,就将数组按照从大到小的顺序排序public int partition(int[] arr, int left, int right) {// 基准值以数组中最左元素int pivot = arr[left];// 开始分组while (left < right) {while (left < right && arr[right] <= pivot) {right--;}// 交换arr[left] = arr[right];while (left < right && arr[left] >= pivot) {left++;}arr[right] = arr[left];}// 此时是left==right的情况arr[left] = pivot;return left;}}

7、BM48 数据流中的中位数

题目:

  • 如何得到一个数据流中的中位数?
  • 如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。
  • 如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
  • 我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
  • 进阶: 空间复杂度 :O(n) , 时间复杂度 :O(nlogn) 。

思路:

  • 维护两个数据结构,一个是大根堆一个是小根堆;

代码:

public class BM48 {// 维护一个优先级队列// 小的优先级队列PriorityQueue<Integer> small = new PriorityQueue<>();// 大的优先级队列PriorityQueue<Integer> big = new PriorityQueue<>((a, b) -> {return b - a;});// 定义一个变量记录数据流中的元素个数int size = 0;public void Insert(Integer num) {if (size % 2 == 0) {// 如果数据流中的元素个数是偶数的话// 将元素加入到大根堆中,并将大根堆的最后一个元素放入小根堆big.add(num);small.offer(big.poll());} else {// 如果数据流中的元素个数是奇数的话small.offer(num);big.offer(small.poll());}size++;}public Double GetMedian() {if (size % 2 == 0) {// 偶数return (double) (small.peek() + big.peek()) / 2;} else {return (double) small.peek();}}
}

8、BM49 表达式求值

题目:

  • 请写一个整数计算器,支持加减乘三种运算和括号。
  • 数据范围:0≤∣s∣≤100,保证计算结果始终在整型范围内。
  • 要求:空间复杂度: O(n),时间复杂度 :O(n)。

思路:

  • 关于表达式求值的问题,采用两个栈结构,一个为数栈(专门存放数字),一个为符号栈(专门存放表达式运算符);
  • 空格 : 跳过。
  • ( : 直接加入 ops 中,等待与之匹配的 )。
  • ) : 使用现有的 nums 和 ops 进行计算,直到遇到左边最近的一个左括号为止,计算结果放到 nums
    数字 : 从当前位置开始继续往后取,将整一个连续数字整体取出,加入 nums。
  • “+ - *” : 需要将操作放入 ops 中。在放入之前先把栈内可以算的都算掉(只有「栈内运算符」比「当前运算符」优先级高/同等,才进行运算),使用现有的 nums 和 ops 进行计算,直到没有操作或者遇到左括号,计算结果放到 nums。

代码:

public class BM49 {public int solve(String s) {// write code here// 消除字符串中的全部空格s = s.replaceAll(" ", "");char[] charArray = s.toCharArray();// 栈结构Stack<Integer> nums = new Stack<>();// 数栈Stack<Character> operations = new Stack<>();// 操作符栈// 首先给数栈中添加一个元素nums.push(0);// 开始遍历for (int i = 0; i < charArray.length; i++) {// 当前的char字符char c = charArray[i];// 判断条件if ('(' == c) {// 如果是这种括号,就直接加入到符号栈中operations.push(c);} else if (')' == c) {// 如果是 这种括号,就需要进行计算while (!operations.isEmpty()) {if ('(' == operations.peek()) {operations.pop();break;} else {calculate(nums, operations);}}} else {// 要么是数字要么是“+ - *”的符号了if (isNumber(c)) {// 如果是数字,找到数字加入到集合中int left = i;int num = 0;while (left < charArray.length && isNumber(charArray[left])) {num = num * 10 + (charArray[left] - '0');left++;}i = left - 1;nums.push(num);} else {// 如果是符号if (i > 0 && ('(' == charArray[i - 1] || '+' == charArray[i - 1] || '-' == charArray[i - 1])) {nums.push(0);}// 只有当,当前的运算符优先级大于或等于符号栈的栈顶符号优先级时,才会运算while (!operations.isEmpty() && operations.peek() != '(') {// 运算char peek = operations.peek();if (map.get(peek) >= map.get(c)) {calculate(nums, operations);} else {break;}}operations.push(c);}}}// 最后计算while (!operations.isEmpty()&&operations.peek() !='('){calculate(nums,operations);}return nums.peek();}// 判断是否为数字public boolean isNumber(char c) {return Character.isDigit(c);}// 创建一个hashMap 存储操作符的优先级Map<Character, Integer> map = new HashMap() {{put('+', 1);put('-', 1);put('*', 2);}};// 操作数栈和符号栈,进行运算public void calculate(Stack<Integer> nums, Stack<Character> operations) {if (nums.size() < 2 || operations.isEmpty()) {return;}int b = nums.pop();int a = nums.pop();char operation = operations.pop();int ans;if ('-' == operation) {ans = a - b;} else if ('+' == operation) {ans = a + b;} else {ans = a * b;}nums.push(ans);}
}

其它

1、se基础

关于try-catch-finally的知识点:

一旦在finally块中使用了return或throw语句,将会导致try块,catch块中的return,throw语句失效 。

关于类方法的知识点:

类的方法,所谓类的方法就是指类中用static 修饰的方法(非static 为实例方法),比如main 方法,那么可以以main方法为例,可直接调用其他类方法,必须通过实例调用实例方法,this 关键字不是这么用的 。


相关文章:

054、牛客网算法面试必刷TOP101--堆/栈/队列(230509)

文章目录 前言堆/栈/队列1、BM42 用两个栈实现队列2、BM43 包含min函数的栈3、BM44 有效括号序列4、BM45 滑动窗口的最大值5、BM46 最小的K个数6、BM47 寻找第K大7、BM48 数据流中的中位数8、BM49 表达式求值 其它1、se基础 前言 提示&#xff1a;这里可以添加本文要记录的大概…...

怎么让chatGTP写论文-chatGTP写论文工具

chatGTP如何写论文 ChatGPT是一个使用深度学习技术训练的自然语言处理模型&#xff0c;可以用于生成自然语言文本&#xff0c;例如对话、摘要、文章等。作为一个人工智能技术&#xff0c;ChatGPT可以帮助你处理一些文字内容&#xff0c;但并不能代替人类的创造性思考和判断。以…...

springboot 断点上传、续传、秒传实现

文章目录 前言一、实现思路二、数据库表对象二、业务入参对象三、本地上传实现三、minio上传实现总结 前言 springboot 断点上传、续传、秒传实现。 保存方式提供本地上传&#xff08;单机&#xff09;和minio上传&#xff08;可集群&#xff09; 本文主要是后端实现方案&…...

2023河南省赛vp题解

目录 A题&#xff1a; B题 C题 D题 E题 F题 G题 H题 I题 J题 K题 L题 A题&#xff1a; 1.思路&#xff1a;考虑暴力枚举和双hash&#xff0c;可以在O(n)做完。 2.代码实现&#xff1a; #include<bits/stdc.h> #define sz(x) (int) x.size() #define rep(i,z,…...

港科夜闻|香港科大与香港资管通有限公司签署校企合作备忘录,成立校企合作基金促科研成果落地...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大与香港资管通有限公司签署校企合作备忘录&#xff0c;成立校企合作基金促科研成果落地。“港科资管通领航基金”28日在香港成立&#xff0c;将致力于推动高校科研成果转化&#xff0c;助力香港国际创科中心建设。…...

Neo4j 笔记

启动命令 neo4j console Cypher句法由四个不同的部分组成&#xff0c; 每一部分都有一个特殊的规则&#xff1a; start——查找图形中的起始节点。 match——匹配图形模式&#xff0c; 可以定位感兴趣数据的子图形。 where——基于某些标准过滤数据。 return——返回感兴趣的…...

数据库基础应用——概念模型

1、实体(Entity) 客观存在并可相互区别的事物称为实体。实体可以是人、物、对象、概念、事物本身、事物之间的联系。&#xff08;例如一名员工、一个部门、一辆汽车等等。&#xff09; 2、属性(Attributre) 实体所具有的每个特性称为属性。&#xff08;例如&#xff1a;员工由员…...

【学姐面试宝典】前端基础篇Ⅴ——JS深浅拷贝、箭头函数、事件监听等

前言 博主主页&#x1f449;&#x1f3fb;蜡笔雏田学代码 专栏链接&#x1f449;&#x1f3fb;【前端面试专栏】 今天继续学习前端面试题相关的知识&#xff01; 感兴趣的小伙伴一起来看看吧~&#x1f91e; 文章目录 什么是事件监听事件委托以及冒泡原理介绍一下 promise&#…...

最新研究,GPT-4暴露了缺点!无法完全理解语言歧义!

夕小瑶科技说 原创作者 |智商掉了一地、Python自然语言推理&#xff08;Natural Language Inference&#xff0c;NLI&#xff09;是自然语言处理中一项重要任务&#xff0c;其目标是根据给定的前提和假设&#xff0c;来判断假设是否可以从前提中推断出来。然而&#xff0c;由于…...

商业数据挖掘-第一章-数据探索式分析-1

数据探索最基本的步骤之一是获取对数据的基本描述,通过获取对数据的基本描述从而获得对数据的基本感觉。下面的一些方法用于帮助我们认识数据。 我们使用波士顿房价预测的数据集进行实验 DataFrame.describe():查看数据的基本分布,具体是对每列数据进行统计,统计值包含频…...

MybatisPlus是否防止SQL注入?

问 如果我希望使用mybatisplus同时也进行防SQL注入操作&#xff0c;应该怎么处理&#xff1f; 答 如果你想在使用 MyBatis-Plus 进行数据库操作的同时也进行防 SQL 注入处理&#xff0c;可以采用以下两种方式&#xff1a; 使用 #{} 占位符&#xff1a;在 QueryWrapper 或 Up…...

5月第1周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年5月1日-5月7日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站…...

数据的插入删除和更新

在之前我们就已经学过了数据的插入&#xff0c;在这里再进行一点内容的补充&#xff1a; 在insert语句中&#xff0c;value子句中参数的顺序与表中各个列的顺序是一一对应的。 mysql> insert into first_table(second_column, first_column) values(aaa, 1); Query OK, 1 r…...

C# byte[] 与 int 类型互转

本文讲述在C#中,怎样使用 BitConverter 类将字节数组转换为 int 然后又转换回字节数组的过程。 为什么需要这样呢&#xff1f;这是因为&#xff0c;比如说,在从网络读取字节之后&#xff0c;可能需要将字节转换为内置数据类型。 除了示例中的 ToInt32(Byte[], Int32) 方法之外…...

MySQL---多表联合查询(上)(多表关系、外键约束、学生成绩多表关系、交叉连接查询)

1. 多表关系 MySQL多表之间的关系可以概括为&#xff1a; 一对一&#xff1a; 比如&#xff1a;一个学生只有一张身份证&#xff1b;一张身份证只能对应一学生。 实现原则&#xff1a;在任一表中添加唯一外键&#xff0c;指向另一方主键&#xff0c;确保一对一关系。 一般一对…...

【iOS】—— RunLoop线程常驻和线程保活

文章目录 没有线程常驻会怎么样&#xff1f; 线程常驻线程保活 没有线程常驻会怎么样&#xff1f; 我们一般写一个子线程&#xff0c;子线程执行完分配的任务后就会自动销毁&#xff0c;比如下面这个情况&#xff1a; 我们先重写一下NSThread里面的dealloc方法&#xff0c;打印…...

Springcloud--docker快速入门

认识docker docker相关操作 1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署…...

基于AT89C51单片机的电子计数器设计与仿真

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/87770826 源码获取 主要内容&#xff1a; 设计一个电子计时器&#xff0c;数码管初始显示值为“00”&#xff0c;每隔1s电子秒表加1&#xff1b;秒计数到60时清0&a…...

IT程序员如何面对35岁大龄问题?我从公司老板的角度聊聊

很多从事IT行业的人一想到35岁就很焦虑&#xff0c;担心自己被公司裁员后找不到工作。同时还有家庭责任加身&#xff0c;担心中年失业后晚年生活。作为一位公司老板&#xff0c;我想从我的角度谈一下这个问题。 首先&#xff0c;我本质上不介意我的员工年龄&#xff0c;无论是…...

【计算机专业漫谈】【计算机系统基础学习笔记】W2-2-2 模运算系统和补码表示

利用空档期时间学习一下计算机系统基础&#xff0c;以前对这些知识只停留在应试层面&#xff0c;今天终于能详细理解一下了。参考课程为南京大学袁春风老师的计算机系统基础MOOC&#xff0c;参考书籍也是袁老师的教材&#xff0c;这是我的听课自查资料整理后的笔记 补码表示法…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

Mobile ALOHA全身模仿学习

一、题目 Mobile ALOHA&#xff1a;通过低成本全身远程操作学习双手移动操作 传统模仿学习&#xff08;Imitation Learning&#xff09;缺点&#xff1a;聚焦与桌面操作&#xff0c;缺乏通用任务所需的移动性和灵活性 本论文优点&#xff1a;&#xff08;1&#xff09;在ALOHA…...