02 2018 档案
摘要:32.把数组排成最小的数 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解题思路: 1. 实际是将数组元素进行排序的操作 2. 排序规则为,若MN组成的数字大于NM,则
阅读全文
摘要:30.连续子数组的最大和 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6, 3, 2
阅读全文
摘要:29.最小的K个数 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 解法一: Partition思想 允许改变原始数组的情况,时间复杂度O(n),不适合海量数据 解法二: 使用最大堆思想,通过优先队列的Conparator定制
阅读全文
摘要:操作集合的工具类Collections 操作集合的工具类Collections Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。 排序操作
阅读全文
Java集合框架(五)—— Map、HashMap、Hashtable、Properties、SortedMap、TreeMap、WeakHashMap、IdentityHashMap、EnumMap
摘要:Map Map Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的key,另一组值用于保存Map里的value,key和value都可以是任何引用类型的数据。Map的key不容许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。
阅读全文
摘要:Queue接口 Queue接口 Queue用于模拟了队列这种数据结构,队列通常是指“先进先出”(FIFO)的容器。队列的头部保存在队列中时间最长的元素,队列的尾部保存在队列中时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不容许随机访问队
阅读全文
摘要:List接口 List接口 List集合代表一个有序集合,集合中每一个元素都有其对应的顺序索引。List集合容许使用重复元素,可以通过索引来访问指定位置的集合对象。 ArrayList和Vector实现类 ArrayList和Vector实现类 ArrayList和Vector做为List的类的两个
阅读全文
摘要:Set接口 Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序。Set集合与Collection基本上完全一样,它没有提供任何额外的方法。 Set集合不容许包含相同的元素,如果试图把两个相同元素加入到同一个Set集合中,则添加操作失
阅读全文
摘要:1.Java集合概述 在编程中,常常需要集中存放多个数据。当然我们可以使用数组来保存多个对象。但数组长度不可变化,一旦在初始化时指定了数组长度,则这个数组长度是不可变的,如果需要保存个数变化的数据,数组就显得无能为力了;而且数组无法保存具有映射关系的数据,如成绩表:语文-80,数学-90,这种数据看
阅读全文
摘要:作者:Intopass链接:https://www.zhihu.com/question/31203609/answer/50992895来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 首先,不要纠结于 Pass By Value 和 Pass By Referenc
阅读全文
摘要:Java的Comparator和Comparable当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。 1.Comparable简介: Java.lang.Comparable是排序接口。若一个类实现了Compar
阅读全文
摘要:线程安全 就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全 就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。
阅读全文
摘要:28.数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解法一:利用HashMap 解法二:利用数组特点,重
阅读全文
摘要:``` / 快速排序实现 Created by John Kwok on 2018/2/2. / import java.util.Arrays; public class QuickSort { / 在待排序索引范围内随机选取一个数值,将小于等于该索引处值的数字放置在其左侧,大于的放在其右侧。 @
阅读全文
摘要:25.复杂链表的复制 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 26.二叉搜索树与双向链表 输入一棵二叉搜索树,将该二叉搜索树
阅读全文