- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 LintCode:带最小值操作的栈
描述:实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。样例:如下操作:push(1),pop(),push(2),push(3),min(), push(1),min() 返回 1,2,1分析:利用两个栈来操作,一个用于存储数据,一个辅助栈用于存储最小值。实现:public class M...
2018-04-28 11:28:20 395
原创 剑指offer:对称的二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。实现:public class Solution { boolean isSymmetrical(TreeNode pRoot) { return isSymmetrical(pRoot, pRoot); } private bool...
2018-04-25 11:25:58 329
原创 剑指offer:合并两个排序的链表
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。实现:方法一(非递归版):public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null) return list2; ...
2018-04-24 10:00:59 336
原创 剑指offer:链表中环的入口节点
题目描述一个链表中包含环,请找出该链表的环的入口结点。实现:方法一:public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { if(pHead==null){ return null; } ListNode p1=pHead; ListNode p2=pHe...
2018-04-23 10:52:10 498
原创 华为机试:调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。方法1:public class Solution { //时间复杂度为O(n^2),空间复杂度为O(1) public void reOrderArray(int [] array) { if(array.le...
2018-04-22 19:49:58 348
原创 LintCode:数字三角形
描述:给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。样例:比如,给出下列数字三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。分析:注意给出的测试用例每行的长度是不同的,之前没意识到这点,测试的时候老是提醒我数组越界public class...
2018-04-15 15:21:13 400
原创 LintCode:接雨水
题目描述:Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.样例如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返回 6...
2018-04-15 15:15:31 351
原创 Top K算法
Top K问题:顾名思义,就是给你多个数,让你找出最大的或者最小的K个数。分析:通常情况下,数量级都是千万级别的,数据量特别大,所以肯定不能先排序,然后再遍历取出K个数。我们以求出最小的K个数为例进行分析。既然一个大顶堆的顶是最大的元素,那我们要找最小的K个元素,可以先建立一个包含K个元素的大顶堆,然后遍历集合,如果集合的元素比堆顶元素小(说明它目前应该在K个最小之列),那就用该元素来替换...
2018-04-11 21:34:36 2894
原创 LintCode:装最多水的容器
描述:给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与 x 轴共同构成一个容器,以容纳最多水。样例:给出[1,3,2], 最大的储水面积是2.代码:public class Solution { /** * @param heig...
2018-04-10 16:17:53 355
原创 Java内存模型
参考另一篇博客:Java并发编程:volatile关键字解析一、Java内存模型概念 硬件系统是通过基于高速缓存的存储交互方法解决了处理器与内存的速度矛盾,但这也带来了缓存一致性问题。而Java内存模型是用来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致性的内存访问效果。 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量(此处的...
2018-04-10 15:53:02 1705 2
原创 背包问题
一、0-1背包问题 给定n种物品和一背包,背包容量为c。物品i的体积为w[i],其价值为v[i]。问如何选择装入背包中的物品,使得装入背包中的物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两种选择,即装入背包或不装入背包。不能将物品i装入背包多次,也不能只装入部分的物品i。因此,该问题称为0-1背包问题。二维数组求解: 现在我们假设可选择物品为0,1,2,...,i,背包容量为...
2018-04-08 16:29:08 810
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人