自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 373. Find K Pairs with Smallest Sums

题意:输入两个整形升序数组,整数k,要求分别从2个数组中取出2个数组成对,输出和最小的k个对。思路:1 参考leetcode discuss;   2  PriorityQueue实现最小堆,具体步骤如下:初始化为array1中的前k个元素(注意,如果array1中的长度小于k,则为array1.length)和array2中的首个元素组成的pair;每次从堆中剔除首个元素p(即目

2017-04-10 21:27:20 371

原创 nethogs使用

1、nethogs中的选项-t (追踪模式)在控制台定时刷新各进程的收发带宽,使用管道命令>即可实现输出重定向,完整命令“./nethogs –t –d 5”//-d 5表示每隔5s刷新一次。(教训:完全没必要添加Line::toString(),浪费1天时间,自身带有的参数-t) 2、查看使用“apt-get install 软件名”安装的软件(实际上在ubuntu下是可执行文件)存在的

2017-02-20 17:46:22 2772 1

原创 O_DIRECT选项使用方法

1、使用O_DIRECT的目的:对文件进行直接的IO操作,避免系统缓冲区的影响,一般用于测试自带的缓存系统的效果2、使用O_DIRECT方法diskfd = open("/dev/sdb", O_RDWR| O_DIRECT)error: ‘O_DIRECT’ undeclared (first use in thisfunction)//说明编译时无法识别O_DIRECT标识符,

2017-02-20 17:31:53 3463

原创 16. 3Sum Closest

题意:给定n个整数的数组S,找出S中最接近目标的3个数的和,返回和。思路:由于题意只需要求和,不需要返回的元素的位置,那么可以先对数组排序,再求和            优化: 1、已经找到3个元素的和为target,停止程序;                         2、i : 0->length-3, j: 0->length-2, index = binarySearch

2017-02-18 12:09:12 297

原创 apt-get install nethogs安装出现E: Unmet dependencies. Try 'apt-get -f install' with no packages (or spe

错误信息如下:root@f49:/home/ws# apt-get install nethogsReading package lists... DoneBuilding dependency tree       Reading state information... DoneYou might want to run 'apt-get -f install'to c

2017-01-09 16:11:26 7110 1

原创 150. Evaluate Reverse Polish Notation

题意:使用Reverse Polish Notation计算数学表达式的值,温馨提示:有效的操作符为+、-、*、/,操作数是整数思路:逆序---->后进先出,数据结构:栈

2016-12-23 09:46:49 306

原创 92. Reverse Linked List II

题意:将位置m到n处的链表,不要移动元素位置,只走一趟。温馨提示:1思路:修改m->n之间的链接指针,注意保存位置在m-1、n+1处的节点,m为1的情况(加入一个虚的头结点,或者直接把m为1的情况单独拿出来讨论)。 public ListNode reverseBetween(ListNode head, int m, int n) { ListNode pivo

2016-12-22 16:32:29 213

原创 96. Unique Binary Search Trees

题意:输入n,节点值为1....n,构成的不同的bst(二叉查找树)共有多少个?思路:n:节点个数, |left|表示左子树的节点个数,|rigth|表示右子树的节点个数,递推关系:1、f(n) = sum(f(|left|*f|right|)(for root in 1,...,n, 从n个数中选择一个数作为根节点的值,剩余的数分别落在左右子树中))

2016-12-22 10:40:46 221

原创 458PoorPigs

题意:有1000个桶,有且仅有一个桶中包含毒药,其余的都是水。它们看起来都差不多。一头猪如果喝了毒药,将会在15分钟内死去。在一个小时内找出有毒的桶所需猪的最少数目。延伸到更一般的情况:n个桶,一头猪喝完毒药后m分钟内会死掉,要找出有毒的桶需要的最少的猪的数目。思路:参考leetcode discuss public int poorPigs(int buckets, int m

2016-12-21 16:58:02 393

原创 460LFU Cache

题意:设计并实现LFU缓存,需要支持get、set操作,二者的语义描述如下:get(key):如果key在缓存中,返回值,否则返回-1;set(key, value) :如果key不存在,插入(key, value)。注意问题:1、当缓存满时(达到缓存capacity),先淘汰掉最近使用最少的项;2、当多个key访问频率相同时,淘汰最近没被访问的key。要求:set/get操作的时间复

2016-12-21 15:17:32 432

原创 354RussianDollEnvelopes

题意:给定一系列的标有(w, h)的信封,当且仅当一个信封的长和宽都小于另一个信封时,才能装进去。最多能嵌套多少个信封?思路:以w为主序,h为次序将信封排序,当前信封标记为(w, h),找到宽度大于w的信封中且首个高度大于h的信封。数据结构二维数组,一维表示信封数,二维表示(w,h)。 public int maxEnvelopes(int[][] envelopes) {

2016-10-17 11:31:17 280

原创 31NextPermutation

题意:实现下一个变换,将数字按字典序变换成下一个更大的数字组合,如果不存在这种变换,将它重排成最小的顺序。排放的空间复杂度为O(1)。思路:将数组的元素从右向左看(增序),直到遇到首个逆序(即左边的元素比右边的元素小)(记为左、右元素),找到数组右半部分刚好大于左元素的元素,交换位置,然后将后面的元素变成升序。时间复杂度O(n) public void nextPermutati

2016-10-08 17:49:21 219

原创 85MaximalRectangle

题意:输入一个二维元素为0或1的矩阵,找到包含的1最多的矩形,返回该区域思路:从左上角依次以1为矩形左上顶点,水平向右扩展直到遇到首个0位置,如果紧邻的元素是0,则直接放弃从该顶点开始的探索(一条边至少由两个元素组成),然后垂直向下搜索,原则类似水平向右搜索。同时,左上顶点的选择能跳过上一次选择过的的水平区域,即本次选择的左上顶点从0后面的首个1开始,而不用从1开始。注意:矩阵是用字符数组

2016-10-07 11:15:12 254

原创 26RemoveDuplicatesfromSortedArray

题意:输入一个有序数组,删除重复元素满足每个元素只出现一次,返回数组的新长度要求:不要为新数组分配空间,空间复杂度为O(1)思路:由于该数组是有序的,重复的元素必定相邻,设置游标表示当前不同的元素,记录不同元素的个数. public int removeDuplicates(int[] nums) { if(nums.length == 0 || nums ==

2016-10-02 17:39:28 250

原创 29DivideTwoIntegers

题意:不使用乘法、除法、取模运算,相除 两个整数,如果商溢出,返回MAX_INT思路:能使用加法、减法、移位运算,被除数不断减去除数,直到为不大于0为止,并且判断上是否超过MAX_INT,            优化:除数左移i位,...1位(其中i+1位就大于被除数),直到余数小于除数。注意:除数是2的情况、被除数和除数是Integer.MAX_VALUE、Integer.MIN_VAL

2016-10-02 12:01:26 225

原创 14LongestCommonPrefix

题意:找到字符串数组中最长的公共全缀思路:思路将最短的字符串当做哨兵,记录与当前字符串相同的前缀的位置index,直到和数组中的全部字符串比较完成 public String longestCommonPrefix(String[] strs) { if(strs == null || strs.length == 0){ return ne

2016-09-27 21:43:51 223

原创 235LowestCommonAncestorofaBinarySearchTree

题意:输入一个二叉查找树(BST),和两个给定节点,在BST中找到这两个节点的最低的共同的祖先(LCA)。温馨提示:wiki对LCA的定义为两个节点的最低的祖先,即两个节点到根的首个交点,LCA用在树(计算两个节点之间的距离,即两个节点到根距离的和减去2被的LCA)或者有向无环图。思路:1、节点的层次,其中,根节点的层次是父节点层次加1(递归定义);            2、使用Ha

2016-09-26 10:44:17 247

原创 19RemoveNthNodeFromEndofList

题意:输入一个单链表,删除从链尾开始的第n个节点(从1开始),然后返回头结点声明:n总是有效的,时间复杂度O(n)思路:使用数据结构ArrayList,存放映射关系,扫描一遍单链表,建立每个节点与位序之间的关系,直接将位于倒数(n+1)的next指向倒数(n-1)节点运行出现internal error,刷新网页,成功提交 public ListNode removeNthF

2016-09-22 09:22:33 332

原创 297SerializeandDeserializeBinaryTree

题意:序列化是一个过程,将数据结构或者对象转化成位串,以便存进文件、缓冲区或者通过网络传输到对端再进行重构。           设计算法实现二叉树的序列化和降序列化,对算法无性能要求,仅需保证二叉树能被序列化成字符串,同时字符串能被降序列为二叉树。声明:不要使用类的成员、全局、静态的变量去存储状态,因为序列化和非序列化都是针对对象的,是无状态的。思路:类似BFS,数据结构队列,处理父

2016-09-21 10:30:00 290

原创 11ContainerWithMostWater

题意:给定n个非负整数a1、a2,...,an,画n条竖线,满足第i条线的终点分别为(i,ai)和(i,0)。找出两条线,和x轴形成一个容器,满足装的水最多。说明:不能倾斜容器。思路:设选中的两条线分别为i,j(i 1、穷举法,依次求面积找最大,运行超时,时间复杂度O(n)2、找规律,距离逐渐减小,短边逐渐变大,求出面积最大值 时间复杂度O(n) {CSDN:CODE:

2016-09-20 10:15:29 219

原创 5LongestPalindromicSubstring

题意:输入一个字符串S,找到S中最长的回文子串,题目简化为S的最大长度为1000且只存在唯一的最长回文子串。思路:回文串指正着读反着读结果相同,如“cabac”,以每个位置(回文长度为奇数),两个位置的中间位置(回文长度为偶数),比较回文长度,找到长度最大的回文串(下标start, end表示)。参考https://leetcode.com/articles/longest-palindrom

2016-09-19 14:34:40 519

原创 51. N-Queens

题意:n-皇后问题,即将n个皇后放到n*n的棋盘上满足任意两个皇后都不能攻击彼此,皇后一步能攻击其他同行、同列或者同对角线的皇后要求:输入维度整数n,返回n皇后问题的所有不同的方案,每种方案是不同的放置布局,其中‘Q’和‘.’分别表示皇后和 空白空间。思路:1、从结果来看,每列只有一个皇后,每行只有一个皇后。选择从行考虑(或者从列考虑,由对称性知,会得到相同的结果),使用的数据结构stac

2016-09-19 09:49:58 184

原创 集群调试技巧

1、tar –cvf 目标压缩文件名.tar 源目录[文件列表]  tar –xvf 源压缩文件名.tar //解压文件到当前目录下,通过PWD查看 2、scp 源文件名 目标主机的文件夹;若工程文件太多,建议压缩后再整体传输root@f49:/home/ws/inMemRS/inMemRS_sub# scp./InMemRS.tar root@192.168.0.57:/ho

2016-09-13 15:43:29 414

原创 89GrayCode

题意:格雷码是一种二进制数值系统,两个连续的数值串只相差一位。输入非负整数n表示格雷码的位数,输出从0开始的格雷码序列,声明:其实位数给定的格雷码序列并不唯一,但是测试答案只能测出一种思路:递归,n位->(n-1)位->...2位->1位,数据结构类似stack,使用ArrayList实现,(需要用到下标,元素从栈顶到栈底访问,但是不取出来),而用LinkedList实现更适合元素需要取出

2016-09-13 14:37:55 170

原创 329LongestIncreasingPathinaMatrix

题意:输入一个整形数组,找到最长的增序路径,返回路径的长度要求:对于每个单元格,只能向四个方向移动:上、下、左、右,不能移出边界,不能沿对角线方向移动思路:穷举法,数据结构stack,有点类似DFS,从每个位置开始做DFS,搜索到达路径的长度最大值,使用递归(但是超时)。 public int longestIncreasingPath(int[][] matrix) {

2016-09-12 16:56:54 210

原创 71SimplifyPath

题意:给定一个文件的绝对路径(Unix风格),简化它注意特殊情况:/../返回/,//多个/在一起,去掉多余的/只算一个/思路 正则表达式,以及注意特殊的字符“/..” ,".", "////",后来参考discuss public static String simplifyPath(String path) { Deque stack = new LinkedList<>(

2016-09-12 14:32:27 232

原创 2AddTwoNumbers

题意:给出两个链表,非负数字在链表中逆序存放,每个节点存放单个数字,将两个链表中的数字相加然后返回单链表思路 :感觉就是链表的操作,注意进位,还有长度不一样的问题。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;

2016-09-11 18:30:49 199

原创 1TwoSum

题意:给出一个数组,返回和为目标的两个元素下标 可以认为结果有且只有一个【简化的要求,难度系数为easy】思路:最容易想到的是使用双重循环,时间复杂度O(n^2) 空间复杂度O(1),使用数据结构HashMap存放元素值与下标的映射,时间复杂度O(n),空间复杂度O(n) public int[] twoSum(int[] nums, int target) {

2016-09-11 17:23:34 179

原创 216CombinationSumIII

题意:找到所有和为n ,k个数的组合,要求k个数只能使用1到9,每个组合中无重复的数字。思路:1、箱子(unique set)中的球数不重复,最好的办法从小到大排列;2 给定前面的箱子中的球数组合,考虑后面的箱子中可能的组合(stack)。思路参考leetcode discusspublic class Solution { //k个箱子,n个球,n个球放到k个箱子(每个箱

2016-09-11 16:38:02 268

原创 307RangeSumQueryMutable

题意:给定一个整数数组nums,找到数组小标为i,j(i小于j且包含)之间的元素的和,同时update(i,val)函数将下标为i的元素的值该为val声明:1数组的值只能被update函数修改;2 update和sumRange函数调用分布均匀。

2016-09-10 15:21:23 189

原创 eclipse中查看字节码

1、在命令行中输入javap命令;2、在eclipse中安装Bytecode Outline,具体步骤参考http://andrei.gmxhome.de/bytecode/index.htmlEclipse 3.5+:Go to"Help -> Install new Software... -> Work with:"中选择Bytecode Outline安装

2016-08-19 09:12:35 4934 1

原创 230KthSmallestElementinaBST

题意:输入一棵二叉查找树(bst)(即二叉有序树,左子树思路:中序遍历得到元素的非递减排序,找出第k个元素即可 public int kthSmallest(TreeNode root, int k) { int cur = 1; Stack st = new Stack<>(); TreeNode tp = root; st.

2016-07-24 21:49:04 211

原创 191Numberof1Bits

题意:输入一个无符号int,count该数的二进制表达中1的个数思路:建立map映射表(0~15(Ox)--->1的个数)map[16],int:4字节 总计8个0x数,如果将map映射表增大,一次处理一个byte ,map[256,只需4次循环]有点麻烦, public int hammingWeight(int n) { int map[] = new in

2016-07-14 17:05:24 230

原创 231PowerofTwo

题意:判断一个数是否是2的幂,类似3的幂的判断思路:2的整数次幂列表 【2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 10485762097152 4194304 8388608 16777216 33554432 67108864 134217728 2684

2016-07-14 16:47:22 216

原创 326PowerofThree

题意:输入一个数,判断该数是否是3的幂,要求不能使用循环和递归思路:

2016-07-13 18:35:49 234

原创 337HouseRobberIII

题意:小偷偷窃-------二叉树模型,房子----节点, 钱数----节点值, 要求:1、偷得钱数最多;2、不允许偷连续的两家,否则会惊动警察思路:递归算法(树),假设层次从根算起,即1th层,规律:方案1  rob(root,root.left.left/right, root.right.left/right)关注1、3 、5.......;方案2 rob(root.left、root.

2016-07-12 21:00:54 213

原创 328OddEvenLinkedList

题意:输入单链表,按照节点的奇数序和偶数序分组,先奇后偶,要去空间复杂度O(1),时间复杂度O(n),n为单链表中的节点数,同一组中的先对顺序不变思路:顺次扫面(next),依次将串到奇数序列、偶数序列,最后将偶数序列的首部串到奇数序列的尾部,注意将偶数序列的尾部置null,否则当节点个数是奇数个时会出现死循环,导致空间溢出。 public ListNode oddEve

2016-07-11 18:49:22 259

原创 206ReverseLinkedList

题意:输入单链表,实现逆序思路:注意出现死循环:一般造成原因是忽略头节点的next指针未指向null(注意边界情况) public ListNode reverseList(ListNode head) { //iteratively if(head == null) return head; ListNode next, tp;

2016-07-11 16:49:59 189

原创 371SumofTwoIntegers

题意:输入两个数a和b,输出二者之和,要求不使用“+”和“-”思路:计算机中的负数使用补码表示(绝对值表示,按位求反,末位加1)             按位运算(数字逻辑设计)1 op 1 = 1 0; 1 op 0 = 1; 0 op 1; 0 op 0 = 0            异或:无需进位的位(其他)“^”            与: 需要进位的位(第一种)"&"

2016-07-11 15:31:08 192

原创 322CoinChange

题意:输入:不同面值的硬币数组和总金额,输出:使用最少枚硬币凑成总金额,如果找不到这样的组合,返回-1思路:dynamic procedure,参考http://blog.csdn.net/happyaaaaaaaaaaa/article/details/50976088 public int coinChange(int[] coins, int amount) {

2016-07-05 21:30:14 339

巧分苹果问题解决

《c语言经典编程282例》中的实例038

2015-01-27

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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