摘要:
计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在SRAM(物理内存)当中的,由于CPU执行速度很快,而从内存读取数 据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存 阅读全文
摘要:
一、volatile(易变的) Java 语言提供了一种稍弱的同步机制,即volatile修饰变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是许多线程共享的。 二、v 阅读全文
摘要:
C++ STL 的实现:1.vector底层数据结构为数组 ,支持快速随机访问2.list 底层数据结构为双向链表,支持快速增删3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问4.stack 底层一般用23实现,封... 阅读全文
摘要:
解题思路一: DFS到每个节点的路径,根据路径算出LCA: 解题思路二: 后续遍历+并查集(《数据结构》第11章内容),实现的时间空间,复杂度略高 解题思路三:并查集+Tarjan算法 参考:http://baike.baidu.com/link?url=oJBohljiyLYv4B0lFr5nbX 阅读全文
摘要:
递归实现如下: public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(p.val>root.val&&q.val>root.val) return lowestComm... 阅读全文
摘要:
解题思路:O(1)的空间复杂度,意味着不能通过开一个List来解决问题。我们可以把List分成前后两个部分,后半部分通过指针的相互赋值进行翻转即可。JAVA实现如下:public static boolean isPalindrome(ListNode head) { if (head == nu... 阅读全文
摘要:
Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example: Given n = 13,Return... 阅读全文
摘要:
Stack stack=new Stack(); public void push(int x) { stack.push(x); } // Removes the element from in front of queue. public voi... 阅读全文