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

局域网多网站建设网络市场调研

局域网多网站建设,网络市场调研,网站关键词突然搜不到,最好免费观看高清视频韩国题目详细思路来自于:代码随想录 (programmercarl.com) 栈和队列都是大家不陌生的数据结构,我们之前的栈和队列一般是用数组或链表来实现的 , 这里我们给出实现方式,用于帮助更好的理解. 1.用链表实现栈 /* 基于链表实现的栈 */ class LinkedListStack { private ListNode sta… 题目详细思路来自于:代码随想录 (programmercarl.com) 栈和队列都是大家不陌生的数据结构,我们之前的栈和队列一般是用数组或链表来实现的 , 这里我们给出实现方式,用于帮助更好的理解. 1.用链表实现栈  /* 基于链表实现的栈 */ class LinkedListStack { private ListNode stackPeek; // 将头节点作为栈顶private int stkSize 0; // 栈的长度 public LinkedListStack() {stackPeek null; } /* 获取栈的长度 */ public int size() {return stkSize; } /* 判断栈是否为空 */ public boolean isEmpty() {return size() 0; } /* 入栈 */ public void push(int num) {ListNode node new ListNode(num);node.next stackPeek;stackPeek node;stkSize; } /* 出栈 */ public int pop() {int num peek();stackPeek stackPeek.next;stkSize--;return num; } /* 访问栈顶元素 */ public int peek() {if (size() 0)throw new IndexOutOfBoundsException();return stackPeek.val; } /* 将 List 转化为 Array 并返回 */ public int[] toArray() {ListNode node stackPeek;int[] res new int[size()];for (int i res.length - 1; i 0; i--) {res[i] node.val;node node.next;}return res;} } 2.用数组实现栈 class ArrayStack {private ArrayListInteger stack;public ArrayStack() { // 初始化列表动态数组stack new ArrayList(); } /* 获取栈的长度 */ public int size() {return stack.size(); } /* 判断栈是否为空 */ public boolean isEmpty() {return size() 0; } /* 入栈 */ public void push(int num) {stack.add(num); } /* 出栈 */ public int pop() {if (isEmpty())throw new IndexOutOfBoundsException();return stack.remove(size() - 1); } /* 访问栈顶元素 */ public int peek() {if (isEmpty())throw new IndexOutOfBoundsException();return stack.get(size() - 1); } /* 将 List 转化为 Array 并返回 */ public Object[] toArray() {return stack.toArray();} } 3.两种实现的优缺点 3.1 用数组实现栈的优缺点 在基于数组的实现中入栈和出栈操作都是在预先分配好的连续内存中进行具有很好的缓存本地性因此效率较高。然而如果入栈时超出数组容量会触发扩容机制导致该次入栈操作的时间复杂度变为 (). 3.2 用链表实现栈的优缺点 在链表实现中链表的扩容非常灵活不存在上述数组扩容时效率降低的问题。但是入栈操作需要初始化节点对象并修改指针因此效率相对较低。不过如果入栈元素本身就是节点对象那么可以省去初始化步骤从而提高效率。 4. 用链表实现队列 class LinkedListQueue {private ListNode front, rear; // 头节点 front 尾节点 rearprivate int queSize 0; public LinkedListQueue() {front null;rear null; } /* 获取队列的长度 */ public int size() {return queSize; } /* 判断队列是否为空 */ public boolean isEmpty() {return size() 0; } /* 入队 */ public void push(int num) { // 尾节点后添加 numListNode node new ListNode(num); // 如果队列为空则令头、尾节点都指向该节点if (front null) {front node;rear node; // 如果队列不为空则将该节点添加到尾节点后} else {rear.next node;rear node;}queSize; } /* 出队 */ public int pop() {int num peek(); // 删除头节点front front.next;queSize--;return num; } /* 访问队首元素 */ public int peek() {if (size() 0)throw new IndexOutOfBoundsException();return front.val; } /* 将链表转化为 Array 并返回 */ public int[] toArray() {ListNode node front;int[] res new int[size()];for (int i 0; i res.length; i) {res[i] node.val;node node.next;}return res;} } 5.用数组实现队列 你可能会发现一个问题在不断进行入队和出队的过程中 front 和 rear 都在向右移动 当它们到达数组尾部时就无法继续移动了。为解决此问题我们可以将数组视为首尾相接的“环形数组”。对于环形数组我们需要让 front 或 rear 在越过数组尾部时直接回到数组头部继续遍历。这种周期性规律可以通过“取余操作”来实现 /* 基于环形数组实现的队列 */ class ArrayQueue {private int[] nums; // 用于存储队列元素的数组private int front; // 队首指针指向队首元素private int queSize; // 队列长度 public ArrayQueue(int capacity) {nums new int[capacity];front queSize 0; } /* 获取队列的容量 */ public int capacity() {return nums.length; } /* 获取队列的长度 */ public int size() {return queSize; } /* 判断队列是否为空 */ public boolean isEmpty() {return queSize 0; } /* 入队 */ public void push(int num) {if (queSize capacity()) {System.out.println( 队列已满);return; } // 计算尾指针指向队尾索引 1 // 通过取余操作实现 rear 越过数组尾部后回到头部int rear (front queSize) % capacity(); // 将 num 添加至队尾nums[rear] num;queSize; } /* 出队 */ public int pop() {int num peek(); // 队首指针向后移动一位若越过尾部则返回到数组头部front (front 1) % capacity();queSize--;return num; } /* 访问队首元素 */ public int peek() {if (isEmpty())throw new IndexOutOfBoundsException();return nums[front]; } /* 返回数组 */ public int[] toArray() { // 仅转换有效长度范围内的列表元素int[] res new int[queSize];for (int i 0, j front; i queSize; i, j) {res[i] nums[j % capacity()];}return res;} } LeetCode T232 用栈实现队列 题目链接: 232. 用栈实现队列 - 力扣LeetCode  题目思路: 我们这里就要用两个栈来实现队列,一个是stackOut,一个是stackIn,in栈负责将要入队的添加进来,但是这时候我们发现出栈的话会和队列的出队顺序相反,所以我们再入栈一次,这样出栈的顺序就颠倒过来啦,也完美的实现队列的基本功能. 注:一定要将In栈的全部元素一起push进Out栈,否则顺序可能会发生变化,这样就影响了正常的出栈功能. 题目代码: class MyQueue {StackInteger stackIn;StackInteger stackOut;public MyQueue() {stackIn new Stack();stackOut new Stack();}public void push(int x) {stackIn.push(x);}public int pop() {downStackIn();return stackOut.pop();}public int peek() {downStackIn();return stackOut.peek();}public boolean empty() {downStackIn();return stackOut.isEmpty();}public void downStackIn(){while(!stackOut.isEmpty()){return;}while(!stackIn.isEmpty()){stackOut.push(stackIn.pop());}} }/*** Your MyQueue object will be instantiated and called as such:* MyQueue obj new MyQueue();* obj.push(x);* int param_2 obj.pop();* int param_3 obj.peek();* boolean param_4 obj.empty();*/ LeetCode T225 用队列实现栈 题目链接:225. 用队列实现栈 - 力扣LeetCode 题目思路: 这里我们同样可以用和上一题同样的思路实现,但是为了更有挑战性,我们决定用一个队列来实现栈,假设我们入队元素是123,此时我们需要的出队元素应该是3,那么我们该如何操作呢,其实,我们只需要让前两个元素重新入队,这样第一个出队的元素就是3了,其实就是前size()-1个元素重新入队,就实现了出栈的操作 这里我使用的是deque,这个类可以实现两天的操作,就是比queue多了两头操作的一些方法. 题目代码: class MyStack {DequeInteger que1;public MyStack() {que1 new ArrayDeque();}public void push(int x) {que1.addLast(x);}public int pop() {int tmp que1.size()-1;while(tmp0){que1.addLast(que1.peekFirst());que1.pollFirst();tmp--;}return que1.pollFirst();}public int top() {return que1.peekLast();}public boolean empty() {return que1.isEmpty();} }/*** Your MyStack object will be instantiated and called as such:* MyStack obj new MyStack();* obj.push(x);* int param_2 obj.pop();* int param_3 obj.top();* boolean param_4 obj.empty();*/
http://www.zqtcl.cn/news/351544/

相关文章:

  • 本地宁波网站建设电子商务网站建设工具都有那些
  • 网站建设的基本目标免费 wordpress企业主题
  • 专业网站建设微信商城开发规划馆网站建设
  • 网站建设公司沈阳西安建设工程信息交易中心官网
  • 青海住房和城乡建设部网站wordpress php7.3
  • 网站后台重置密码怎么做360网站怎么做网址链接
  • 广告网站建设及推广网站建设怎样推广
  • 做网站使网页不居中滁州注册公司流程和费用
  • 做网站广告经营者个性定制网站
  • 网站开发 北京外包公司软件公司网站建设
  • 网络认证入口seo免费诊断
  • 十大知名博客网站郑州企业建站公司定制
  • 视频网站如何做引流网站首页 关键词
  • 建设机械网站精英大港做网站
  • 潜山网站建设公司哪里有wordpress相册投票插件
  • 网站建设制作过程网站添加支付功能
  • 网站制作字体即墨公司做网站
  • vue 做pc网站可以吗哪个网站买域名便宜
  • 做销售网站那家好金华住房与城乡建设部网站
  • apple私人免费网站怎么下载无锡网站建设技术
  • 移动应用网站开发阶段作业信息型网站有哪些
  • 监控直播网站开发网站建设与管理总结
  • 青岛城阳网站设计免费网站成品
  • 做服装外贸的网站ghost wordpress
  • 建设银行的网站为什么这么卡网页设计用啥软件
  • 电子商务 网站开发南阳网网站建设
  • 中小型企业网络拓扑图及配置株洲seo网站推广
  • 中国镇江网站如何搭建自己的网址
  • wordpress 自动广告seo搜索引擎优化原理
  • 区块链网站用vue.js做怎么样长春站建筑