优秀的快速排序算法及其优化(思想+代码)Java实现

快速排序的思想是利用了分治的思想,概念就不写了,主要说几种思想,然后贴上代码 二路快排 思想:对于一个数组,找一个基准值,从后面找出比这个基准值小的第一个数字,从前面找比这个基准值大的数字,然后交换,在上一次的位置继续找,依旧是找会面的比基准值小的下一个,前面的比基准值大的下一个,交换,直到i...

2019-07-29 21:08:48

阅读数 448

评论数 0

优秀的归并排序算法及其优化(思想+代码)Java实现

归并排序是面试中比较常见的一种排序算法,之前面试官问的时候,答得总是很浅,今天将其总结如下,希望下次回答的令人满意。 归并排序的思想:采用分治的思想,具体步骤如下 归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法。 如 设有数列{10,4,6,3,8,2...

2019-07-29 16:15:04

阅读数 533

评论数 1

HashMap常见面试题总结

目录 什么是HashMap? 你为什么要用HashMap? HashMap的数据结构? HashMap的工作原理? HashMap key的存储下标是怎么计算的? HashMap为什么速度快?/为什么要使用hashcode? 怎样解决Hash冲突? HashMap怎么解决has...

2019-07-25 16:24:52

阅读数 1025

评论数 0

Redis常见面试题总结

看了网上的redis的一些面试题,加上自己的一些理解,总结如下: 目录 什么是redis Redis的五种数据类型 Redis常用命令 五种数据类型各自对应的操作命令 消息队列 Redis事务 Redis的持久化 Redis集群 主从复制的容灾处理 高可用sentinel哨兵...

2019-07-25 11:16:31

阅读数 685

评论数 2

牛客网编程采坑路(爱出错的地方)

这几天在牛客网上刷了一些题,对于我们编程的时候出现的一些问题,做了总结,希望对大家有所帮助。 1.:递归有时候使用c/c++,通不过,报错是时间复杂度大,这时候可以将语言改成Java,比如斐波那契数列的问题 同样的代码,Java可以通过,c++不能通过,当然本题有更省时间的记忆化搜索的解决办法...

2019-07-24 15:04:06

阅读数 474

评论数 1

ArrayList,LinkedList,跳表常见的面试题

目录 1.ArrayList和LinkedList的区别 2.ArrayList的扩容 3.为什么jdk1.6之前数组扩容是1.5倍加1,而jdk1.6之后是1.5倍 4.ArrayList的modcount的含义Iterator的fail-fast机制问题 5.ArrayL...

2019-07-24 11:05:44

阅读数 457

评论数 1

复杂链表的复制

题目如下: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 两种方法,在代码中已标识清楚,在牛客网上均通过 关于第一种方法详...

2019-07-18 20:19:27

阅读数 452

评论数 0

求数组中只出现一次的数字

题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 public static void main(String[] args) { int[] nums = {7, 6, 7, 5}; int[] n...

2019-07-16 15:26:58

阅读数 430

评论数 0

京东一面面经(2019-Java后台开发实习生)

目录 1.没有自我介绍 2.对于集合的了解,ArrayList和LinkedList的区别和适应场景,哪个查询的效率高 3.hashmap的构造方法,解决冲突的方法,扩容原理,HashMap的扩容因子 4.treemap的底部实现(红黑树),hashset的去重 5.红黑树,平衡二叉树,...

2019-04-20 11:06:51

阅读数 667

评论数 0

详解二三树

2-3树: 说明:本博客的图片均来自慕课网 满足二分搜索树的基本性质 节点可以存放一个元素或者两个元素 2-3是一棵绝对平衡的树,从根节点到任意一个叶子节点锁经过的节点数量一定是相等的 2-3树如何维持绝对的平衡?[2-3树添加节点绝对不会添加到空节点中,节点的融合,子树...

2019-04-18 16:04:27

阅读数 758

评论数 0

详解平衡二叉树(AVL)

说明:本博客的所有图片来源于慕课网 平衡二叉树(AVL树)也是面试中的一个点,好的回答可以让面试官的印象更深刻 定义 AVL树:对于任何一个节点[任何一个节点,不只是叶子节点],左子树和右子树的高度差不为1 平衡因子: 对于左右子树的高度差[左子树的高度减去右子树的高度] 说明: AV...

2019-04-18 09:41:39

阅读数 543

评论数 0

找到搜索二叉树的最大值节点,最小值结点,删除二叉树中的最大值节点,最小值节点,删除二叉树中的任意节点

删除二分搜索树的最大值和最小值 最小值在最左的,递归直到某个节点的左子树为空,就是找到了最小值,删除该节点,有可能这个节点的右子树还有值,所以这个时候将右子树节点暂存,然后将这个节点的右子树赋值为空,然后返回右子树 二分搜索树删除任意节点 删除有右孩子没有左孩子的节点,同删除最大值节点一...

2019-04-12 22:20:24

阅读数 546

评论数 0

二叉树的广度优先遍历/层次遍历/之子形遍历

二叉树的广度优先遍历的思想: 借助一个队列,将二叉树的根入队,根节点出队,打印,如果根节点的左孩子不为空,将左孩子入队,如果根节点的右孩子不为空,将右节点入队,然后继续取出当前队列中的第一个元素,访问,将其左孩子右孩子入队...直到队列为空,结束循环 public class Solutio...

2019-04-11 17:32:20

阅读数 596

评论数 0

二叉树的非递归前序遍历

二叉树的非递归的遍历实现思想: 借助栈,对于根节点,先将当前节点压入栈中,然后遍历的时候弹出栈中的一个元素,输出,当该节点的右节点不为空时,将节点压入栈,当左节点不为空时,将左节点压入栈[前序遍历是根左右但是栈的数据结构时先入后出,先访问到左节点,需要将右节点先压入栈中]。继续循环,弹出栈顶元素...

2019-04-11 17:14:31

阅读数 503

评论数 0

二叉搜索树的插入,前序,中序,后续遍历和打印

分享一个慕课网的算法,二叉树的打印,输出和插入 public class BST1<E extends Comparable<E>> { private class Node { public E e; ...

2019-04-11 16:50:35

阅读数 65

评论数 0

LeetCode 160找到两个单链表相交的起始结点

编写一个程序,找到两个单链表相交的起始节点。LeetCode160题,剑指offer上的题 public static ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == nu...

2019-04-10 18:43:30

阅读数 56

评论数 0

LeetCode 21合并两个有序链表

LeetCode第21题,也是剑指offer上的一个题,题目描述如下: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入:1->2->4, 1->3->4 输出:1-&...

2019-04-10 10:55:30

阅读数 44

评论数 0

LeetCode142给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。

这是LeetCode上面的142题,同时也是剑指offer上的一个题 整体思想:当判断完当前链表有环之后,先确定环的个数,确定完之后,让前面的指针开始先跑n个节点,然后两支针一起跑,两个指针相等的那个位置就是环形链表的入口节点 代码如下: public static ListNode ...

2019-04-09 17:05:56

阅读数 308

评论数 0

LeetCode 141判断链表是否有环[附创建链表的代码]

LeetCode上面的141题,同时也是昨晚携程笔试编程的第1题。当时那个函数很快就写出来了,但是在创建环形链表这儿一直绕不出来,花了很长时间。下来跟大家讨论才知道有的人有HashMap解决了,HashSet也有的解决了,还有的直接用一个char数组给解决了。 还是把自己的方法整理一下 思路就...

2019-04-09 09:55:37

阅读数 50

评论数 0

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

本题是LeetCode第19题,以后题目也可能会变。本题的描述如下: 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3-&g...

2019-04-09 08:41:48

阅读数 245

评论数 0

提示
确定要删除当前文章?
取消 删除