priority_queue特性解读

       priority_queue是优先级队列的意思,简单理解就是队列带有了优先级的区分,和平常我们看到的队列queue的区别在于,平时的队列元素没有优先之分,先进来的数据先出去,而通常情况下,在一些实际的场景中,队列往往设有优先级之分,这在计算机网络中是非常常见的,举个例子,当一个非常重要的数据进入队列之后,需要快速发出去,就需要让其他数据等待,重要的数据先发出去,这就要求该数据有高于其...
分类: 其他 发布时间: 10-20 23:09 阅读次数: 0

爱奇艺2018年9月15日笔试编程题目AC代码

这几天一直在关注着工作的事情,师兄们做笔试题,我也跟着在刷,包括华为,百度,腾讯,阿里等公司的笔试题都做了,基本上都帮助师兄拿到了面试的资格,但是因为密度太大,而自己还要整理leetcode的学习笔记,所以,很多题目没有来得及整理,今天正好提前AC完成,就简单分享一下爱奇艺的两个题目。 第一个题目是,一个字符串,有六个符号,符号是从字符0到字符9的任意一个数,给定一个字符串后,你可以改变任意任何...
分类: 其他 发布时间: 10-20 23:09 阅读次数: 0

去哪网2018年9月17号第二题AC代码

这道题是标准的骑士问题,但是当时没有考虑其实和终止位置相同的情况,所以就浪费了好多时间。好在最后想出来了。 题目: AC代码: #include <iostream> #include <queue> using namespace std; void jump(); int board[12][12]; int xend; int yend; class ...
分类: 其他 发布时间: 10-20 23:08 阅读次数: 0

4 median-of-two-sorted-arrays

第四题评级是hard,看似很简单的题目着实没有那么容易做,主要原因在于时间复杂度的要求非常严格,基本上数组的题目,只要已经拍好了顺序,就必须在logN的复杂度下解决,当然后台的检测没有那么严格,O(n)也能通过,而为了而实现logN的复杂度,我也是在网上看了好久的答案,自己手推了一遍,才AC掉。 答题的思路是这样的: 1、两个有序数组,总共有多少个数已知,这道题的本质就变成了第K个小数是哪个的...
分类: 其他 发布时间: 10-20 23:08 阅读次数: 0

10 regular-expression-matching/submissions

这道题其实是一道正则表达式 题目,“.”可以表示任何字母,“*”可以表示对其前面的字母做n次重复,可以看出,最难处理的就是*号,因为按照我们平时的字符串匹配算法,一对一就可以,就算加上“.”也一样,而给整个算法加入更多不确定性的就i是“ * ”,换句话说,我们要对“*”的位置进行讨论。 “*”只对其前面的一个字母起作用,换句话说,如果一个字符串中出现了“*”,假设第k位是*,那么如果前k-2个字...
分类: 其他 发布时间: 10-20 23:08 阅读次数: 0

25 reverse-nodes-in-k-group

这道题的大意是说,给一个链表,再给一个整型数字K,要实现这个链表每K个数进行一次反转,整条链表反转的题目比较熟悉,但是,一个链表分成好几组进行反转其实大体思路是一样的,但是每组反转结束之后,应该如何变化指针进行下一次反转,这是这道题的重点。 按照以前链表反转的思路,我们首先要创建一个头节点,用来记录链表头节点的位置。 其次,设置计数值,将每组的头尾节点分别记录,这块要注意,最好要记录每组头节点...
分类: 其他 发布时间: 10-20 23:08 阅读次数: 0

30.substring-with-concatenation-of-all-words

        说实在的,这道题还是比较难的,因为没有好的思路,其实从历年各个公司的算法真题来看,难题还是多出现在字符串上,这道题就是比较灵活的一道,没啥太好的思路,起初想着dfs,倒是可以做,但是开销蛮大的,因此,这里我参考大神的代码写了使用hash来解决问题。达到O(N)的时间复杂度和O(N)的空间复杂度。          题目的大意是给定一个字符串和一个字符串对应的数组,在字符串中寻找一...
分类: 其他 发布时间: 10-20 23:07 阅读次数: 0

32.longest-valid-parentheses

       括号匹配的题目是leetcode一个常见的题型,从easy到hard各种难度都有,其实他可以归在字符串大类之中,既然是字符串题目,不可避免地灵活性就会非常高,同时也增加了解题的难度。        这道题目的大体意思是这样的:给定一个只有左括号"("和右括号")"的字符串,求合法的字符串有多长,合法的意思是说左括号必须出现在右括号的左边的情况视为合法情况,例如:()(), (())...
分类: 其他 发布时间: 10-20 23:07 阅读次数: 0

37.sudoku-solver

     这道题是数独游戏,规则我们很清楚,小时候一般小孩都玩过,所以,题目大体意思比较好懂。      题目大意:给定一个9*9的二位数组,与数字和"."组成,按照数独游戏规则,在"."处填入数字,使得整个矩阵的每一行都是由1~9组成且没有重复,每一列由1~9组成且没有重复,9*9的矩阵可以分成9个3*3的二位小矩阵,而9个3*3的矩阵中,每个都是由1~9这9个数字组成,且没有重复。    ...
