[读书笔记]《程序员代码面试指南》
栈和队列:
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();}
}
[读书笔记]《程序员代码面试指南》相关推荐
- 《程序员代码面试指南第二版》Python实现(个人读书笔记)
说明 最近在读左神的书---<程序员代码面试指南-IT名企算法与数据结构题目最优解(第二版)>以及看了一些左神的基础.进阶.高频等视频课程,为了记录自己的学习成果,并且方便以后查看,将自己 ...
- 程序员代码面试指南第二版 4.猫狗队列
welcome to my blog 程序员代码面试指南第二版 4.猫狗队列 题目描述 题目描述 实现一种猫狗队列的结构,要求如下: 1. 用户可以调用 add 方法将 cat 或者 dog 放入队列 ...
- 算法大神左程云耗尽5年心血分享程序员代码面试指南第2版文档
前言 学习是一种基础性的能力.然而,"吾生也有涯,而知也无涯.",如果学习不注意方法,则会"以有涯随无涯,殆矣". 学习就像吃饭睡觉一样,是人的一种本能,人人都 ...
- 《程序员代码面试指南》第五章 字符串问题 拼接所有字符串产生字典顺序最小的大写字符串...
题目 拼接所有字符串产生字典顺序最小的大写字符串 java代码 努力中.... 转载于:https://www.cnblogs.com/lizhouwei/p/8955158.html
- 《程序员代码面试指南》第二章 链表问题 构造链表和节点的实体
准备一些链表和节点的实体,方便后面使用 java代码 /*** @Description:构造一个链表实体,方便后续构造链表* @Author: lizhouwei* @CreateDate: 201 ...
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点...
题目 在单链表和双链表中删除倒数第K个节点 java代码 /*** @Description:在单链表和双链表中删除倒数第K个节点* @Author: lizhouwei* @CreateDate: ...
- 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...
题目 在其他数都出现k 次的数组中找到只出现一次的数 java 代码 package com.lizhouwei.chapter7;/*** @Description: 在其他数都出现k 次的数组中找 ...
- 《程序员代码面试指南》第二章 链表问题 搜索二叉树转换为双向链表
样例 树的中序遍历:1 2 3 4 5 6 7 ,转换后双向链表的遍历:1 2 3 4 5 6 7 java代码 /*** @Description:搜索二叉树转换为双向链表* @Author: li ...
- 《程序员代码面试指南》第八章 数组和矩阵问题 在行列都排好序的矩阵中找数...
题目 在行列都排好序的矩阵中找数 java代码 package com.lizhouwei;/*** @Description: 在行列都排好序的矩阵中找数* @Author: lizhouwei* ...
最新文章
- UITableView性能优化与卡顿
- 胶囊路由_评论:胶囊之间的动态路由
- mysql 5.7.11 授权_mysql 5.7.11 安装配置教程
- 从零开始学习Docker
- Android 使用dagger2进行依赖注入(基础篇)
- bundle文件解压_通过sourcemap解压缩webpack 实战
- Magisk —— 安卓新一代的第三方拓展,systemless模式
- 图像直方图原理与Python实现
- 在CF卡上建立文件系统和安装引导加载程序
- 这届打工人,回家过年都这么难
- 计算机财务基础知识培训,财务部计算机基础知识培训讲议.ppt
- 【lidar】单目深度估计与伪雷达点云、可视化
- 电阻式触摸屏的基本结构和驱动原理
- Java简单端口扫描器
- oc实时渲染的图如何导出_如何使用C4D制作逼真的循环三维动画
- Comparative Molecular Analysis of Gastrointestinal Adenocarcinomas
- Android封装sdk页面为h5,Android/H5混合 SDK 集成文档
- STM32-USB学习系列(六):USB-HID键盘的实现以及键盘报文描述符的简介
- pulltorefresh+recycleview 实现的瀑布流(带下拉刷新,上拉加载更多)
- 【考研专业课答题纸】是什么样子?(内附下载链接)