数据结构与算法
布尔bl
用双手编制代码
展开
-
栈的压入、弹出序列
import java.util.Stack;/** * 题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。 * 假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1 * 是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。 * (注意:这两个序列的长度是相等的)!...原创 2018-12-26 16:42:45 · 78 阅读 · 0 评论 -
移除链表元素
题目:移除链表元素描述:删除链表中等于给定值 val 的所有节点。输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5预备知识:思路:1、判断空指针2、增加虚拟头指针(知识点):预防head为一个值的情况,增加代码编写难度3、使用while循环判断val值Oj:https...原创 2019-01-25 09:54:15 · 114 阅读 · 0 评论 -
206 反转链表
题目:206 反转链表描述:输入:1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL预备知识:无思路:1、 一个节点找不到前节点2、 两个节点找不到前节点3、 三个节点可以找到前节点Oj:https://leetcode-cn.com/problems/reverse-linked-...原创 2019-01-25 09:53:35 · 113 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
/** * 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 * 如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 * * 思路: * 1、二叉搜索树特点:左树节点<根节点<右树节点 * 2、递归思路 * 3、寻找左节点:比根节点小,此时右节点也会找到 * 4、只需断右节点是否符合二搜,因为上面找到的左节点肯定符合规律...原创 2019-01-02 17:31:15 · 104 阅读 · 0 评论 -
二叉树中和为某一值的路径
题目:二叉树中和为某一值的路径描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。预备知识前序遍历(递归 非递归)Ojhttps://leetcode-cn.com/problems/binary-tree-preorder-traversal/代码/** * Definitio...原创 2019-01-10 15:34:30 · 66 阅读 · 0 评论 -
举例让抽象具体化 从上往下打印二叉树
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue;/** * 题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 * * 思路: * 1、寻找规律,发现可以使用队列解决问题 * 2、先找到头结点 * 3、使用循环弹出队头,然后压入...原创 2018-12-28 10:20:05 · 133 阅读 · 0 评论 -
二分查找算法
思想:找中间的数,变换左右边界值编程要点:设置 l<=r 作为作为循环判断标志import java.util.*;/** * 1、找到 * 2、没找到 */public class Main { public static void main(String[] args) { int[] arr = new int[]{1, 4, 7, 9,......原创 2018-12-15 11:41:56 · 96 阅读 · 0 评论 -
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数 (时间复杂度应为O(1))。
import java.util.Stack;/** * 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数 * (时间复杂度应为O(1))。 */public class Solution { static Stack<Integer> date = new Stack<>(); static Stack<Inte...原创 2018-12-17 17:30:15 · 183 阅读 · 0 评论 -
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, 所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
/** * * 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分, * 所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 * * */public class Solution { public static void reOrderArray(int [] array) { int[]...原创 2018-12-17 11:29:19 · 227 阅读 · 0 评论 -
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
/** * Created by buer on 2018/12/16. * 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 * * 递归解法:要有basecase 结束条件 */public class Solution { /** * 牛客有内置,下面内部类要去掉 */ public static ...原创 2018-12-17 10:10:07 · 119 阅读 · 0 评论 -
题目描述 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
//求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字//及条件判断语句(A?B:C)。public class Solution { public int Sum_Solution(int n) { //if(n == 0){ // return 0; //} ...原创 2018-12-17 19:36:07 · 131 阅读 · 0 评论 -
简单谈谈栈
一、前言计算机程序离不开算法和数据结构,数据结构这门学科就是为了让计算机能够以更加高效,简单,便捷的方式来存储和使用数据而产生的。本文简单介绍栈(Stack)和队列(Queue)的实现二、图解三、线性表1、 顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素2、 链式存储结构:用一组任意的存储单元存储线性表的数据元素,这组存储单元可以连续,也可以不连续,空间与内存没有线性...原创 2019-01-20 21:16:57 · 147 阅读 · 0 评论