摘要:
题目:在九宫格中,任意两个数字可以直接连接,但是某些倾角为45°和90°的连接有特殊限制,例如,1要和3相连的前提是,2也会被连入。1要和9相连,5也会被连入。现在问题就是要求手势解锁共有多少种设置方案。 解决思路:由于数字一共有九个,因此我们可以使用哈希将那些有特殊限制的点相连的情况存储下来,例如 阅读全文
摘要:
快速排序的思想很简单,就是每次确定一个mid位置,让该位置的数在整个数组中保持有序之后,再对其两边的子数组分别进行快速排序。 因此如何将一个选定的数变为全局有序变成了快速排序的关键问题。 提供一种思路:这种思路采用的是覆盖替换的方式,具体的,我们把pivot位置的元素存起来,准备放到一个位置。我们使 阅读全文
摘要:
思路:链表反转,我这里采用的是JDK 1.7中HashMap拉链法所采用的头插法。 /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ import j 阅读全文
摘要:
问题:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 class Solution { int lowBit(int x) { return x & (-x); } int sum(int[] c, int x) { in 阅读全文
摘要:
暴力求解法 简单枚举 给定一个整数n,按从小到大的顺序输出所有形如abcde / fghij = n的表达式,其中a ~ j 恰好为数字0 ~ 9 的一个全排列,可以有前导零。 问题分析:我们没有必要去枚举所有0~9的全排列,而只需要枚举fghij,然后计算出abcde对应的数字,判断是否是0 ~ 阅读全文
摘要:
IP黑名单设置与查询 按照最普通的思路,我们设置一个boolean类型的数组,将IP地址映射到本地内存中,也就是为每一个IP地址分配一个boolean数组的一个下标,用来表示该IP在不在黑名单中。由于IPv4中共有2^ 32个IP地址,因此共需要4GB内存用来存放boolean类型的数组。我们可以想 阅读全文
摘要:
LRU LRU的定义 LRU是一种页面置换算法,即当内存中没有空闲页面但又需要内存时,操作系统会选择内存中的一个页面进行淘汰。淘汰页面的规则称为页面置换算法,同样,这种淘汰页面的规则也适用于缓存淘汰。LRU全称是最近最久未使用算法,LRU算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来 阅读全文
摘要:
本节内容节选自《计算机网络自顶向下》 通过DHCP获取本机IP地址 主机可以通过DHCP协议从本地DHCP服务器获取IP地址以及其他网络信息。 生成DHCP请求报文:主机上的操作系统生成一个DHCP报文,并将这个报文放入具有目的端口的67(DHCP服务器)和源端口68(DHCP客户)的UDP报文段中 阅读全文
摘要:
本文总结自《Java并发编程的艺术》 等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作。CountDownLatch的构造函数接收一个int类型的参数作为计数器,如果你想等待N个线程完成任务,这里就传入N。当我们调用CountDownL 阅读全文
摘要:
本节内容总结自《Java 并发编程的艺术》 Java中的阻塞队列 什么是阻塞队列 定义:阻塞队列是支持阻塞的插入和移除方法。支持阻塞的插入是指,当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法是指,队列为空时,获取元素的线程会等待队列变为非空。阻塞队列常用于生产者和消费者的场景 阅读全文