面试题3.1:描述如何只用一个数组来实现三个栈. 方法1:固定分割 方法2:弹性分割(较难) package cc150; public class ArrayStack { public static void main(String[] args) throws Exception { // TODO 自动生成的方法存根 ArrayStack theStack = new ArrayStack(); theStack.push(0, 1); theStack.push(0, 2); theS…
Leetcode栈&队列 232.用栈实现队列 题干: 思路: 栈是FILO,队列是FIFO,所以如果要用栈实现队列,目的就是要栈实现一个FIFO的特性. 具体实现方法可以理解为,准备两个栈,一个栈用作输入栈,入数据就存数据,一个栈用作输出栈,出数据就入数据再弹数据. 代码: class MyQueue { /** * 先声明变量,留在MyQueue方法中进行Init */ Stack<Integer> stackIn; Stack<Integer> stackOut; p…
Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看.(该篇代码行数大约:300行) 知识点1:优先级:not>and 短路原则:and:如果第一个条件的结论为假,那么 and 前后两个条件组成的表达式计算结果一定为假,后面的条件计算机不会进行计算 or:如果第一个条件的结论为真,那么or 前后两个条件组成的表达式计算结果一定为真,后面的条件计算机不会进行计算 知识点2:python区分大小写,常量需全部字母大写(默认这样写) pyt…
一.题目 使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部. pop() -- 从队列首部移除元素. peek() -- 返回队列首部的元素. empty() -- 返回队列是否为空. 示例: MyQueue queue = new MyQueue(); queue.push(1); queue.push(2); queue.peek(); // 返回 1 queue.pop(); // 返回 1 queue.empty(); // 返回 false 说明: 你只能使用…
LeetCode题目解答——Easy部分 Posted on 2014 年 11 月 3 日 by 四火 [Updated on 9/22/2017] 如今回头看来,里面很多做法都不是最佳的,有的从复杂度上根本就不是最优解,有的写的太啰嗦,有的则用了一些过于tricky的方法.我没有为了这个再更新,就让它们去吧. LeetCode最近很火,我以前不太知道有这么一个很方便练习算法的网站,直到大概数周前同事和我说起,正好我老婆要找工作,而根据同事的理论,LeetCode的题目是必须攻破的第一道关卡.…
面试算法题 dfs相关 全排列 #include<bits/stdc++.h> using namespace std; const int N = 10; //用一个path数组来存储每次到底层的路径 int path[N]; //用一个布尔数组来存储每次已经遍历的点,默认是false bool st[N]; int n; //u表示当前的层数 void dfs(int u) { //当已经到达最底层了,溯回并输出路径 if( u == n ) { for(int i = 0 ; i <…
date: 2018-11-25 08:31:30 updated: 2018-11-25 08:31:30 栈&队列&并查集&哈希表(julyedu网课整理) 栈和队列 1.定义 存放数据的线性表 操作:入栈/队列.出栈/队列.判断满/空 空间复杂度:O(n) 单次操作时间复杂度:O(1) 区别 先进后出(FILO, First In Last Out) 先进先出(FIFO, First In First Out) 2.实现 数组和链表皆可(线性表) 指针(辅助变量) 栈顶/底指…
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元素. 给定 nums = [2,7,11,15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回[0,1] 分析: 1.题目给出了一个整数数组和目标值,所以定义的函数就该传入这两个参数 2.不能重复使用数组中下标…
LeetCode题目总结-滑动窗口法 滑动窗口法:此方法首先建立一个长度为零的窗口,把右侧窗口向右移动,当新的元素与原来窗口中的元素不重复时,把新的元素加入其中,并更新窗口长度:当新的元素与原集合中的元素重复时,把窗口的左侧向右移动,直至原窗口中的元素不含新的元素. 3.  无重复字符的最长子串 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: if not s: return 0 start, end = 0,…
集合家族图 ---|Collection: 单列集合 ---|List: 有存储顺序 , 可重复 ---|ArrayList: 数组实现 , 查找快 , 增删慢 ---|LinkedList: 链表实现 , 增删快 , 查找慢 实现了 栈 队列 ---|Vector: 和 ArrayList 原理相同 , 但线程安全 , 效率略低 ---| Stuck 类 ---|Set: 无存储顺序 , 不可重复 ---|HashSet 线程不安全,存取速度快.底层是以哈希表实现的 ---|TreeSet 红…