- 博客(24)
- 收藏
- 关注
原创 二叉搜索树的基本操作
查找元素public class Node{ int key; Node left; Node right; public Node(int key) { this.key = key; }}private Node root = null;public Node find(int key){ //查找key是否在树中存在,...
2020-04-20 00:03:21
120
原创 Map & Set面试题2
坏键盘打字旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。键盘上某个键坏了,对应的大小写都无法输出,需要把大小写视为一种情况public static void main(String[] args) { Scanner scanner = new Scanner(System.in);...
2020-04-16 22:31:35
235
原创 Map&Set面试题
只出现一次的数字给定一个非空数组,除某个元素只出现一次之外,其他元素都出现两次,找出那个出现一次的数字方法一:通过Map统计每个元素出现的次数,再次遍历Map找到那个只出现一次的数字public int singleNumber1(int[] nums){ //1.创建一个map统计每个次数出现的次数 Map<Integer,Integer> map = new ...
2020-04-14 23:07:50
285
原创 排序---选择排序,堆排序,冒泡排序
选择排序基于打擂台的思想,每次从组中找到最小值,然后把最小值放到合适的位置[0,bound)已排序区间[bound,size)待排序区间按照打擂台的方式,从待排序区间找一个最小值放到不bound位置上public static void selectSort(int[] array){ for (int bound = 0; bound < array.length; bo...
2020-04-11 21:51:10
147
原创 排序--插入排序,希尔排序
插入排序和顺序表插入十分相似[0,bound) 已排序区间[bound,size) 待排序区间先获取bound位置的元素,往已排序区间插入,插入完毕后已排序任然是有序的把bound位置的元素在前面找个合适的位置,同时需要搬运附近相关元素public static void insertSort (int[] array){ //通过bound来划分区间 for (int...
2020-04-10 21:47:21
79
原创 查找和最小的k对数字
查找和最小的k对数字给定两个以升序排列的整形数组nums1和nums2,以及一个整数k,定义一对值(u,v),其中第一个元素来自nums1,第二个数来自nums2找到和最小的k对数字(u1,v1),(u2,v2)…(uk,vk)1.获取到所有数对2.把数对都放在队列中再从优先队列中取出前k个元素class pair implements Comparable<pair>{...
2020-04-09 21:40:36
185
原创 二叉树遍历(非递归)
先序遍历1.首先准备一个栈,根节点入栈,循环取栈顶元素,同时出栈,并访问栈顶元素2.判断当前节点的右子树是否为空,非空入栈3.判断当前节点的左子树是否为空,非空入栈4.当栈为空的时候,遍历结束class TreeNode{ public int val; public TreeNode left; public TreeNode right...
2020-04-08 23:13:13
77
原创 根据一棵树的先序遍历和中序遍历构造二叉树
根据一棵树的先序遍历和中序遍历构造二叉树先序遍历:第一个节点一定是根节点,后面的节点是左子树或者右子树的根节点中序遍历:左子树的根节点在左侧,右子树的根节点在右侧基本思路:1.根据先序遍历找到当前树的根节点2.拿着这个根节点去中序遍历的结果中查找就可以看出哪些是左子树,哪些是右子树3.借助一个辅助方法递归现需遍历,访问根节点操作为“构造节点”4.同时给辅助递归的方法加上下标参数,通过...
2020-04-07 23:04:49
472
原创 堆的向下调整以及创建
堆的向下调整堆的向下调整(以小堆为例)1.先设定根节点为当前节点(通过下标来获取),比较左右子树的值,找出更小的值,用child来标记2.比较child和parent的值,如果child比parent小,则不满足小堆的规则,需要进行交换3.如果child比parent大,满足小堆的规则,不需要交换,调整就结束了4.处理完一个节点之后,从当前的child出发,循环之前的过程public ...
2020-04-06 17:38:37
188
原创 给定一颗二叉树,找到该树两个指定节点的最近公共祖先
给定一颗二叉树,找到该树两个指定节点的最近公共祖先(一个节点认为也可以是自己的祖先)借助递归,用一个辅助方法进行递归,按照后序遍历的方式,尝试查找p和q如果从某个节点开始,后序遍历的时候能够把p q都找到,说明该节点是p q的祖先如果从某个节点开始,后序遍历的时候能够把p q都找到,并且p q不在同一个子树中,说明该节点是p q的最近公共祖先p和q可能出现在三个位置,左子树,右子树,当前节...
2020-04-05 23:38:56
595
原创 二叉树的分层遍历
public class levelOrder { class TreeNode{ public int val; public TreeNode left; public TreeNode right; public TreeNode(int val) { this.val = val; ...
2020-04-04 22:11:52
119
原创 层序遍历及其应用
层序遍历及其应用 可以借助一个队列来解决 初始情况下,创建一个空队列,并且把根节点加入队列中,循环取出队首元素,访问该元素 当前元素左子树如果非空,就入队列,右子树非空,也入队列public void levelOrder(TreeNode root){ Queue <TreeNode> queue = new LinkedList<>();...
2020-04-03 21:37:12
194
原创 二叉树基础面试题
import java.util.ArrayList;import java.util.List;class TreeNode{ public int val; public TreeNode left; public TreeNode right; public TreeNode(int val) { this.val = val; ...
2020-04-02 18:56:08
110
原创 二叉树的基础操作
class Node{ public char val; public Node left; public Node right; public Node(char val) { this.val = val; }}public class binaryTree { public static Node build() { ...
2020-04-01 14:21:55
93
原创 用栈实现队列
用两个栈模拟一个队列的情况创建两个栈A B,A专门用来入队列,B专门用来出队列1.实现入队列:先把B中的元素搬运到A中,然后把新元素往A中入栈即可2.实现出队列:先把A中的元素搬运到B中,然后对B直接出栈即可3.取栈顶元素:先把A中的元素搬运到B中,然后取B的栈顶元素即可4.判空:A B都为空代码如下:public class queueByStack { private S...
2020-03-31 14:01:51
95
原创 用队列实现栈
用两个队列模拟实现一个栈的效果创建两个队列AB1.入栈:把新元素往A中入队列即可2.出栈:把A队列的元素往B中搬运,当A只剩一个的元素的时候,直接出队列即可。然后交换AB,保证新入栈的元素往A中加入3.取栈顶元素:和出栈类似4.判空:AB都为空代码如下:public class stackByQueue { private Queue<Integer> A = n...
2020-03-31 13:58:29
84
原创 实现最小栈
实现最小栈,且时间复杂度为O(1)—用空间换时间创建两个栈A B,A中按正常栈的规则插入删除元素B存放的是当前栈的最小值B里插入元素,是取当前B的栈顶元素和A的新元素进行比较取最小值,插入到B中,需要时刻保证B中插入的值是当前A中的最小值此时无论对A进行啥操作,B的栈顶元素始终表示A中的最小元素的值实现入栈操作:对于A,直接入栈,对于B,把当前元素和B的栈顶元素进行比较,把最小值入栈现...
2020-03-30 22:21:56
88
原创 括号匹配问题
括号匹配问题分析:遍历字符串依次取出字符1.如果当前字符是左括号([{,就把当前字符入栈2.如果当前字符是右括号)]},取出栈顶元素,检查和当前的括号类型是否匹配i.如果匹配,把栈顶元素出栈,继续取下一个元素ii.如果类型不匹配,返回false3.遍历完整个字符串之后,检查栈是否为空栈,如果是空栈,说明合法,否则就是非法应用:处理多层括号嵌套的问题import java.util....
2020-03-29 19:44:51
119
原创 操作符
操作符分类:算术操作符移位操作符位操作符赋值操作符单目操作符关系操作符逻辑操作符条件操作符逗号表达式下标引用,函数调用和结构成员算术操作符+ - * / %(求余数)1.%不可以作用于浮点数,其他几个操作符可以作用于整数和操作符。2.对于 / 操作符如果两个操作符都为整数,执行整数除法。只要有浮点数执行浮点数除法。3.%操作符的两个操作数必须为整数...
2019-11-11 15:09:52
721
原创 编写一个函数 reverse_string(char * string)(递归实现)
#include<stdio.h>#include<Windows.h>void reverse_string(char*p){ if (*p == ‘\0’) return 0; else { reverse_string(p + 1); printf("%c...
2019-10-26 02:22:28
106
原创 10 13
将数组A中的内容和数组B中的内容进行交换。(数组一样大)#include<stdio.h>#include<Windows.h>#pragma warning (disable:4996)int main(){int a[4] = { 1, 2, 3, 4 };int b[4] = { 9, 8, 7, 6 };int i;for (i = 0; i &...
2019-10-13 10:45:29
108
原创 初来乍到,请多指教
初来乍到,请多指教Lost for two years,I have already been my third year of college.I have finally found my life direction now—computer programming. Is it late? It is late. Is it truly late?It is not late.I am ...
2019-09-27 16:36:30
212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人