栈和队列:

1、设计一个有getMin功能的栈

题目:

实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。

要求:

1、pop、push、getMin操作的时间复杂度都是O(1)
2、设计的栈类型可以输用现成的栈结构

package 设计一个有getMin功能的栈;import java.util.Stack;public class MyStack1 {private Stack<Integer> stackData;private Stack<Integer> stackMin;public MyStack1(){this.stackData = new Stack<Integer>();this.stackMin = new Stack<Integer>();}public void push(int newNum){if(this.stackMin.isEmpty()){this.stackMin.push(newNum);}else if(newNum <= this.getmin()){this.stackMin.push(newNum);}this.stackData.push(newNum);}public int pop(){if(this.stackData.isEmpty()){throw new RuntimeException("Your stack is Empty.");}int value = this.stackData.pop();if(value == this.getmin()){this.stackMin.pop();}return value;}public int getmin(){if(this.stackMin.isEmpty()){throw new RuntimeException("Your stack is empty.");}return this.stackMin.peek();}
}

由两个栈组成的队列

题目:

编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)

package 由两个栈组成的队列;import java.util.Stack;public class TwoStackQueue {public Stack<Integer> stackPush;public Stack<Integer> stackPop;public TwoStackQueue(){stackPush = new Stack<Integer>();stackPop = new Stack<Integer>();}public void add(int pushInt){stackPush.push(pushInt);}public int poll(){if(stackPop.empty() && stackPush.empty()){throw new RuntimeException("Queue is empty!");}else if(stackPop.empty()){while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.pop();}public int peek(){if(stackPop.empty() && stackPush.empty()){throw new RuntimeException("Queue is empty!");}else if(stackPop.empty()){while (!stackPush.empty()) {stackPop.push(stackPush.pop());}}return stackPop.peek();}
}

3、如何仅用递归函数和栈操作逆序一个栈

题目:

一个栈一次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1,将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构.

第二章

1、给定两个有序链表的头指针head1和head2,打印两个链表的公共部分。

package 打印两个有序链表的公共部分;public class Node {public int value;public Node next;public Node(int data){this.value = data;}public void printCommonPart(Node head1,Node head2){System.out.println("Common Part: ");while (head1 != null && head2 != null) {if(head1.value < head2.value){head1 = head1.next;}else if(head1.value > head2.value){head2 = head2.next;}else {System.out.println(head1.value + " ");head1 = head1.next;head2 = head2.next;}}System.out.println();}
}

[读书笔记]《程序员代码面试指南》相关推荐

  1. 《程序员代码面试指南第二版》Python实现(个人读书笔记)

    说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...

  2. 程序员代码面试指南第二版 4.猫狗队列

    welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...

  3. 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档

    前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...

  4. 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...

    题目 拼接所有字符串产生字典顺序最小的大写字符串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955158.html

  5. 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体

    准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...

  6. 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...

    题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...

  7. 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...

    题目 在其他数都出现k 次的数组中找到只出现一次的数 java 代码 package com.lizhouwei.chapter7;/*** @Description: 在其他数都出现k 次的数组中找 ...

  8. 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表

    样例 树的中序遍历:1 2 3 4 5 6 7 ,转换后双向链表的遍历:1 2 3 4 5 6 7 java代码 /*** @Description:搜索二叉树转换为双向链表* @Author: li ...

  9. 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...

    题目 在行列都排好序的矩阵中找数 java代码 package com.lizhouwei;/*** @Description: 在行列都排好序的矩阵中找数* @Author: lizhouwei* ...

最新文章

  1. UITableView性能优化与卡顿
  2. 胶囊路由_评论:胶囊之间的动态路由
  3. mysql 5.7.11 授权_mysql 5.7.11 安装配置教程
  4. 从零开始学习Docker
  5. Android 使用dagger2进行依赖注入(基础篇)
  6. bundle文件解压_通过sourcemap解压缩webpack 实战
  7. Magisk —— 安卓新一代的第三方拓展,systemless模式
  8. 图像直方图原理与Python实现
  9. 在CF卡上建立文件系统和安装引导加载程序
  10. 这届打工人,回家过年都这么难
  11. 计算机财务基础知识培训,财务部计算机基础知识培训讲议.ppt
  12. 【lidar】单目深度估计与伪雷达点云、可视化
  13. 电阻式触摸屏的基本结构和驱动原理
  14. Java简单端口扫描器
  15. oc实时渲染的图如何导出_如何使用C4D制作逼真的循环三维动画
  16. Comparative Molecular Analysis of Gastrointestinal Adenocarcinomas
  17. Android封装sdk页面为h5,Android/H5混合 SDK 集成文档
  18. STM32-USB学习系列(六):USB-HID键盘的实现以及键盘报文描述符的简介
  19. pulltorefresh+recycleview 实现的瀑布流(带下拉刷新,上拉加载更多)
  20. 【考研专业课答题纸】是什么样子?(内附下载链接)

热门文章

  1. zz 图像数据投影投影数据重建图像 radon
  2. 解决elementUI上传多张图片出现闪动的bug
  3. silverlight 无法启动调试 数据无效
  4. 揭开木马的神秘面纱 2
  5. 蒲公英 · JELLY技术周刊 Vol.29: 前端智能化在阿里的那些事
  6. 如何让手机 1 秒打开健康码,任何机型!
  7. c语言实现多目标优化,MOPSO 多目标例子群优化算法
  8. libsvm 2.6 的代码注释(支持向量机的神作)
  9. Twitter爬虫Python库Tweepy 附中英文官方文档
  10. js生成随机数(数字+大小写字母)