分类: 其他 发布时间: 10-20 23:07 阅读次数: 0

42.trapping-rain-water

      以前在听算法课的时候,有一个人说过这样一句话,凡是那道题没有思路的9成要用动态规划,当然可能说的有点绝对,但是不无道理,就是说,一般的题目我们遇到后能立即想到思路,哪怕是那种很麻烦的,但是动态规划往往是麻烦的也不一定能想出来。而动态规划的难度也确实比较大,其灵活性很高,他不同于字符串,数组,排序这种的某一类问题,他是一种思想,渗透到各种各样的问题的当中,而leetcode有关动归的问题...
分类: 其他 发布时间: 10-20 23:07 阅读次数: 0

44.wildcard-matching

      这道题也是正则表达式类的题目,和10题有很大程度的相似度,个人感觉难度上来讲,这道题要简单一点,有一点需要注意的是这道题不能用递归来解决,看到有个测试用例会超时,但也可能是我自己的思路上有缺陷,如果有大神,肯请指点。       这道题是*号表示任何字符串包括空串:"",?表示可以与任意一个字符串匹配,所以,最特殊的还是*号,我们分情况讨论, 1、假设当前p[i] = s[j] 或...
分类: 其他 发布时间: 10-20 23:06 阅读次数: 0

用Java对JSON字符串进行格式化输出

工作中进行http相关接口测试时经常会收到返回的json数据,因为没有格式化输入到控制台后看起来很不直观。早上写了一个小工具类,对这JSON串进行格式化输出,代替System.out.print/** * 格式化输入工具类 * * @author lizhgb * @date 2015-10-14 * @Modified 2017-04-28 * */ public final c
分类: 其他 发布时间: 10-20 23:06 阅读次数: 0

直接插入排序 java实现

直接插入排序的算法思路是: 基于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。package demo;public class InsertSort { public static void main(String[] args) {
分类: 其他 发布时间: 10-20 23:05 阅读次数: 0

HttpServletRequest常用的方法

1、假设客户端地址是: http://user.cbice.com/cbice/BoardAction.do?operation=doSearch&index=index&boardIndex=boardIndex 通过request对象得到客户端url方法如下: 1、request.getRequestURL:http://user.cbice.com/cbice/BoardAction.do—
分类: 其他 发布时间: 10-20 23:04 阅读次数: 0

希尔排序 java实现

希尔排序属于插入排序的一种,也称为缩小增量法,是插入排序的一种改进版本,其基本思想是,先取一个小于n的整数i1作为第一个增量,所有距离为a的记录放在同一组,把数组的全部记录分成了a组子序列,再对各组子序列进行直接插入排序,然后,取第二个增量i2作为第二个增量,重复分组和排序,直到最后一个增量为1时,对所有元素进行直接插入排序。希尔排序是对直接插入排序算法的优化,实质上是一种分组插入排序算法。代码pa
分类: 其他 发布时间: 10-20 23:04 阅读次数: 0

简单选择排序 java实现

简单选择排序基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。代码实现如下public class SimpleSelectSort { public static void main(String[] args) { int[] arr={34,23,4,52,3
分类: 其他 发布时间: 10-20 23:04 阅读次数: 0

LinkedHashMap源码剖析

前言:有网友建议分析下LinkedHashMap的源码,于是花了一晚上时间研究了下,分享出此文(这个系列的最后一篇博文了),希望大家相互学习。LinkedHashMap的源码理解起来也不难(当然,要建立在对HashMap源码有较好理解的基础上)。LinkedHashMap简介LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有p
分类: 其他 发布时间: 10-20 23:03 阅读次数: 0

Java HashMap的死循环

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loop
分类: 其他 发布时间: 10-20 23:03 阅读次数: 0

Java三种移位运算符

java中有三种移位运算符1、<< : 左移运算符,value<< num,相当于value乘以2的num次方 方法:丢掉最高位移动的位数,最低移动的位数补0,若num大于value转为二进制后的最大位数n,则取模num%n例如:9 <<2 9—int类型,对应的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1001; 2—代表该数字高位(左侧)的两个零
分类: 其他 发布时间: 10-20 23:03 阅读次数: 0

一、并发编程的挑战

Java并发编程的目的是为了让程序运行的更快,但不是启动更多的线程就能让程序最大限度的执行,因为在并发编程中,启动更多的线程,会面临上下文切换、死锁、以及所使用的软件和硬件的资源限制等问题。 1.1上下文切换 单核处理器下,多线程执行代码,cpu给每个线程分配cpu时间片来实现多线程,cpu不停地切换线程执行,让我们感觉多个线程是同时执行的。 Cpu通过时间片分配算法来循环执行任务,当任务A执
分类: 其他 发布时间: 10-20 23:02 阅读次数: 0